[Mesa-dev] [PATCH 8/8] mesa: expose ARB_tessellation_shader in the compatibility profile
Nicolai Hähnle
nhaehnle at gmail.com
Thu May 24 08:41:31 UTC 2018
What about selection and feedback mode for geometry shaders and
tessellation?
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