On 15/08/17 17:23, srol...@vmware.com wrote:
From: Roland Scheidegger <srol...@vmware.com>

The driver supported this since way before the GL spec for it existed.
Just need to support both the per-stream and for all streams variants
(which are identical due to only supporting 1 stream).
Passes piglit arb_transform_feedback_overflow_query-basic.
---
  docs/features.txt                        | 2 +-
  src/gallium/drivers/llvmpipe/lp_query.c  | 3 +++
  src/gallium/drivers/llvmpipe/lp_screen.c | 2 +-
  3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/docs/features.txt b/docs/features.txt
index ace4669..6f57ec2 100644
--- a/docs/features.txt
+++ b/docs/features.txt
@@ -232,7 +232,7 @@ GL 4.6, GLSL 4.60
    GL_ARB_shader_group_vote                              DONE (i965, nvc0, 
radeonsi)
    GL_ARB_spirv_extensions                               in progress (Nicolai 
Hähnle, Ian Romanick)
    GL_ARB_texture_filter_anisotropic                     not started
-  GL_ARB_transform_feedback_overflow_query              DONE (i965/gen6+, 
radeonsi, softpipe)
+  GL_ARB_transform_feedback_overflow_query              DONE (i965/gen6+, 
radeonsi, llvmpipe, softpipe)
    GL_KHR_no_error                                       started (Timothy 
Arceri)
These are the extensions cherry-picked to make GLES 3.1
diff --git a/src/gallium/drivers/llvmpipe/lp_query.c 
b/src/gallium/drivers/llvmpipe/lp_query.c
index d5ed656..6f8ce94 100644
--- a/src/gallium/drivers/llvmpipe/lp_query.c
+++ b/src/gallium/drivers/llvmpipe/lp_query.c
@@ -155,6 +155,7 @@ llvmpipe_get_query_result(struct pipe_context *pipe,
        *result = pq->num_primitives_written;
        break;
     case PIPE_QUERY_SO_OVERFLOW_PREDICATE:
+   case PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE:
        vresult->b = pq->num_primitives_generated > pq->num_primitives_written;
        break;
     case PIPE_QUERY_SO_STATISTICS: {
@@ -215,6 +216,7 @@ llvmpipe_begin_query(struct pipe_context *pipe, struct 
pipe_query *q)
        pq->num_primitives_generated = 
llvmpipe->so_stats.primitives_storage_needed;
        break;
     case PIPE_QUERY_SO_OVERFLOW_PREDICATE:
+   case PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE:
        pq->num_primitives_written = llvmpipe->so_stats.num_primitives_written;
        pq->num_primitives_generated = 
llvmpipe->so_stats.primitives_storage_needed;
        break;
@@ -264,6 +266,7 @@ llvmpipe_end_query(struct pipe_context *pipe, struct 
pipe_query *q)
           llvmpipe->so_stats.primitives_storage_needed - 
pq->num_primitives_generated;
        break;
     case PIPE_QUERY_SO_OVERFLOW_PREDICATE:
+   case PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE:
        pq->num_primitives_written =
           llvmpipe->so_stats.num_primitives_written - 
pq->num_primitives_written;
        pq->num_primitives_generated =
diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c 
b/src/gallium/drivers/llvmpipe/lp_screen.c
index 6c64133..32a4050 100644
--- a/src/gallium/drivers/llvmpipe/lp_screen.c
+++ b/src/gallium/drivers/llvmpipe/lp_screen.c
@@ -270,6 +270,7 @@ llvmpipe_get_param(struct pipe_screen *screen, enum 
pipe_cap param)
     case PIPE_CAP_DOUBLES:
     case PIPE_CAP_INT64:
     case PIPE_CAP_INT64_DIVMOD:
+   case PIPE_CAP_QUERY_SO_OVERFLOW:
        return 1;
case PIPE_CAP_VENDOR_ID:
@@ -357,7 +358,6 @@ llvmpipe_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:
        return 0;
     }


Series is

Reviewed-by: Jose Fonseca <jfons...@vmware.com>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to