[virglrenderer-devel] [PATCH 04/12] arb_gpu_shader5: add support for indexed queries

Dave Airlie airlied at gmail.com
Tue May 15 04:38:02 UTC 2018


From: Dave Airlie <airlied at redhat.com>

---
 src/vrend_decode.c   |  2 +-
 src/vrend_renderer.c | 10 ++++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/vrend_decode.c b/src/vrend_decode.c
index 5f62568..96f6077 100644
--- a/src/vrend_decode.c
+++ b/src/vrend_decode.c
@@ -659,7 +659,7 @@ static int vrend_decode_create_query(struct vrend_decode_ctx *ctx, uint32_t hand
 
    tmp = get_buf_entry(ctx, VIRGL_OBJ_QUERY_TYPE_INDEX);
    query_type = VIRGL_OBJ_QUERY_TYPE(tmp);
-   query_index = VIRGL_OBJ_QUERY_INDEX(tmp);
+   query_index = (tmp >> 16) & 0xffff;
 
    offset = get_buf_entry(ctx, VIRGL_OBJ_QUERY_OFFSET);
    res_handle = get_buf_entry(ctx, VIRGL_OBJ_QUERY_RES_HANDLE);
diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c
index 3e52166..82188d8 100644
--- a/src/vrend_renderer.c
+++ b/src/vrend_renderer.c
@@ -6403,7 +6403,10 @@ void vrend_begin_query(struct vrend_context *ctx, uint32_t handle)
    if (q->gltype == GL_TIMESTAMP)
       return;
 
-   glBeginQuery(q->gltype, q->id);
+   if (q->index > 0)
+      glBeginQueryIndexed(q->gltype, q->index, q->id);
+   else
+      glBeginQuery(q->gltype, q->id);
 }
 
 void vrend_end_query(struct vrend_context *ctx, uint32_t handle)
@@ -6425,7 +6428,10 @@ void vrend_end_query(struct vrend_context *ctx, uint32_t handle)
       return;
    }
 
-   glEndQuery(q->gltype);
+   if (q->index > 0)
+      glEndQueryIndexed(q->gltype, q->index);
+   else
+      glEndQuery(q->gltype);
 }
 
 void vrend_get_query_result(struct vrend_context *ctx, uint32_t handle,
-- 
2.14.3



More information about the virglrenderer-devel mailing list