[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