From 2507532623b17a176cd3110608f5d977a760cce8 Mon Sep 17 00:00:00 2001 From: "tabi.katalin" Date: Thu, 21 Feb 2019 14:45:39 +0100 Subject: [PATCH] Fix GLES shader compile errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Detected two shader compile errors while replaying GLES apps: 1. „#extension directive must occur before any non-preprocessor token” - Fix the order of precisions and extensions in the shader code. 2. „extension 'GL_OES_texture_cube_map_array' is not supported” - Do not add extensions if they are actually not supported. TEXTURE_CUBE_MAP_ARRAY was added to GLES 3.2 so GL_OES_texture_cube_map_array and GL_EXT_texture_cube_map_array are no longer used. --- renderdoc/data/glsl/glsl_globals.h | 2 ++ renderdoc/data/glsl/trisize.geom | 4 ++-- renderdoc/data/glsl_shaders.cpp | 4 +--- renderdoc/driver/gl/gl_common.h | 4 ++-- renderdoc/driver/gl/gl_debug.cpp | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/renderdoc/data/glsl/glsl_globals.h b/renderdoc/data/glsl/glsl_globals.h index 2af835f89..5325e98eb 100644 --- a/renderdoc/data/glsl/glsl_globals.h +++ b/renderdoc/data/glsl/glsl_globals.h @@ -56,6 +56,8 @@ #define PRECISION #else #define PRECISION highp +precision highp float; +precision highp int; #endif #ifndef FLT_EPSILON diff --git a/renderdoc/data/glsl/trisize.geom b/renderdoc/data/glsl/trisize.geom index 45512a178..371fdfaf1 100644 --- a/renderdoc/data/glsl/trisize.geom +++ b/renderdoc/data/glsl/trisize.geom @@ -22,13 +22,13 @@ * THE SOFTWARE. ******************************************************************************/ -#include "glsl_globals.h" - #if defined(OPENGL_ES) #extension GL_EXT_geometry_shader : enable #extension GL_OES_geometry_shader : enable #endif +#include "glsl_globals.h" + layout(triangles) in; layout(triangle_strip, max_vertices = 3) out; diff --git a/renderdoc/data/glsl_shaders.cpp b/renderdoc/data/glsl_shaders.cpp index eeafea8ce..e491d4723 100644 --- a/renderdoc/data/glsl_shaders.cpp +++ b/renderdoc/data/glsl_shaders.cpp @@ -98,9 +98,7 @@ std::string GenerateGLSLShader(const std::string &shader, ShaderType type, int v if(type == eShaderGLSLES) combined += "#define OPENGL 1\n" - "#define OPENGL_ES 1\n" - "precision highp float;\n" - "precision highp int;\n"; + "#define OPENGL_ES 1\n"; else if(type == eShaderGLSL) combined += "#define OPENGL 1\n" diff --git a/renderdoc/driver/gl/gl_common.h b/renderdoc/driver/gl/gl_common.h index e728ff35f..b07e15b9b 100644 --- a/renderdoc/driver/gl/gl_common.h +++ b/renderdoc/driver/gl/gl_common.h @@ -734,8 +734,8 @@ extern bool IsGLES; EXT_TO_CHECK(99, 32, EXT_primitive_bounding_box) \ EXT_TO_CHECK(99, 32, OES_primitive_bounding_box) \ EXT_TO_CHECK(99, 32, OES_texture_border_color) \ - EXT_TO_CHECK(99, 32, EXT_texture_cube_map_array) \ - EXT_TO_CHECK(99, 32, OES_texture_cube_map_array) \ + EXT_TO_CHECK(99, 99, EXT_texture_cube_map_array) \ + EXT_TO_CHECK(99, 99, OES_texture_cube_map_array) \ EXT_TO_CHECK(99, 32, OES_texture_storage_multisample_2d_array) \ EXT_TO_CHECK(99, 99, EXT_clip_cull_distance) \ EXT_TO_CHECK(99, 99, EXT_multisample_compatibility) \ diff --git a/renderdoc/driver/gl/gl_debug.cpp b/renderdoc/driver/gl/gl_debug.cpp index 6d58bd79a..b66863239 100644 --- a/renderdoc/driver/gl/gl_debug.cpp +++ b/renderdoc/driver/gl/gl_debug.cpp @@ -332,7 +332,7 @@ void GLReplay::InitDebugData() if(GLCoreVersion >= 32) glslVersion = glslBaseVer = glslCSVer = 320; - if(HasExt[OES_texture_cube_map_array] || HasExt[EXT_texture_cube_map_array]) + if(HasExt[OES_texture_cube_map_array] || HasExt[EXT_texture_cube_map_array] || GLCoreVersion >= 32) texSampleDefines += "#define TEXSAMPLE_CUBE_ARRAY 1\n"; if(HasExt[OES_texture_cube_map_array])