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.ol...@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) {



_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to