mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
virgl: Propagate the GL_MAX_stage_SHADER_STORAGE_BLOCKS for each stage
Some hardware have a higher number in the computer stage than in others, let's simply propagate everything when possible. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12003 Signed-off-by: Corentin Noël <corentin.noel@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31666>
This commit is contained in:
parent
85d25cc5c8
commit
89d709a43e
3 changed files with 10 additions and 3 deletions
|
|
@ -456,11 +456,16 @@ virgl_get_shader_param(struct pipe_screen *screen,
|
|||
if (vscreen->caps.caps.v2.host_feature_check_version < 12)
|
||||
return 4096 * sizeof(float[4]);
|
||||
return VIRGL_SHADER_STAGE_CAP_V2(max_const_buffer_size, shader);
|
||||
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
|
||||
if (shader == PIPE_SHADER_FRAGMENT || shader == PIPE_SHADER_COMPUTE)
|
||||
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS: {
|
||||
int max_shader_buffers = VIRGL_SHADER_STAGE_CAP_V2(max_shader_storage_blocks, shader);
|
||||
if (max_shader_buffers != INT_MAX) {
|
||||
return max_shader_buffers;
|
||||
} else if (shader == PIPE_SHADER_FRAGMENT || shader == PIPE_SHADER_COMPUTE) {
|
||||
return vscreen->caps.caps.v2.max_shader_buffer_frag_compute;
|
||||
else
|
||||
} else {
|
||||
return vscreen->caps.caps.v2.max_shader_buffer_other_stages;
|
||||
}
|
||||
}
|
||||
case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
|
||||
if (shader == PIPE_SHADER_FRAGMENT || shader == PIPE_SHADER_COMPUTE)
|
||||
return vscreen->caps.caps.v2.max_shader_image_frag_compute;
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@ static inline void virgl_ws_fill_new_caps_defaults(struct virgl_drm_caps *caps)
|
|||
caps->caps.v2.max_shader_sampler_views = 16;
|
||||
for (int shader_type = 0; shader_type < PIPE_SHADER_TYPES; shader_type++) {
|
||||
caps->caps.v2.max_const_buffer_size[shader_type] = 4096 * sizeof(float[4]);
|
||||
caps->caps.v2.max_shader_storage_blocks[shader_type] = INT_MAX;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -770,6 +770,7 @@ struct virgl_caps_v2 {
|
|||
uint32_t max_uniform_block_size;
|
||||
uint32_t max_tcs_outputs;
|
||||
uint32_t max_tes_outputs;
|
||||
uint32_t max_shader_storage_blocks[6]; // PIPE_SHADER_TYPES
|
||||
};
|
||||
|
||||
union virgl_caps {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue