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 <[email protected]>

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.
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to