virgl: Use host reported limits for max outputs

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24136>
This commit is contained in:
Gert Wollny
2023-07-13 12:34:39 +02:00
committed by Marge Bot
parent c24a635d1c
commit 4cdd094ae1
2 changed files with 15 additions and 2 deletions

View File

@@ -422,9 +422,20 @@ virgl_get_shader_param(struct pipe_screen *screen,
return (shader == PIPE_SHADER_VERTEX ||
shader == PIPE_SHADER_GEOMETRY) ? vscreen->caps.caps.v2.max_vertex_attribs : 32;
case PIPE_SHADER_CAP_MAX_OUTPUTS:
if (shader == PIPE_SHADER_FRAGMENT)
switch (shader) {
case PIPE_SHADER_FRAGMENT:
return vscreen->caps.caps.v1.max_render_targets;
return vscreen->caps.caps.v2.max_vertex_outputs;
case PIPE_SHADER_TESS_CTRL:
if (vscreen->caps.caps.v2.host_feature_check_version >= 19)
return vscreen->caps.caps.v2.max_tcs_outputs;
FALLTHROUGH;
case PIPE_SHADER_TESS_EVAL:
if (vscreen->caps.caps.v2.host_feature_check_version >= 19)
return vscreen->caps.caps.v2.max_tes_outputs;
FALLTHROUGH;
default:
return vscreen->caps.caps.v2.max_vertex_outputs;
}
// case PIPE_SHADER_CAP_MAX_CONSTS:
// return 4096;
case PIPE_SHADER_CAP_MAX_TEMPS:

View File

@@ -767,6 +767,8 @@ struct virgl_caps_v2 {
uint32_t num_video_caps;
struct virgl_video_caps video_caps[32];
uint32_t max_uniform_block_size;
uint32_t max_tcs_outputs;
uint32_t max_tes_outputs;
};
union virgl_caps {