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

Nicolai Hähnle nhaehnle at gmail.com
Thu May 24 14:18:36 UTC 2018


On 24.05.2018 15:32, Timothy Arceri wrote:
> 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.

Fair enough.


> 
>>
>> 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) {
>>>
>>
>>


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list