Hi Mark,

Can you try the attached patches instead?

Thanks,
Marek

On Wed, Nov 1, 2017 at 9:49 PM, Mark Janes <mark.a.ja...@intel.com> wrote:
> Dylan Baker <dy...@pnwbakers.com> writes:
>
>> I haven't run the CTS tests, but both the deqp and the piglit test pass on my
>> skl with Marek's patches applied.
>
> I must have tested with only the patch 2 applied.  Running with all
> three patches in the series, I see no piglit/deqp regressions.
>
> However, GLES CTS fails thousands of ES31-CTS.functional.texture tests,
> eg:
>
> ES31-CTS.functional.texture.format.buffer.rg8i_npot
> glGetIntegerv() failed: glGetError() returned GL_INVALID_ENUM at 
> gluContextInfo.cpp:229
>
> -Mark
>
>>
>> Dylan
>>
>> Quoting Marek Olšák (2017-10-31 18:16:51)
>>> This is how I run piglit on i965:
>>> WAFFLE_GBM_DEVICE=/dev/dri/renderD128 PIGLIT_PLATFORM=gbm 
>>> piglit/bin/glinfo|head
>>> GL_RENDERER = Mesa DRI Intel(R) Ivybridge Desktop
>>>
>>> Of course I have Radeon as my main GPU.
>>>
>>> Marek
>>>
>>> On Wed, Nov 1, 2017 at 12:52 AM, Mark Janes <mark.a.ja...@intel.com> wrote:
>>> > No, please don't.  We can't have thousands of failures added to CI.
>>> >
>>> > Dylan, can you double check this for Marek?  I'm surprised that it
>>> > doesn't reproduce for him.
>>> >
>>> > -Mark
>>> >
>>> > Marek Olšák <mar...@gmail.com> writes:
>>> >
>>> >> I can't reproduce the issue on my IVB. How about I just push this and
>>> >> you guys fix i965 when you have time?
>>> >>
>>> >> Marek
>>> >>
>>> >> On Thu, Oct 26, 2017 at 5:46 PM, Mark Janes <mark.a.ja...@intel.com> 
>>> >> wrote:
>>> >>> That fixed many issues, but:
>>> >>>
>>> >>> On deqp EGL tests, we get:
>>> >>>
>>> >>> dEQP-EGL.functional.create_context_ext.gl_42.rgba8888_no_depth_no_stencil
>>> >>> deqp-egl: main/api_exec.c:135: _mesa_initialize_exec_table: Assertion 
>>> >>> `ctx->Version > 0' failed.
>>> >>>
>>> >>> On ES31 CTS tests:
>>> >>> ES31-CTS.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture_as_fragment_texture.range_size_513
>>> >>> glGetIntegerv() failed: glGetError() returned GL_INVALID_ENUM at
>>> >>> gluContextInfo.cpp:229
>>> >>>
>>> >>> on GL46 CTS (27 failures):
>>> >>> src/mesa/main/teximage.c:595: _mesa_tex_target_is_layered: Assertion
>>> >>> `!"Invalid texture target."' failed.
>>> >>>
>>> >>> Piglit fails 3.5k tests with the same `ctx->Version > 0' assertion as
>>> >>> deqp-egl.
>>> >>>
>>> >>> -Mark
>>> >>>
>>> >>> Dylan Baker <dy...@pnwbakers.com> writes:
>>> >>>
>>> >>>> I've pushed it to our CI, I'll let you know tomorrow what it looks like
>>> >>>>
>>> >>>> Dylan
>>> >>>>
>>> >>>> Quoting Marek Olšák (2017-10-25 19:52:43)
>>> >>>>> Hi Dylan,
>>> >>>>>
>>> >>>>> Can you please add this and re-test?
>>> >>>>>
>>> >>>>> diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c 
>>> >>>>> b/src/mesa/drivers/
>>> >>>>> dri/i965/intel_extensions.c
>>> >>>>> index 21cf632..4d17393 100644
>>> >>>>> --- a/src/mesa/drivers/dri/i965/intel_extensions.c
>>> >>>>> +++ b/src/mesa/drivers/dri/i965/intel_extensions.c
>>> >>>>> @@ -178,7 +178,7 @@ intelInitExtensions(struct gl_context *ctx)
>>> >>>>>        ctx->Extensions.ARB_pipeline_statistics_query = true;
>>> >>>>>        ctx->Extensions.ARB_sample_shading = true;
>>> >>>>>        ctx->Extensions.ARB_shading_language_420pack = true;
>>> >>>>> -      if (ctx->API == API_OPENGL_CORE) {
>>> >>>>> +      if (ctx->API != API_OPENGL_COMPAT) {
>>> >>>>>           ctx->Extensions.ARB_texture_buffer_object = true;
>>> >>>>>           ctx->Extensions.ARB_texture_buffer_object_rgb32 = true;
>>> >>>>>           ctx->Extensions.ARB_texture_buffer_range = true;
>>> >>>>>
>>> >>>>>
>>> >>>>> Marek
>>> >>>>>
>>> >>>>> On Wed, Oct 25, 2017 at 11:42 PM, Dylan Baker 
>>> >>>>> <dylanx.c.ba...@intel.com> wrote:
>>> >>>>>
>>> >>>>>     There are a significant number of i965 regressions from
>>> >>>>>     d96c68146a781c79a23f5181d7050174f1070d90, largely related to 
>>> >>>>> texturing (I
>>> >>>>>     can
>>> >>>>>     send you a complete list of regressions if you care, but due to 
>>> >>>>> the large
>>> >>>>>     number
>>> >>>>>     of them I suspect it's something fairly simple).
>>> >>>>>
>>> >>>>>     For example:
>>> >>>>>     ES31-CTS.functional.texture.format.buffer.r32ui_npot
>>> >>>>>
>>> >>>>>     glGetIntegerv() failed: glGetError() returned GL_INVALID_ENUM at
>>> >>>>>     gluContextInfo.cpp:229
>>> >>>>>
>>> >>>>>     dEQP-GLES31.functional.state_query.integer.texture_buffer_
>>> >>>>>     binding_getinteger:
>>> >>>>>
>>> >>>>>     glGetIntegerv(GL_TEXTURE_BUFFER_BINDING, 0x00007ffee0c43834);
>>> >>>>>     // data = { -555819298 }
>>> >>>>>     glGetError();
>>> >>>>>     // GL_INVALID_ENUM returned
>>> >>>>>      // ERROR: glGetIntegerv: glGetError() returned GL_INVALID_ENUM
>>> >>>>>
>>> >>>>>     Dylan
>>> >>>>>
>>> >>>>>     Quoting Emil Velikov (2017-10-24 09:30:03)
>>> >>>>>     > Hi Marek,
>>> >>>>>     >
>>> >>>>>     > On 21 October 2017 at 13:54, Marek Olšák <mar...@gmail.com> 
>>> >>>>> wrote:
>>> >>>>>     > > From: Marek Olšák <marek.ol...@amd.com>
>>> >>>>>     > >
>>> >>>>>     > > We already have piglit tests testing alpha, luminance, and 
>>> >>>>> intensity
>>> >>>>>     > > formats. They were skipped by piglit until now.
>>> >>>>>     > >
>>> >>>>>     > > Additionally, I'm enabling one ARB_texture_buffer_range 
>>> >>>>> piglit test to
>>> >>>>>     run
>>> >>>>>     > > with the compat profile.
>>> >>>>>     >
>>> >>>>>     > Can you please mention that ARB_texture_buffer_* on i965 is 
>>> >>>>> unchanged
>>> >>>>>     > - aka still enabled only for core profiles.
>>> >>>>>     > Out of curiosity - can you tried the series with anything more 
>>> >>>>> than
>>> >>>>>     piglit?
>>> >>>>>     >
>>> >>>>>     > The Intel guys can run the lot through CTS, dEQP... admittedly 
>>> >>>>> only on
>>> >>>>>     > Intel hardware.
>>> >>>>>     > Still it should help catch if a piece is missing somewhere.
>>> >>>>>     >
>>> >>>>>     >
>>> >>>>>     > -Emil
>>> >>>>>     > _______________________________________________
>>> >>>>>     > mesa-dev mailing list
>>> >>>>>     > mesa-dev@lists.freedesktop.org
>>> >>>>>     > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>> >>>>>
>>> >>>>>
From 1881027bf1840e4c83f31d30175ef2d1d11d2f8f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= <marek.ol...@amd.com>
Date: Thu, 19 Oct 2017 22:22:15 +0200
Subject: [PATCH 1/2] mesa: enable ARB_texture_buffer_* extensions in the
 Compatibility profile
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

We already have piglit tests testing alpha, luminance, and intensity
formats. They were skipped by piglit until now.

Additionally, I'm enabling one ARB_texture_buffer_range piglit test to run
with the compat profile.

i965 behavior is unchanged.

Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>
Reviewed-by: Eric Anholt <e...@anholt.net>
---
 src/mapi/glapi/gen/apiexec.py                | 12 +++++-------
 src/mesa/drivers/dri/i965/intel_extensions.c |  8 +++++---
 src/mesa/main/extensions_table.h             |  6 +++---
 src/mesa/main/get.c                          |  2 --
 src/mesa/main/get_hash_params.py             | 20 ++++++++++----------
 src/mesa/main/tests/dispatch_sanity.cpp      |  8 ++++----
 src/mesa/main/texparam.c                     |  4 ++--
 src/mesa/state_tracker/st_context.c          |  2 +-
 src/mesa/state_tracker/st_extensions.c       |  8 +++++++-
 src/mesa/state_tracker/st_extensions.h       |  3 ++-
 src/mesa/state_tracker/st_manager.c          |  2 +-
 11 files changed, 40 insertions(+), 35 deletions(-)

diff --git a/src/mapi/glapi/gen/apiexec.py b/src/mapi/glapi/gen/apiexec.py
index 61eda4b..7da0818 100644
--- a/src/mapi/glapi/gen/apiexec.py
+++ b/src/mapi/glapi/gen/apiexec.py
@@ -35,7 +35,7 @@ class exec_info():
     Each of the attributes that is not None must have a valid value.  The
     valid ranges are:
 
-        compatiblity: [10, 30]
+        compatibility: [10, )
         core: [31, )
         es1: [10, 11]
         es2: [20, )
@@ -66,9 +66,8 @@ class exec_info():
         self.es2 = es2
 
 functions = {
-    # OpenGL 3.1 / GL_ARB_texture_buffer_object.  Mesa only exposes this
-    # extension with core profile.
-    "TexBuffer": exec_info(core=31, es2=31),
+    # OpenGL 3.1 / GL_ARB_texture_buffer_object.
+    "TexBuffer": exec_info(compatibility=20, core=31, es2=31),
 
     # OpenGL 3.2 / GL_OES_geometry_shader.
     "FramebufferTexture": exec_info(core=32, es2=31),
@@ -144,9 +143,8 @@ functions = {
     # GetFloati_v also GL_ARB_shader_atomic_counters
     # GetDoublei_v also GL_ARB_shader_atomic_counters
 
-    # OpenGL 4.3 / GL_ARB_texture_buffer_range.  Mesa can expose the extension
-    # with OpenGL 3.1.
-    "TexBufferRange": exec_info(core=31, es2=31),
+    # OpenGL 4.3 / GL_ARB_texture_buffer_range.
+    "TexBufferRange": exec_info(compatibility=20, core=31, es2=31),
 
     # OpenGL 4.3 / GL_ARB_framebuffer_no_attachments.  Mesa can expose the
     # extension with OpenGL 3.0.
diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c b/src/mesa/drivers/dri/i965/intel_extensions.c
index 519d0a5..4d17393 100644
--- a/src/mesa/drivers/dri/i965/intel_extensions.c
+++ b/src/mesa/drivers/dri/i965/intel_extensions.c
@@ -178,9 +178,11 @@ intelInitExtensions(struct gl_context *ctx)
       ctx->Extensions.ARB_pipeline_statistics_query = true;
       ctx->Extensions.ARB_sample_shading = true;
       ctx->Extensions.ARB_shading_language_420pack = true;
-      ctx->Extensions.ARB_texture_buffer_object = true;
-      ctx->Extensions.ARB_texture_buffer_object_rgb32 = true;
-      ctx->Extensions.ARB_texture_buffer_range = true;
+      if (ctx->API != API_OPENGL_COMPAT) {
+         ctx->Extensions.ARB_texture_buffer_object = true;
+         ctx->Extensions.ARB_texture_buffer_object_rgb32 = true;
+         ctx->Extensions.ARB_texture_buffer_range = true;
+      }
       ctx->Extensions.ARB_texture_cube_map_array = true;
       ctx->Extensions.ARB_texture_gather = true;
       ctx->Extensions.ARB_texture_multisample = true;
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index 8d8b637..5b66e7d 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -133,9 +133,9 @@ EXT(ARB_sync                                , ARB_sync
 EXT(ARB_tessellation_shader                 , ARB_tessellation_shader                ,  x , 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              ,  x , GLC,  x ,  x , 2008)
-EXT(ARB_texture_buffer_object_rgb32         , ARB_texture_buffer_object_rgb32        ,  x , GLC,  x ,  x , 2009)
-EXT(ARB_texture_buffer_range                , ARB_texture_buffer_range               ,  x , GLC,  x ,  x , 2012)
+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)
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index e68a93b..ea8d932 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -309,8 +309,6 @@ static const int extra_GLSL_130_es3[] = {
 };
 
 static const int extra_texture_buffer_object[] = {
-   EXTRA_API_GL_CORE,
-   EXTRA_VERSION_31,
    EXT(ARB_texture_buffer_object),
    EXTRA_END
 };
diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
index acd5cd1..20ef6e4 100644
--- a/src/mesa/main/get_hash_params.py
+++ b/src/mesa/main/get_hash_params.py
@@ -442,6 +442,16 @@ descriptor=[
 
 # Enums in OpenGL and ES 3.1
 { "apis": ["GL", "GL_CORE", "GLES31"], "params": [
+# GL_ARB_texture_buffer_object / GL_OES_texture_buffer
+  [ "MAX_TEXTURE_BUFFER_SIZE_ARB", "CONTEXT_INT(Const.MaxTextureBufferSize), extra_texture_buffer_object" ],
+  [ "TEXTURE_BINDING_BUFFER_ARB", "LOC_CUSTOM, TYPE_INT, 0, extra_texture_buffer_object" ],
+  [ "TEXTURE_BUFFER_DATA_STORE_BINDING_ARB", "LOC_CUSTOM, TYPE_INT, TEXTURE_BUFFER_INDEX, extra_texture_buffer_object" ],
+  [ "TEXTURE_BUFFER_FORMAT_ARB", "LOC_CUSTOM, TYPE_INT, 0, extra_texture_buffer_object" ],
+  [ "TEXTURE_BUFFER_ARB", "LOC_CUSTOM, TYPE_INT, 0, extra_texture_buffer_object" ],
+
+# GL_ARB_texture_buffer_range
+  [ "TEXTURE_BUFFER_OFFSET_ALIGNMENT", "CONTEXT_INT(Const.TextureBufferOffsetAlignment), extra_ARB_texture_buffer_range" ],
+
 # GL_ARB_shader_image_load_store / GLES 3.1
   [ "MAX_IMAGE_UNITS", "CONTEXT_INT(Const.MaxImageUnits), extra_ARB_shader_image_load_store" ],
   [ "MAX_VERTEX_IMAGE_UNIFORMS", "CONTEXT_INT(Const.Program[MESA_SHADER_VERTEX].MaxImageUniforms), extra_ARB_shader_image_load_store" ],
@@ -602,16 +612,6 @@ descriptor=[
 # GL_ARB_gpu_shader5 / GL_OES_geometry_shader
   [ "MAX_GEOMETRY_SHADER_INVOCATIONS", "CONST(MAX_GEOMETRY_SHADER_INVOCATIONS), extra_ARB_gpu_shader5_or_oes_geometry_shader" ],
 
-# GL_ARB_texture_buffer_object / GL_OES_texture_buffer
-  [ "MAX_TEXTURE_BUFFER_SIZE_ARB", "CONTEXT_INT(Const.MaxTextureBufferSize), extra_texture_buffer_object" ],
-  [ "TEXTURE_BINDING_BUFFER_ARB", "LOC_CUSTOM, TYPE_INT, 0, extra_texture_buffer_object" ],
-  [ "TEXTURE_BUFFER_DATA_STORE_BINDING_ARB", "LOC_CUSTOM, TYPE_INT, TEXTURE_BUFFER_INDEX, extra_texture_buffer_object" ],
-  [ "TEXTURE_BUFFER_FORMAT_ARB", "LOC_CUSTOM, TYPE_INT, 0, extra_texture_buffer_object" ],
-  [ "TEXTURE_BUFFER_ARB", "LOC_CUSTOM, TYPE_INT, 0, extra_texture_buffer_object" ],
-
-# GL_ARB_texture_buffer_range
-  [ "TEXTURE_BUFFER_OFFSET_ALIGNMENT", "CONTEXT_INT(Const.TextureBufferOffsetAlignment), extra_ARB_texture_buffer_range" ],
-
 # GL_OES_primitive_bounding_box
   [ "PRIMITIVE_BOUNDING_BOX_ARB", "CONTEXT_FLOAT8(PrimitiveBoundingBox), extra_OES_primitive_bounding_box" ],
 
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
index 8c51180..d7183de 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -504,6 +504,10 @@ const struct function common_desktop_functions_possible[] = {
    { "glDrawArraysInstanced", 31, -1 },
    { "glDrawElementsInstanced", 31, -1 },
    { "glPrimitiveRestartIndex", 31, -1 },
+   { "glTexBuffer", 31, -1 },
+
+   /* GL_ARB_texture_buffer_range */
+   { "glTexBufferRange", 43, -1 },
 
    /* GL_ARB_shader_objects */
    { "glDeleteObjectARB", 31, -1 },
@@ -1501,9 +1505,6 @@ const struct function gl_compatibility_functions_possible[] = {
 };
 
 const struct function gl_core_functions_possible[] = {
-   /* GL 3.1 */
-   { "glTexBuffer", 31, -1 },
-
    /* GL 3.2 */
    { "glFramebufferTexture", 32, -1 },
 
@@ -1808,7 +1809,6 @@ const struct function gl_core_functions_possible[] = {
    { "glGetProgramResourceLocation", 43, -1 },
    { "glGetProgramResourceLocationIndex", 43, -1 },
 // { "glShaderStorageBlockBinding", 43, -1 },           // XXX: Add to xml
-   { "glTexBufferRange", 43, -1 },
 // { "glTextureBufferRangeEXT", 43, -1 },               // XXX: Add to xml
    { "glTexStorage2DMultisample", 43, -1 },
    { "glTexStorage3DMultisample", 43, -1 },
diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
index 039b933..4a0f61e 100644
--- a/src/mesa/main/texparam.c
+++ b/src/mesa/main/texparam.c
@@ -1287,8 +1287,8 @@ _mesa_legal_get_tex_level_parameter_target(struct gl_context *ctx, GLenum target
        * From the OpenGL 3.1 spec:
        * "target may also be TEXTURE_BUFFER, indicating the texture buffer."
        */
-      return (ctx->API == API_OPENGL_CORE && ctx->Version >= 31) ||
-         _mesa_has_OES_texture_buffer(ctx);
+      return (_mesa_is_desktop_gl(ctx) && ctx->Version >= 31) ||
+             _mesa_has_OES_texture_buffer(ctx);
    case GL_TEXTURE_CUBE_MAP_ARRAY:
       return _mesa_has_texture_cube_map_array(ctx);
    }
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index 5d8dd8b..a96e454 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -408,7 +408,7 @@ st_create_context_priv( struct gl_context *ctx, struct pipe_context *pipe,
    /* GL limits and extensions */
    st_init_limits(pipe->screen, &ctx->Const, &ctx->Extensions);
    st_init_extensions(pipe->screen, &ctx->Const,
-                      &ctx->Extensions, &st->options);
+                      &ctx->Extensions, &st->options, ctx->API);
 
    if (st_have_perfmon(st)) {
       ctx->Extensions.AMD_performance_monitor = GL_TRUE;
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index fa2d002..f21885f 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -578,7 +578,8 @@ get_max_samples_for_formats(struct pipe_screen *screen,
 void st_init_extensions(struct pipe_screen *screen,
                         struct gl_constants *consts,
                         struct gl_extensions *extensions,
-                        struct st_config_options *options)
+                        struct st_config_options *options,
+                        gl_api api)
 {
    unsigned i;
    GLboolean *extension_table = (GLboolean *) extensions;
@@ -1095,6 +1096,11 @@ void st_init_extensions(struct pipe_screen *screen,
    consts->MinMapBufferAlignment =
       screen->get_param(screen, PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT);
 
+   /* The OpenGL Compatibility profile requires arbitrary buffer swizzling. */
+   if (api == API_OPENGL_COMPAT &&
+       screen->get_param(screen, PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY))
+      extensions->ARB_texture_buffer_object = GL_FALSE;
+
    if (extensions->ARB_texture_buffer_object) {
       consts->MaxTextureBufferSize =
          _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE),
diff --git a/src/mesa/state_tracker/st_extensions.h b/src/mesa/state_tracker/st_extensions.h
index 951185c..7bf1aa8 100644
--- a/src/mesa/state_tracker/st_extensions.h
+++ b/src/mesa/state_tracker/st_extensions.h
@@ -40,7 +40,8 @@ extern void st_init_limits(struct pipe_screen *screen,
 extern void st_init_extensions(struct pipe_screen *screen,
                                struct gl_constants *consts,
                                struct gl_extensions *extensions,
-                               struct st_config_options *options);
+                               struct st_config_options *options,
+                               gl_api api);
 
 
 #endif /* ST_EXTENSIONS_H */
diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
index eebde62..dab987c 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -1168,7 +1168,7 @@ get_version(struct pipe_screen *screen,
    _mesa_init_extensions(&extensions);
 
    st_init_limits(screen, &consts, &extensions);
-   st_init_extensions(screen, &consts, &extensions, options);
+   st_init_extensions(screen, &consts, &extensions, options, api);
 
    return _mesa_get_version(&extensions, &consts, api);
 }
-- 
2.7.4

From bbcc2d52c00744324876f309227c1b8820afef60 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= <marek.ol...@amd.com>
Date: Fri, 20 Oct 2017 04:08:29 +0200
Subject: [PATCH 2/2] mesa: final changes to expose OpenGL 3.1 with
 ARB_compatibility
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>
---
 docs/relnotes/17.4.0.html              |  1 +
 src/mesa/drivers/dri/common/dri_util.c |  7 -------
 src/mesa/main/extensions_table.h       |  1 +
 src/mesa/main/mtypes.h                 |  1 +
 src/mesa/main/version.c                | 13 ++++++++-----
 5 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/docs/relnotes/17.4.0.html b/docs/relnotes/17.4.0.html
index f81b5bd..a419a74 100644
--- a/docs/relnotes/17.4.0.html
+++ b/docs/relnotes/17.4.0.html
@@ -45,6 +45,7 @@ Note: some of the new features are only available with certain drivers.
 
 <ul>
 <li>Disk shader cache support for i965 when MESA_GLSL_CACHE_DISABLE environment variable is set to "0" or "false"</li>
+<li>OpenGL 3.1 with ARB_compatibility is supported on many gallium drivers (including radeonsi).
 </ul>
 
 <h2>Bug fixes</h2>
diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c
index 1cff0dd..2af18ce 100644
--- a/src/mesa/drivers/dri/common/dri_util.c
+++ b/src/mesa/drivers/dri/common/dri_util.c
@@ -362,13 +362,6 @@ driCreateContextAttribs(__DRIscreen *screen, int api,
 	}
     }
 
-    /* Mesa does not support the GL_ARB_compatibilty extension or the
-     * compatibility profile.  This means that we treat a API_OPENGL_COMPAT 3.1 as
-     * API_OPENGL_CORE and reject API_OPENGL_COMPAT 3.2+.
-     */
-    if (mesa_api == API_OPENGL_COMPAT && major_version == 3 && minor_version == 1)
-       mesa_api = API_OPENGL_CORE;
-
     if (mesa_api == API_OPENGL_COMPAT
         && ((major_version > 3)
             || (major_version == 3 && minor_version >= 2))) {
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index 5b66e7d..2fb668e 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -40,6 +40,7 @@ EXT(ARB_clear_buffer_object                 , dummy_true
 EXT(ARB_clear_texture                       , ARB_clear_texture                      , GLL, GLC,  x ,  x , 2013)
 EXT(ARB_clip_control                        , ARB_clip_control                       , GLL, GLC,  x ,  x , 2014)
 EXT(ARB_color_buffer_float                  , ARB_color_buffer_float                 , GLL, GLC,  x ,  x , 2004)
+EXT(ARB_compatibility                       , ARB_compatibility                      , GLL,  x ,  x ,  x , 2009)
 EXT(ARB_compressed_texture_pixel_storage    , dummy_true                             , GLL, GLC,  x ,  x , 2011)
 EXT(ARB_compute_shader                      , ARB_compute_shader                     , GLL, GLC,  x ,  x , 2012)
 EXT(ARB_compute_variable_group_size         , ARB_compute_variable_group_size        , GLL, GLC,  x ,  x , 2013)
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 2acf64e..fd5306c 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -4026,6 +4026,7 @@ struct gl_extensions
    GLboolean ARB_clear_texture;
    GLboolean ARB_clip_control;
    GLboolean ARB_color_buffer_float;
+   GLboolean ARB_compatibility;
    GLboolean ARB_compute_shader;
    GLboolean ARB_compute_variable_group_size;
    GLboolean ARB_conditional_render_inverted;
diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
index 90c5c5f..06b8e4d 100644
--- a/src/mesa/main/version.c
+++ b/src/mesa/main/version.c
@@ -579,11 +579,11 @@ _mesa_get_version(const struct gl_extensions *extensions,
 {
    switch (api) {
    case API_OPENGL_COMPAT:
-      /* Disable GLSL 1.40 and later for legacy contexts.
-       * This disallows creation of the GL 3.1 compatibility context. */
+      /* Disable higher GLSL versions for legacy contexts.
+       * This disallows creation of higher compatibility contexts. */
       if (!consts->AllowHigherCompatVersion) {
-         if (consts->GLSLVersion > 130) {
-            consts->GLSLVersion = 130;
+         if (consts->GLSLVersion > 140) {
+            consts->GLSLVersion = 140;
          }
       }
       /* fall through */
@@ -611,10 +611,13 @@ _mesa_compute_version(struct gl_context *ctx)
    ctx->Version = _mesa_get_version(&ctx->Extensions, &ctx->Const, ctx->API);
    ctx->Extensions.Version = ctx->Version;
 
+   if (ctx->API == API_OPENGL_COMPAT && ctx->Version >= 31)
+      ctx->Extensions.ARB_compatibility = GL_TRUE;
+
    /* Make sure that the GLSL version lines up with the GL version. In some
     * cases it can be too high, e.g. if an extension is missing.
     */
-   if (ctx->API == API_OPENGL_CORE) {
+   if (_mesa_is_desktop_gl(ctx) && ctx->Version >= 31) {
       switch (ctx->Version) {
       case 31:
          ctx->Const.GLSLVersion = 140;
-- 
2.7.4

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

Reply via email to