[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