On Mon, Dec 05, 2016 at 11:01:54AM -0800, Ian Romanick wrote: > Aside from my comments on patch 5, you're missing some changes to > _mesa_BeginConditionalRender. See > https://cgit.freedesktop.org/~idr/mesa/commit/?h=ARB_transform_feedback_overflow_query&id=c17cf16caa18e44f9d53e05a7279066f8cc2f33c.
I did it on patch #4, but yes, it should have been merged with this patch. Will do it on next iteration. > On 12/05/2016 10:16 AM, Rafael Antognolli wrote: > > Add some basic types and storage for the queries of this extension. > > > > Signed-off-by: Rafael Antognolli <[email protected]> > > --- > > src/mesa/main/mtypes.h | 5 +++++ > > src/mesa/main/queryobj.c | 21 +++++++++++++++++++++ > > src/mesa/state_tracker/st_cb_queryobj.c | 6 ++++++ > > 3 files changed, 32 insertions(+) > > > > diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h > > index 459725b..dd6393d 100644 > > --- a/src/mesa/main/mtypes.h > > +++ b/src/mesa/main/mtypes.h > > @@ -3001,6 +3001,10 @@ struct gl_query_state > > struct gl_query_object *PrimitivesGenerated[MAX_VERTEX_STREAMS]; > > struct gl_query_object *PrimitivesWritten[MAX_VERTEX_STREAMS]; > > > > + /** GL_ARB_transform_feedback_overflow_query */ > > + struct gl_query_object *TransformFeedbackOverflow[MAX_VERTEX_STREAMS]; > > + struct gl_query_object *TransformFeedbackOverflowAny; > > + > > /** GL_ARB_timer_query */ > > struct gl_query_object *TimeElapsed; > > > > @@ -3870,6 +3874,7 @@ struct gl_extensions > > GLboolean ARB_transform_feedback2; > > GLboolean ARB_transform_feedback3; > > GLboolean ARB_transform_feedback_instanced; > > + GLboolean ARB_transform_feedback_overflow_query; > > GLboolean ARB_uniform_buffer_object; > > GLboolean ARB_vertex_attrib_64bit; > > GLboolean ARB_vertex_program; > > diff --git a/src/mesa/main/queryobj.c b/src/mesa/main/queryobj.c > > index 1fa0279..e4edb51 100644 > > --- a/src/mesa/main/queryobj.c > > +++ b/src/mesa/main/queryobj.c > > @@ -197,6 +197,16 @@ get_query_binding_point(struct gl_context *ctx, GLenum > > target, GLuint index) > > return &ctx->Query.PrimitivesWritten[index]; > > else > > return NULL; > > + case GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB: > > + if (ctx->Extensions.ARB_transform_feedback_overflow_query) > > + return &ctx->Query.TransformFeedbackOverflow[index]; > > + else > > + return NULL; > > + case GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB: > > + if (ctx->Extensions.ARB_transform_feedback_overflow_query) > > + return &ctx->Query.TransformFeedbackOverflowAny; > > + else > > + return NULL; > > > > case GL_VERTICES_SUBMITTED_ARB: > > case GL_PRIMITIVES_SUBMITTED_ARB: > > @@ -293,6 +303,8 @@ _mesa_CreateQueries(GLenum target, GLsizei n, GLuint > > *ids) > > case GL_TIMESTAMP: > > case GL_PRIMITIVES_GENERATED: > > case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: > > + case GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB: > > + case GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB: > > break; > > default: > > _mesa_error(ctx, GL_INVALID_ENUM, "glCreateQueries(invalid target = > > %s)", > > @@ -368,6 +380,7 @@ query_error_check_index(struct gl_context *ctx, GLenum > > target, GLuint index) > > switch (target) { > > case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: > > case GL_PRIMITIVES_GENERATED: > > + case GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB: > > if (index >= ctx->Const.MaxVertexStreams) { > > _mesa_error(ctx, GL_INVALID_VALUE, > > "glBeginQueryIndexed(index>=MaxVertexStreams)"); > > @@ -677,6 +690,14 @@ _mesa_GetQueryIndexediv(GLenum target, GLuint index, > > GLenum pname, > > case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: > > *params = ctx->Const.QueryCounterBits.PrimitivesWritten; > > break; > > + case GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB: > > + case GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB: > > + /* The minimum value of this is 1 if it's nonzero, and the > > value > > + * is only ever GL_TRUE or GL_FALSE, so no sense in reporting > > more > > + * bits. > > + */ > > + *params = 1; > > + break; > > case GL_VERTICES_SUBMITTED_ARB: > > *params = ctx->Const.QueryCounterBits.VerticesSubmitted; > > break; > > diff --git a/src/mesa/state_tracker/st_cb_queryobj.c > > b/src/mesa/state_tracker/st_cb_queryobj.c > > index 2489676..b1ac2aa 100644 > > --- a/src/mesa/state_tracker/st_cb_queryobj.c > > +++ b/src/mesa/state_tracker/st_cb_queryobj.c > > @@ -114,6 +114,12 @@ st_BeginQuery(struct gl_context *ctx, struct > > gl_query_object *q) > > case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: > > type = PIPE_QUERY_PRIMITIVES_EMITTED; > > break; > > + case GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB: > > + type = PIPE_QUERY_SO_OVERFLOW_PREDICATE; > > + break; > > + case GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB: > > + type = PIPE_QUERY_SO_OVERFLOW_PREDICATE; > > + break; > > case GL_TIME_ELAPSED: > > if (st->has_time_elapsed) > > type = PIPE_QUERY_TIME_ELAPSED; > > > _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
