Module: Mesa
Branch: main
Commit: 4cdd094ae1e97d857a6b9dbc291d7bbe6ea266ac
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4cdd094ae1e97d857a6b9dbc291d7bbe6ea266ac

Author: Gert Wollny <gert.wol...@collabora.com>
Date:   Thu Jul 13 12:34:39 2023 +0200

virgl: Use host reported limits for max outputs

Signed-off-by: Gert Wollny <gert.wol...@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24136>

---

 src/gallium/drivers/virgl/virgl_screen.c | 15 +++++++++++++--
 src/virtio/virtio-gpu/virgl_hw.h         |  2 ++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/virgl/virgl_screen.c 
b/src/gallium/drivers/virgl/virgl_screen.c
index c3a8ce5db3d..44f2a28ca56 100644
--- a/src/gallium/drivers/virgl/virgl_screen.c
+++ b/src/gallium/drivers/virgl/virgl_screen.c
@@ -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:
diff --git a/src/virtio/virtio-gpu/virgl_hw.h b/src/virtio/virtio-gpu/virgl_hw.h
index e2340df1e9d..d29f4792a07 100644
--- a/src/virtio/virtio-gpu/virgl_hw.h
+++ b/src/virtio/virtio-gpu/virgl_hw.h
@@ -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 {

Reply via email to