Module: Mesa Branch: main Commit: fdbf8c96fe2b0f3818fc328114fdac766647bf8e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fdbf8c96fe2b0f3818fc328114fdac766647bf8e
Author: Alyssa Rosenzweig <[email protected]> Date: Mon May 10 13:08:16 2021 -0400 panfrost: Use natural shader limits Mostly arbitrary. Use the Gallium limits which are all less than the hardware limits, and static_assert that this is the case to future proof. Signed-off-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10845> --- src/gallium/drivers/panfrost/pan_screen.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c index 64a455adfbc..e2fe025730b 100644 --- a/src/gallium/drivers/panfrost/pan_screen.c +++ b/src/gallium/drivers/panfrost/pan_screen.c @@ -180,10 +180,12 @@ panfrost_get_param(struct pipe_screen *screen, enum pipe_cap param) return 0; case PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS: - return 4; + return PIPE_MAX_SO_BUFFERS; + case PIPE_CAP_MAX_STREAM_OUTPUT_SEPARATE_COMPONENTS: case PIPE_CAP_MAX_STREAM_OUTPUT_INTERLEAVED_COMPONENTS: - return 64; + return PIPE_MAX_SO_OUTPUTS; + case PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME: case PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS: return 1; @@ -283,7 +285,7 @@ panfrost_get_param(struct pipe_screen *screen, enum pipe_cap param) return 4; case PIPE_CAP_MAX_VARYINGS: - return 16; + return PIPE_MAX_ATTRIBS; /* Removed in v6 (Bifrost) */ case PIPE_CAP_ALPHA_TEST: @@ -345,10 +347,12 @@ panfrost_get_shader_param(struct pipe_screen *screen, return 1024; case PIPE_SHADER_CAP_MAX_INPUTS: - return 16; + /* Hardware limit is 4095 but we have driver internal inputs */ + STATIC_ASSERT(PIPE_MAX_ATTRIBS < (0x1000 - 16)); + return PIPE_MAX_ATTRIBS; case PIPE_SHADER_CAP_MAX_OUTPUTS: - return shader == PIPE_SHADER_FRAGMENT ? 8 : 16; + return shader == PIPE_SHADER_FRAGMENT ? 8 : PIPE_MAX_ATTRIBS; case PIPE_SHADER_CAP_MAX_TEMPS: return 256; /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ @@ -357,6 +361,7 @@ panfrost_get_shader_param(struct pipe_screen *screen, return 16 * 1024 * sizeof(float); case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: + STATIC_ASSERT(PAN_MAX_CONST_BUFFERS < 0x100); return PAN_MAX_CONST_BUFFERS; case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: @@ -406,8 +411,12 @@ panfrost_get_shader_param(struct pipe_screen *screen, return 0; case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS: + STATIC_ASSERT(PIPE_MAX_SAMPLERS < 0x10000); + return PIPE_MAX_SAMPLERS; + case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS: - return 16; /* XXX: How many? */ + STATIC_ASSERT(PIPE_MAX_SHADER_SAMPLER_VIEWS < 0x10000); + return PIPE_MAX_SHADER_SAMPLER_VIEWS; case PIPE_SHADER_CAP_PREFERRED_IR: return PIPE_SHADER_IR_NIR; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
