st/mesa: advertise ARB_ES3_compatibility if GLSL 3.30 and ETC2 are supported
authorMarek Olšák <marek.olsak@amd.com>
Sat, 2 Aug 2014 20:32:25 +0000 (22:32 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 11 Aug 2014 19:53:57 +0000 (21:53 +0200)
docs/GL3.txt
docs/relnotes/10.3.html
src/mesa/state_tracker/st_extensions.c

index 3d610f6e120ff01ee78b3395e4a832ba2496c6bb..2143c6ffd3df82249686392496b0592dfd89b660 100644 (file)
@@ -147,7 +147,7 @@ GL 4.2, GLSL 4.20:
 GL 4.3, GLSL 4.30:
 
   GL_ARB_arrays_of_arrays                              started (Timothy)
-  GL_ARB_ES3_compatibility                             DONE (i965)
+  GL_ARB_ES3_compatibility                             DONE (all drivers that support GLSL 3.30)
   GL_ARB_clear_buffer_object                           DONE (all drivers)
   GL_ARB_compute_shader                                started (currently stalled)
   GL_ARB_copy_image                                    DONE (i965)
index f023ca6dcb5a3874f601bbccfdc0d9f0dce12fee..c0828da713dee745bb87c7401ac75f1cb31d2b21 100644 (file)
@@ -44,6 +44,7 @@ Note: some of the new features are only available with certain drivers.
 </p>
 
 <ul>
+<li>GL_ARB_ES3_compatibility on nv50, nvc0, r600, radeonsi, softpipe, llvmpipe</li>
 <li>GL_ARB_compressed_texture_pixel_storage on all drivers</li>
 <li>GL_ARB_draw_indirect on nvc0, radeonsi</li>
 <li>GL_ARB_explicit_uniform_location (all drivers that support GLSL)</li>
index 7ac484056de7527af305f9cf70c14add08ecf80e..3974adb49a4cfd8eac624f182039cdaf8e89afd6 100644 (file)
@@ -826,4 +826,32 @@ void st_init_extensions(struct st_context *st)
    }
    if (ctx->Const.MaxProgramTextureGatherComponents > 0)
       ctx->Extensions.ARB_texture_gather = GL_TRUE;
+
+   /* GL_ARB_ES3_compatibility.
+    *
+    * Assume that ES3 is supported if GLSL 3.30 is supported.
+    * (OpenGL 3.3 is a requirement for that extension.)
+    */
+   if (ctx->Const.GLSLVersion >= 330 &&
+       /* Requirements for ETC2 emulation. */
+       screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_UNORM,
+                                   PIPE_TEXTURE_2D, 0,
+                                   PIPE_BIND_SAMPLER_VIEW) &&
+       screen->is_format_supported(screen, PIPE_FORMAT_B8G8R8A8_SRGB,
+                                   PIPE_TEXTURE_2D, 0,
+                                   PIPE_BIND_SAMPLER_VIEW) &&
+       screen->is_format_supported(screen, PIPE_FORMAT_R16_UNORM,
+                                   PIPE_TEXTURE_2D, 0,
+                                   PIPE_BIND_SAMPLER_VIEW) &&
+       screen->is_format_supported(screen, PIPE_FORMAT_R16G16_UNORM,
+                                   PIPE_TEXTURE_2D, 0,
+                                   PIPE_BIND_SAMPLER_VIEW) &&
+       screen->is_format_supported(screen, PIPE_FORMAT_R16_SNORM,
+                                   PIPE_TEXTURE_2D, 0,
+                                   PIPE_BIND_SAMPLER_VIEW) &&
+       screen->is_format_supported(screen, PIPE_FORMAT_R16G16_SNORM,
+                                   PIPE_TEXTURE_2D, 0,
+                                   PIPE_BIND_SAMPLER_VIEW)) {
+      ctx->Extensions.ARB_ES3_compatibility = GL_TRUE;
+   }
 }