Module: Mesa Branch: main Commit: af3cbc53794710bdd417057bf49334d9056a77fc URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=af3cbc53794710bdd417057bf49334d9056a77fc
Author: Dave Airlie <[email protected]> Date: Thu Dec 30 11:09:07 2021 +1000 gallium/mesa: enhance PIPE_CAP_CLIP_PLANES to support override number There exists hardware intel gen4 specifically that has only 6 clip planes but supports GLSL 1.30. This enhances the CAP so that the current values of 0,1 remain the same, but giving it a larger number will override the max. This allows the gen4 intel to set this to 6 and leave everyone else alone. Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14344> --- docs/gallium/screen.rst | 2 +- src/mesa/state_tracker/st_extensions.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/gallium/screen.rst b/docs/gallium/screen.rst index 3c99e93c2d3..b51fe497851 100644 --- a/docs/gallium/screen.rst +++ b/docs/gallium/screen.rst @@ -602,7 +602,7 @@ The integer capabilities: that backfacing primitives should use the back-side color as the FS input color. If unset, mesa/st will lower it to gl_FrontFacing reads in the fragment shader. -* ``PIPE_CAP_CLIP_PLANES``: Driver supports user-defined clip-planes. +* ``PIPE_CAP_CLIP_PLANES``: Driver supports user-defined clip-planes. 0 denotes none, 1 denotes MAX_CLIP_PLANES. > 1 overrides MAX. * ``PIPE_CAP_MAX_VERTEX_BUFFERS``: Number of supported vertex buffers. * ``PIPE_CAP_OPENCL_INTEGER_FUNCTIONS``: Driver supports extended OpenCL-style integer functions. This includes averge, saturating additiong, saturating subtraction, absolute difference, count leading zeros, and count trailing zeros. * ``PIPE_CAP_INTEGER_MULTIPLY_32X16``: Driver supports integer multiplication between a 32-bit integer and a 16-bit integer. If the second operand is 32-bits, the upper 16-bits are ignored, and the low 16-bits are possibly sign extended as necessary. diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index adf24b93fca..0c56b609568 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -1195,6 +1195,11 @@ void st_init_extensions(struct pipe_screen *screen, consts->NativeIntegers = GL_TRUE; consts->MaxClipPlanes = 8; + uint32_t drv_clip_planes = screen->get_param(screen, PIPE_CAP_CLIP_PLANES); + /* only override for > 1 - 0 if none, 1 is MAX, >2 overrides MAX */ + if (drv_clip_planes > 1) + consts->MaxClipPlanes = drv_clip_planes; + if (screen->get_param(screen, PIPE_CAP_VERTEXID_NOBASE)) { consts->VertexID_is_zero_based = GL_TRUE; }
