[Mesa-dev] [PATCH 8/8] mesa: expose ARB_tessellation_shader in the compatibility profile

Timothy Arceri tarceri at itsqueeze.com
Thu May 24 13:32:31 UTC 2018


On 24/05/18 18:41, Nicolai Hähnle wrote:
> What about selection and feedback mode for geometry shaders and 
> tessellation?

For now this will only enable the extension in compat when using env 
overrides. So this patch should be ok as is IMO.

> 
> Cheers,
> Nicolai
> 
> On 23.05.2018 22:58, Marek Olšák wrote:
>> From: Marek Olšák <marek.olsak at amd.com>
>>
>> Gallium drivers don't expose this yet due to:
>>      "st/mesa: use PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY"
>> ---
>>   src/mesa/drivers/dri/i965/intel_extensions.c | 3 ++-
>>   src/mesa/main/extensions_table.h             | 2 +-
>>   src/mesa/state_tracker/st_extensions.c       | 4 +++-
>>   3 files changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c 
>> b/src/mesa/drivers/dri/i965/intel_extensions.c
>> index c34d0101558..8455b0ed97d 100644
>> --- a/src/mesa/drivers/dri/i965/intel_extensions.c
>> +++ b/src/mesa/drivers/dri/i965/intel_extensions.c
>> @@ -229,21 +229,22 @@ intelInitExtensions(struct gl_context *ctx)
>>            ctx->Extensions.ARB_gpu_shader5 = true;
>>            ctx->Extensions.ARB_gpu_shader_fp64 = 
>> devinfo->has_64bit_types;
>>         }
>>         ctx->Extensions.ARB_shader_atomic_counters = true;
>>         ctx->Extensions.ARB_shader_atomic_counter_ops = true;
>>         ctx->Extensions.ARB_shader_clock = true;
>>         ctx->Extensions.ARB_shader_image_load_store = true;
>>         ctx->Extensions.ARB_shader_image_size = true;
>>         ctx->Extensions.ARB_shader_precision = true;
>>         ctx->Extensions.ARB_shader_texture_image_samples = true;
>> -      ctx->Extensions.ARB_tessellation_shader = true;
>> +      if (ctx->API != API_OPENGL_COMPAT)
>> +         ctx->Extensions.ARB_tessellation_shader = true;
>>         ctx->Extensions.ARB_texture_compression_bptc = true;
>>         ctx->Extensions.ARB_texture_view = true;
>>         ctx->Extensions.ARB_shader_storage_buffer_object = true;
>>         ctx->Extensions.ARB_vertex_attrib_64bit = 
>> devinfo->has_64bit_types;
>>         ctx->Extensions.EXT_shader_samples_identical = true;
>>         ctx->Extensions.OES_primitive_bounding_box = true;
>>         ctx->Extensions.OES_texture_buffer = true;
>>         if (can_do_pipelined_register_writes(brw->screen)) {
>>            ctx->Extensions.ARB_draw_indirect = true;
>> diff --git a/src/mesa/main/extensions_table.h 
>> b/src/mesa/main/extensions_table.h
>> index ef1c05cb6ce..8bafa4a3ce9 100644
>> --- a/src/mesa/main/extensions_table.h
>> +++ b/src/mesa/main/extensions_table.h
>> @@ -125,21 +125,21 @@ EXT(ARB_shader_subroutine                   , 
>> dummy_true
>>   EXT(ARB_shader_texture_image_samples        , 
>> ARB_shader_texture_image_samples       , GLL, GLC,  x ,  x , 2014)
>>   EXT(ARB_shader_texture_lod                  , 
>> ARB_shader_texture_lod                 , GLL, GLC,  x ,  x , 2009)
>>   EXT(ARB_shader_viewport_layer_array         , 
>> ARB_shader_viewport_layer_array        ,  x , GLC,  x ,  x , 2015)
>>   EXT(ARB_shading_language_100                , 
>> dummy_true                             , GLL,  x ,  x ,  x , 2003)
>>   EXT(ARB_shading_language_420pack            , 
>> ARB_shading_language_420pack           , GLL, GLC,  x ,  x , 2011)
>>   EXT(ARB_shading_language_packing            , 
>> ARB_shading_language_packing           , GLL, GLC,  x ,  x , 2011)
>>   EXT(ARB_shadow                              , 
>> ARB_shadow                             , GLL,  x ,  x ,  x , 2001)
>>   EXT(ARB_sparse_buffer                       , 
>> ARB_sparse_buffer                      , GLL, GLC,  x ,  x , 2014)
>>   EXT(ARB_stencil_texturing                   , 
>> ARB_stencil_texturing                  , GLL, GLC,  x ,  x , 2012)
>>   EXT(ARB_sync                                , 
>> ARB_sync                               , GLL, GLC,  x ,  x , 2003)
>> -EXT(ARB_tessellation_shader                 , 
>> ARB_tessellation_shader                ,  x , GLC,  x ,  x , 2009)
>> +EXT(ARB_tessellation_shader                 , 
>> ARB_tessellation_shader                , GLL, GLC,  x ,  x , 2009)
>>   EXT(ARB_texture_barrier                     , 
>> NV_texture_barrier                     , GLL, GLC,  x ,  x , 2014)
>>   EXT(ARB_texture_border_clamp                , 
>> ARB_texture_border_clamp               , GLL,  x ,  x ,  x , 2000)
>>   EXT(ARB_texture_buffer_object               , 
>> ARB_texture_buffer_object              , GLL, GLC,  x ,  x , 2008)
>>   EXT(ARB_texture_buffer_object_rgb32         , 
>> ARB_texture_buffer_object_rgb32        , GLL, GLC,  x ,  x , 2009)
>>   EXT(ARB_texture_buffer_range                , 
>> ARB_texture_buffer_range               , GLL, GLC,  x ,  x , 2012)
>>   EXT(ARB_texture_compression                 , 
>> dummy_true                             , GLL,  x ,  x ,  x , 2000)
>>   EXT(ARB_texture_compression_bptc            , 
>> ARB_texture_compression_bptc           , GLL, GLC,  x ,  x , 2010)
>>   EXT(ARB_texture_compression_rgtc            , 
>> ARB_texture_compression_rgtc           , GLL, GLC,  x ,  x , 2004)
>>   EXT(ARB_texture_cube_map                    , 
>> ARB_texture_cube_map                   , GLL,  x ,  x ,  x , 1999)
>>   EXT(ARB_texture_cube_map_array              , 
>> ARB_texture_cube_map_array             , GLL, GLC,  x ,  x , 2009)
>> diff --git a/src/mesa/state_tracker/st_extensions.c 
>> b/src/mesa/state_tracker/st_extensions.c
>> index b5622b330bb..bf73d506c17 100644
>> --- a/src/mesa/state_tracker/st_extensions.c
>> +++ b/src/mesa/state_tracker/st_extensions.c
>> @@ -1013,22 +1013,24 @@ void st_init_extensions(struct pipe_screen 
>> *screen,
>>         /* Integer textures make no sense before GLSL 1.30 */
>>         extensions->EXT_texture_integer = GL_FALSE;
>>      }
>>      consts->GLSLZeroInit = options->glsl_zero_init;
>>      consts->UniformBooleanTrue = consts->NativeIntegers ? ~0U : 
>> fui(1.0f);
>>      /* Below are the cases which cannot be moved into tables easily. */
>> +   /* The compatibility profile also requires GLSLVersionCompat >= 
>> 400. */
>>      if (screen->get_shader_param(screen, PIPE_SHADER_TESS_CTRL,
>> -                                PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0) {
>> +                                PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0 &&
>> +       (api != API_OPENGL_COMPAT || consts->GLSLVersionCompat >= 400)) {
>>         extensions->ARB_tessellation_shader = GL_TRUE;
>>      }
>>      /* What this is really checking for is the ability to support 
>> multiple
>>       * invocations of a geometry shader. There is no separate cap for 
>> that, so
>>       * we check the GLSLVersion.
>>       */
>>      if (GLSLVersion >= 400 &&
>>          screen->get_shader_param(screen, PIPE_SHADER_GEOMETRY,
>>                                   PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 
>> 0) {
>>
> 
> 


More information about the mesa-dev mailing list