On Wed, Feb 10, 2016 at 1:10 PM, Samuel Pitoiset <samuel.pitoi...@gmail.com> wrote: > According to the spec, this also increases the following minimum values: > - MAX_COMBINED_TEXTURE_IMAGE_UNITS 96 (6*16), was 80 > - MAX_UNIFORM_BUFFER_BINDINGS 72 (6*12), was 60 > > ARB_compute_shader is not enabled by default because images support is > still not implemented yet. If you want to use it you need to set > MESA_EXTENSION_OVERRIDE=GL_ARB_compute_shader. > > Changes from v2: > - make use of the new PIPE_CAP_SHADER_SUPPORTED_IRS cap instead of > enabling the extension when PIPE_CAP_COMPUTE is enabled. > - query for PIPE_CAP_COMPUTE first > - s/shader_supported_irs/compute_supported_irs/ > - disable ARB_compute_shader and add a comment which explains why > > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > Reviewed-by: Marek Olšák <marek.ol...@amd.com> (v1) > Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu> (v1)
Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu> [i.e. for the v2 as well] > --- > src/mesa/state_tracker/st_extensions.c | 33 +++++++++++++++++++++++++++++++-- > 1 file changed, 31 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/state_tracker/st_extensions.c > b/src/mesa/state_tracker/st_extensions.c > index 6736ebc..bdfbded 100644 > --- a/src/mesa/state_tracker/st_extensions.c > +++ b/src/mesa/state_tracker/st_extensions.c > @@ -276,7 +276,8 @@ void st_init_limits(struct pipe_screen *screen, > c->Program[MESA_SHADER_TESS_CTRL].MaxTextureImageUnits + > c->Program[MESA_SHADER_TESS_EVAL].MaxTextureImageUnits + > c->Program[MESA_SHADER_GEOMETRY].MaxTextureImageUnits + > - c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits, > + c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits + > + c->Program[MESA_SHADER_COMPUTE].MaxTextureImageUnits, > MAX_COMBINED_TEXTURE_IMAGE_UNITS); > > /* This depends on program constants. */ > @@ -336,7 +337,8 @@ void st_init_limits(struct pipe_screen *screen, > c->Program[MESA_SHADER_TESS_CTRL].MaxUniformBlocks + > c->Program[MESA_SHADER_TESS_EVAL].MaxUniformBlocks + > c->Program[MESA_SHADER_GEOMETRY].MaxUniformBlocks + > - c->Program[MESA_SHADER_FRAGMENT].MaxUniformBlocks; > + c->Program[MESA_SHADER_FRAGMENT].MaxUniformBlocks + > + c->Program[MESA_SHADER_COMPUTE].MaxUniformBlocks; > assert(c->MaxCombinedUniformBlocks <= MAX_COMBINED_UNIFORM_BUFFERS); > } > > @@ -1018,4 +1020,31 @@ void st_init_extensions(struct pipe_screen *screen, > if ((ST_DEBUG & DEBUG_GREMEDY) && > screen->get_param(screen, PIPE_CAP_STRING_MARKER)) > extensions->GREMEDY_string_marker = GL_TRUE; > + > + if (screen->get_param(screen, PIPE_CAP_COMPUTE)) { > + int compute_supported_irs = > + screen->get_shader_param(screen, PIPE_SHADER_COMPUTE, > + PIPE_SHADER_CAP_SUPPORTED_IRS); > + if (compute_supported_irs & (1 << PIPE_SHADER_IR_TGSI)) { > + uint64_t grid_size[3], block_size[3]; > + > + screen->get_compute_param(screen, PIPE_COMPUTE_CAP_MAX_GRID_SIZE, > + grid_size); > + screen->get_compute_param(screen, PIPE_COMPUTE_CAP_MAX_BLOCK_SIZE, > + block_size); > + screen->get_compute_param(screen, > + PIPE_COMPUTE_CAP_MAX_THREADS_PER_BLOCK, > + &consts->MaxComputeWorkGroupInvocations); > + screen->get_compute_param(screen, PIPE_COMPUTE_CAP_MAX_LOCAL_SIZE, > + &consts->MaxComputeSharedMemorySize); > + > + for (i = 0; i < 3; i++) { > + consts->MaxComputeWorkGroupCount[i] = grid_size[i]; > + consts->MaxComputeWorkGroupSize[i] = block_size[i]; > + } > + /* XXX: ARB_compute_shader is not enabled by default because images > + * support is still not implemented yet. */ > + /* extensions->ARB_compute_shader = true; */ > + } > + } > } > -- > 2.6.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev