virgl: add ARB_transform_feedback_overflow_query support
authorDave Airlie <airlied@redhat.com>
Mon, 28 May 2018 01:53:35 +0000 (11:53 +1000)
committerJakob Bornecrantz <jakob@collabora.com>
Wed, 30 May 2018 16:02:55 +0000 (17:02 +0100)
Reviewed-by: Jakob Bornecrantz <jakob@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
src/gallium/drivers/virgl/virgl_query.c
src/gallium/drivers/virgl/virgl_screen.c

index e4d955442bf055fc54f4791bb35c34b021e59d30..a75b29c7c9b86856bbabfa9ab985fb84f55e744c 100644 (file)
@@ -49,6 +49,7 @@ struct virgl_query {
 #define VIRGL_QUERY_GPU_FINISHED          9
 #define VIRGL_QUERY_PIPELINE_STATISTICS  10
 #define VIRGL_QUERY_OCCLUSION_PREDICATE_CONSERVATIVE 11
+#define VIRGL_QUERY_SO_OVERFLOW_ANY_PREDICATE 12
 
 static const int pquery_map[] =
 {
@@ -62,7 +63,7 @@ static const int pquery_map[] =
    VIRGL_QUERY_PRIMITIVES_EMITTED,
    VIRGL_QUERY_SO_STATISTICS,
    VIRGL_QUERY_SO_OVERFLOW_PREDICATE,
-   -1,
+   VIRGL_QUERY_SO_OVERFLOW_ANY_PREDICATE,
    VIRGL_QUERY_GPU_FINISHED,
    VIRGL_QUERY_PIPELINE_STATISTICS,
 };
index 01f864c6573941a49fe5b30abfb41640c26e1461..6b12a4d01609ba32cae4798d8a919501fd79842e 100644 (file)
@@ -208,6 +208,8 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap param)
       return vscreen->caps.caps.v1.bset.derivative_control;
    case PIPE_CAP_POLYGON_OFFSET_CLAMP:
       return vscreen->caps.caps.v1.bset.polygon_offset_clamp;
+   case PIPE_CAP_QUERY_SO_OVERFLOW:
+      return vscreen->caps.caps.v1.bset.transform_feedback_overflow_query;
    case PIPE_CAP_TEXTURE_GATHER_SM5:
    case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
    case PIPE_CAP_FAKE_SW_MSAA:
@@ -271,7 +273,6 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap param)
    case PIPE_CAP_POST_DEPTH_COVERAGE:
    case PIPE_CAP_BINDLESS_TEXTURE:
    case PIPE_CAP_NIR_SAMPLERS_AS_DEREF:
-   case PIPE_CAP_QUERY_SO_OVERFLOW:
    case PIPE_CAP_MEMOBJ:
    case PIPE_CAP_LOAD_CONSTBUF:
    case PIPE_CAP_TGSI_ANY_REG_AS_ADDRESS: