From 57080749f78c0e6778a40c864c0d914d54b5301c Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Thu, 19 Oct 2023 15:00:38 +0100 Subject: [PATCH] gallium: remove PIPE_CAP_SHADER_CAN_READ_OUTPUTS nir_lower_io_to_temporaries is now done for all stages except TCS, and nir_lower_io_to_temporaries with a TCS is a no-op. Signed-off-by: Rhys Perry Reviewed-by: Timothy Arceri Reviewed-by: Alyssa Rosenzweig Part-of: --- docs/gallium/screen.rst | 2 -- src/compiler/glsl/gl_nir_linker.c | 3 +-- src/gallium/auxiliary/util/u_screen.c | 1 - src/gallium/drivers/nouveau/nv30/nv30_screen.c | 1 - src/gallium/drivers/radeonsi/si_get.c | 1 - src/gallium/drivers/v3d/v3d_screen.c | 1 - src/gallium/include/pipe/p_defines.h | 1 - src/mesa/main/consts_exts.h | 3 --- src/mesa/state_tracker/st_extensions.c | 2 -- 9 files changed, 1 insertion(+), 14 deletions(-) diff --git a/docs/gallium/screen.rst b/docs/gallium/screen.rst index 0bb9dceca5d..36ad32c1284 100644 --- a/docs/gallium/screen.rst +++ b/docs/gallium/screen.rst @@ -413,8 +413,6 @@ The integer capabilities: * ``PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS``: Whether interleaved stream output mode is able to interleave across buffers. This is required for :ext:`GL_ARB_transform_feedback3`. -* ``PIPE_CAP_SHADER_CAN_READ_OUTPUTS``: Whether every TGSI shader stage can read - from the output file. * ``PIPE_CAP_FBFETCH``: The number of render targets whose value in the current framebuffer can be read in the shader. 0 means framebuffer fetch is not supported. 1 means that only the first render target can be read, diff --git a/src/compiler/glsl/gl_nir_linker.c b/src/compiler/glsl/gl_nir_linker.c index 98e1b75b244..bb7fa3610d6 100644 --- a/src/compiler/glsl/gl_nir_linker.c +++ b/src/compiler/glsl/gl_nir_linker.c @@ -1250,8 +1250,7 @@ preprocess_shader(const struct gl_constants *consts, nir_shader_get_entrypoint(nir), true, true); } else if (nir->info.stage == MESA_SHADER_TESS_EVAL || - nir->info.stage == MESA_SHADER_FRAGMENT || - !consts->SupportsReadingOutputs) { + nir->info.stage == MESA_SHADER_FRAGMENT) { NIR_PASS(_, nir, nir_lower_io_to_temporaries, nir_shader_get_entrypoint(nir), true, false); diff --git a/src/gallium/auxiliary/util/u_screen.c b/src/gallium/auxiliary/util/u_screen.c index aee5d426224..6218f386b3b 100644 --- a/src/gallium/auxiliary/util/u_screen.c +++ b/src/gallium/auxiliary/util/u_screen.c @@ -314,7 +314,6 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen, case PIPE_CAP_MIXED_COLOR_DEPTH_BITS: case PIPE_CAP_SHADER_ARRAY_COMPONENTS: case PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS: - case PIPE_CAP_SHADER_CAN_READ_OUTPUTS: case PIPE_CAP_NATIVE_FENCE_FD: return 0; diff --git a/src/gallium/drivers/nouveau/nv30/nv30_screen.c b/src/gallium/drivers/nouveau/nv30/nv30_screen.c index 0dddc5184c1..3f3d697207a 100644 --- a/src/gallium/drivers/nouveau/nv30/nv30_screen.c +++ b/src/gallium/drivers/nouveau/nv30/nv30_screen.c @@ -214,7 +214,6 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_VIEWPORT_SUBPIXEL_BITS: case PIPE_CAP_MIXED_COLOR_DEPTH_BITS: case PIPE_CAP_SHADER_ARRAY_COMPONENTS: - case PIPE_CAP_SHADER_CAN_READ_OUTPUTS: case PIPE_CAP_NATIVE_FENCE_FD: case PIPE_CAP_FBFETCH: case PIPE_CAP_LEGACY_MATH_RULES: diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c index e031a135551..da1a4a2e66d 100644 --- a/src/gallium/drivers/radeonsi/si_get.c +++ b/src/gallium/drivers/radeonsi/si_get.c @@ -139,7 +139,6 @@ static int si_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_STRING_MARKER: case PIPE_CAP_CULL_DISTANCE: case PIPE_CAP_SHADER_ARRAY_COMPONENTS: - case PIPE_CAP_SHADER_CAN_READ_OUTPUTS: case PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME: case PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS: case PIPE_CAP_DOUBLES: diff --git a/src/gallium/drivers/v3d/v3d_screen.c b/src/gallium/drivers/v3d/v3d_screen.c index c300bf41d2b..adeaaa3845a 100644 --- a/src/gallium/drivers/v3d/v3d_screen.c +++ b/src/gallium/drivers/v3d/v3d_screen.c @@ -140,7 +140,6 @@ v3d_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_MULTI_DRAW_INDIRECT: case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: case PIPE_CAP_SIGNED_VERTEX_BUFFER_OFFSET: - case PIPE_CAP_SHADER_CAN_READ_OUTPUTS: case PIPE_CAP_SHADER_PACK_HALF_FLOAT: case PIPE_CAP_TEXTURE_HALF_FLOAT_LINEAR: case PIPE_CAP_FRAMEBUFFER_NO_ATTACHMENT: diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index fc8c763bfbb..6d29cdb3eda 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -819,7 +819,6 @@ enum pipe_cap PIPE_CAP_MIXED_COLOR_DEPTH_BITS, PIPE_CAP_SHADER_ARRAY_COMPONENTS, PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS, - PIPE_CAP_SHADER_CAN_READ_OUTPUTS, PIPE_CAP_NATIVE_FENCE_FD, PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS, PIPE_CAP_FBFETCH, diff --git a/src/mesa/main/consts_exts.h b/src/mesa/main/consts_exts.h index d14b9185f12..203aefb8349 100644 --- a/src/mesa/main/consts_exts.h +++ b/src/mesa/main/consts_exts.h @@ -954,9 +954,6 @@ struct gl_constants bool HasFBFetch; - /** Whether the backend supports reading from outputs */ - bool SupportsReadingOutputs; - bool CombinedClipCullDistanceArrays; bool PointSizeFixed; diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 166ae98eae2..b900e0ae52d 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -170,8 +170,6 @@ void st_init_limits(struct pipe_screen *screen, c->HasFBFetch = screen->get_param(screen, PIPE_CAP_FBFETCH); - c->SupportsReadingOutputs = screen->get_param(screen, PIPE_CAP_SHADER_CAN_READ_OUTPUTS); - c->CombinedClipCullDistanceArrays = !screen->get_param(screen, PIPE_CAP_CULL_DISTANCE_NOCOMBINE); c->PointSizeFixed = screen->get_param(screen, PIPE_CAP_POINT_SIZE_FIXED) != PIPE_POINT_SIZE_LOWER_ALWAYS;