mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 00:30:11 +01:00
softpipe: enable PIPE_CAP_QUERY_SO_OVERFLOW
The driver was supposed to support this since way before the GL spec for it existed, albeit it was apparently broken, so fix and enable it. Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
c87594575b
commit
26d46b94b4
3 changed files with 9 additions and 3 deletions
|
|
@ -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)
|
||||
GL_ARB_transform_feedback_overflow_query DONE (i965/gen6+, radeonsi, softpipe)
|
||||
GL_KHR_no_error started (Timothy Arceri)
|
||||
|
||||
These are the extensions cherry-picked to make GLES 3.1
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ softpipe_create_query(struct pipe_context *pipe,
|
|||
type == PIPE_QUERY_TIME_ELAPSED ||
|
||||
type == PIPE_QUERY_SO_STATISTICS ||
|
||||
type == PIPE_QUERY_SO_OVERFLOW_PREDICATE ||
|
||||
type == PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE ||
|
||||
type == PIPE_QUERY_PRIMITIVES_EMITTED ||
|
||||
type == PIPE_QUERY_PRIMITIVES_GENERATED ||
|
||||
type == PIPE_QUERY_PIPELINE_STATISTICS ||
|
||||
|
|
@ -102,7 +103,9 @@ softpipe_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
|||
sq->so.primitives_storage_needed = softpipe->so_stats.primitives_storage_needed;
|
||||
break;
|
||||
case PIPE_QUERY_SO_OVERFLOW_PREDICATE:
|
||||
sq->end = FALSE;
|
||||
case PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE:
|
||||
sq->so.num_primitives_written = softpipe->so_stats.num_primitives_written;
|
||||
sq->so.primitives_storage_needed = softpipe->so_stats.primitives_storage_needed;
|
||||
break;
|
||||
case PIPE_QUERY_PRIMITIVES_EMITTED:
|
||||
sq->so.num_primitives_written = softpipe->so_stats.num_primitives_written;
|
||||
|
|
@ -153,6 +156,7 @@ softpipe_end_query(struct pipe_context *pipe, struct pipe_query *q)
|
|||
sq->end = os_time_get_nano();
|
||||
break;
|
||||
case PIPE_QUERY_SO_OVERFLOW_PREDICATE:
|
||||
case PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE:
|
||||
sq->so.num_primitives_written =
|
||||
softpipe->so_stats.num_primitives_written - sq->so.num_primitives_written;
|
||||
sq->so.primitives_storage_needed =
|
||||
|
|
@ -230,6 +234,7 @@ softpipe_get_query_result(struct pipe_context *pipe,
|
|||
vresult->b = TRUE;
|
||||
break;
|
||||
case PIPE_QUERY_SO_OVERFLOW_PREDICATE:
|
||||
case PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE:
|
||||
vresult->b = sq->end != 0;
|
||||
break;
|
||||
case PIPE_QUERY_TIMESTAMP_DISJOINT: {
|
||||
|
|
|
|||
|
|
@ -220,6 +220,8 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
|||
return 31;
|
||||
case PIPE_CAP_DRAW_INDIRECT:
|
||||
return 1;
|
||||
case PIPE_CAP_QUERY_SO_OVERFLOW:
|
||||
return 1;
|
||||
|
||||
case PIPE_CAP_VENDOR_ID:
|
||||
return 0xFFFFFFFF;
|
||||
|
|
@ -307,7 +309,6 @@ softpipe_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;
|
||||
case PIPE_CAP_SHADER_BUFFER_OFFSET_ALIGNMENT:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue