On Sat, Sep 19, 2015 at 6:50 PM, Jordan Justen <jordan.l.jus...@intel.com> wrote: > Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> > --- > src/mesa/main/bufferobj.c | 17 +++++++++++++++++ > src/mesa/main/get.c | 4 ++++ > src/mesa/main/get_hash_params.py | 1 + > src/mesa/main/mtypes.h | 1 + > 4 files changed, 23 insertions(+) > > diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c > index 3b87654..0108c08 100644 > --- a/src/mesa/main/bufferobj.c > +++ b/src/mesa/main/bufferobj.c > @@ -93,6 +93,13 @@ get_buffer_target(struct gl_context *ctx, GLenum target) > return &ctx->DrawIndirectBuffer; > } > break; > + case GL_DISPATCH_INDIRECT_BUFFER: > + if ((ctx->API == API_OPENGL_CORE && > + ctx->Extensions.ARB_compute_shader) || > + _mesa_is_gles31(ctx)) {
_mesa_has_compute_shaders(ctx) > + return &ctx->DispatchIndirectBuffer; > + } > + break; > case GL_TRANSFORM_FEEDBACK_BUFFER: > if (ctx->Extensions.EXT_transform_feedback) { > return &ctx->TransformFeedback.CurrentBuffer; > @@ -844,6 +851,9 @@ _mesa_init_buffer_objects( struct gl_context *ctx ) > _mesa_reference_buffer_object(ctx, &ctx->DrawIndirectBuffer, > ctx->Shared->NullBufferObj); > > + _mesa_reference_buffer_object(ctx, &ctx->DispatchIndirectBuffer, > + ctx->Shared->NullBufferObj); > + > for (i = 0; i < MAX_COMBINED_UNIFORM_BUFFERS; i++) { > _mesa_reference_buffer_object(ctx, > > &ctx->UniformBufferBindings[i].BufferObject, > @@ -888,6 +898,8 @@ _mesa_free_buffer_objects( struct gl_context *ctx ) > > _mesa_reference_buffer_object(ctx, &ctx->DrawIndirectBuffer, NULL); > > + _mesa_reference_buffer_object(ctx, &ctx->DispatchIndirectBuffer, NULL); > + > for (i = 0; i < MAX_COMBINED_UNIFORM_BUFFERS; i++) { > _mesa_reference_buffer_object(ctx, > > &ctx->UniformBufferBindings[i].BufferObject, > @@ -1233,6 +1245,11 @@ _mesa_DeleteBuffers(GLsizei n, const GLuint *ids) > _mesa_BindBuffer( GL_DRAW_INDIRECT_BUFFER, 0 ); > } > > + /* unbind ARB_compute_shader binding point */ > + if (ctx->DispatchIndirectBuffer == bufObj) { > + _mesa_BindBuffer(GL_DISPATCH_INDIRECT_BUFFER, 0); > + } > + > /* unbind ARB_copy_buffer binding points */ > if (ctx->CopyReadBuffer == bufObj) { > _mesa_BindBuffer( GL_COPY_READ_BUFFER, 0 ); > diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c > index d5df530..7d9738f 100644 > --- a/src/mesa/main/get.c > +++ b/src/mesa/main/get.c > @@ -1036,6 +1036,10 @@ find_custom_value(struct gl_context *ctx, const struct > value_desc *d, union valu > v->value_int = 0; > } > break; > + /* GL_ARB_compute_shader */ > + case GL_DISPATCH_INDIRECT_BUFFER_BINDING: > + v->value_int = ctx->DispatchIndirectBuffer->Name; > + break; > } > } > > diff --git a/src/mesa/main/get_hash_params.py > b/src/mesa/main/get_hash_params.py > index e2fb2a1..805becb 100644 > --- a/src/mesa/main/get_hash_params.py > +++ b/src/mesa/main/get_hash_params.py > @@ -450,6 +450,7 @@ descriptor=[ > [ "MAX_COMPUTE_SHARED_MEMORY_SIZE", > "CONST(MAX_COMPUTE_SHARED_MEMORY_SIZE), extra_ARB_compute_shader_es31" ], > [ "MAX_COMPUTE_UNIFORM_COMPONENTS", > "CONST(MAX_COMPUTE_UNIFORM_COMPONENTS), extra_ARB_compute_shader_es31" ], > [ "MAX_COMPUTE_IMAGE_UNIFORMS", "CONST(MAX_COMPUTE_IMAGE_UNIFORMS), > extra_ARB_compute_shader_es31" ], > + [ "DISPATCH_INDIRECT_BUFFER_BINDING", "LOC_CUSTOM, TYPE_INT, 0, > extra_ARB_compute_shader_es31" ], > > # GL_ARB_framebuffer_no_attachments / GLES 3.1 > ["MAX_FRAMEBUFFER_WIDTH", "CONTEXT_INT(Const.MaxFramebufferWidth), > extra_ARB_framebuffer_no_attachments"], > diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h > index fac45aa..d308b98 100644 > --- a/src/mesa/main/mtypes.h > +++ b/src/mesa/main/mtypes.h > @@ -4288,6 +4288,7 @@ struct gl_context > struct gl_perf_monitor_state PerfMonitor; > > struct gl_buffer_object *DrawIndirectBuffer; /** < GL_ARB_draw_indirect */ > + struct gl_buffer_object *DispatchIndirectBuffer; /** < > GL_ARB_compute_shader */ > > struct gl_buffer_object *CopyReadBuffer; /**< GL_ARB_copy_buffer */ > struct gl_buffer_object *CopyWriteBuffer; /**< GL_ARB_copy_buffer */ > -- > 2.5.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev