virgl: add support for ARB_indirect_parameters
authorDave Airlie <airlied@redhat.com>
Mon, 11 Feb 2019 02:46:10 +0000 (12:46 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 9 Apr 2019 04:25:01 +0000 (14:25 +1000)
The protocol changes are already in place for it.

Reviewed-By: Gert Wollny <gert.wollny@collabora.com>
docs/features.txt
src/gallium/drivers/virgl/virgl_hw.h
src/gallium/drivers/virgl/virgl_screen.c

index fa7a756a1baa3cc0d718f87392bbc3051022384e..60877fa19690e7edcb3c52daaae1e7e1cd277d8e 100644 (file)
@@ -227,7 +227,7 @@ GL 4.5, GLSL 4.50 -- all DONE: nvc0, radeonsi
 GL 4.6, GLSL 4.60
 
   GL_ARB_gl_spirv                                       in progress (Nicolai Hähnle, Ian Romanick)
-  GL_ARB_indirect_parameters                            DONE (i965/gen7+, nvc0, radeonsi)
+  GL_ARB_indirect_parameters                            DONE (i965/gen7+, nvc0, radeonsi, virgl)
   GL_ARB_pipeline_statistics_query                      DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
   GL_ARB_polygon_offset_clamp                           DONE (freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, swr, virgl)
   GL_ARB_shader_atomic_counter_ops                      DONE (freedreno/a5xx+, i965/gen7+, nvc0, r600, radeonsi, softpipe, virgl)
index 1cd7bf01aa67723364b58fa2d257b6aa2689aab5..8a56e1d53a8383dbaf8ed0553b920702ca38cdb0 100644 (file)
@@ -239,6 +239,7 @@ enum virgl_formats {
 #define VIRGL_CAP_FAKE_FP64            (1 << 19)
 #define VIRGL_CAP_BIND_COMMAND_ARGS    (1 << 20)
 #define VIRGL_CAP_MULTI_DRAW_INDIRECT  (1 << 21)
+#define VIRGL_CAP_INDIRECT_PARAMS      (1 << 22)
 #define VIRGL_CAP_TRANSFORM_FEEDBACK3  (1 << 23)
 
 /* virgl bind flags - these are compatible with mesa 10.5 gallium.
index edcc4aa374d500f9078ae38729841427a50e38bc..2e2af36f5873758e69793d5a7b836404ca9becea 100644 (file)
@@ -273,11 +273,12 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap param)
       return (vscreen->caps.caps.v1.max_samples == 1) ? 1 : 0;
    case PIPE_CAP_MULTI_DRAW_INDIRECT:
       return !!(vscreen->caps.caps.v2.capability_bits & VIRGL_CAP_MULTI_DRAW_INDIRECT);
+   case PIPE_CAP_MULTI_DRAW_INDIRECT_PARAMS:
+      return !!(vscreen->caps.caps.v2.capability_bits & VIRGL_CAP_INDIRECT_PARAMS);
    case PIPE_CAP_TEXTURE_GATHER_SM5:
    case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
    case PIPE_CAP_TEXTURE_GATHER_OFFSETS:
    case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION:
-   case PIPE_CAP_MULTI_DRAW_INDIRECT_PARAMS:
    case PIPE_CAP_CLIP_HALFZ:
    case PIPE_CAP_VERTEXID_NOBASE:
    case PIPE_CAP_MULTISAMPLE_Z_RESOLVE: