summaryrefslogtreecommitdiffstats
path: root/Graphics/GLSLTools
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2019-02-21 03:39:28 +0000
committerEgor Yusov <egor.yusov@gmail.com>2019-02-21 03:39:28 +0000
commit746ad343c7dbc565ff6008e58f7b85155694842e (patch)
treef1496989b93367dc6ba167f2b9656555ffbf691c /Graphics/GLSLTools
parentUse in/out layout qualifiers when separate shader objects extension is available (diff)
downloadDiligentCore-746ad343c7dbc565ff6008e58f7b85155694842e.tar.gz
DiligentCore-746ad343c7dbc565ff6008e58f7b85155694842e.zip
Do not enable GLES extensions if they are part of the core API
Fixed bug with GLES version on Vulkan
Diffstat (limited to 'Graphics/GLSLTools')
-rw-r--r--Graphics/GLSLTools/src/GLSLSourceBuilder.cpp31
1 files changed, 24 insertions, 7 deletions
diff --git a/Graphics/GLSLTools/src/GLSLSourceBuilder.cpp b/Graphics/GLSLTools/src/GLSLSourceBuilder.cpp
index e8a2ba94..68eb9af8 100644
--- a/Graphics/GLSLTools/src/GLSLSourceBuilder.cpp
+++ b/Graphics/GLSLTools/src/GLSLSourceBuilder.cpp
@@ -68,20 +68,37 @@ String BuildGLSLSourceString(const ShaderCreationAttribs& CreationAttribs,
);
#elif PLATFORM_ANDROID || PLATFORM_IOS
- std::stringstream versionss;
- versionss << "#version " << deviceCaps.MajorVersion << deviceCaps.MinorVersion << "0 es\n";
- GLSLSource.append(versionss.str());
+ bool IsES31OrAbove = false;
+ bool IsES32OrAbove = false;
+ if (deviceCaps.DevType == DeviceType::Vulkan)
+ {
+ IsES31OrAbove = true;
+ IsES32OrAbove = false;
+ GLSLSource.append("#version 310 es\n");
+ }
+ else if (deviceCaps.DevType == DeviceType::OpenGLES)
+ {
+ IsES31OrAbove = deviceCaps.MajorVersion > 3 || deviceCaps.MajorVersion == 3 && deviceCaps.MinorVersion >= 1;
+ IsES32OrAbove = deviceCaps.MajorVersion > 3 || deviceCaps.MajorVersion == 3 && deviceCaps.MinorVersion >= 2;
+ std::stringstream versionss;
+ versionss << "#version " << deviceCaps.MajorVersion << deviceCaps.MinorVersion << "0 es\n";
+ GLSLSource.append(versionss.str());
+ }
+ else
+ {
+ UNEXPECTED("Unexpected device type");
+ }
- if (deviceCaps.bSeparableProgramSupported)
+ if (deviceCaps.bSeparableProgramSupported && !IsES31OrAbove)
GLSLSource.append("#extension GL_EXT_separate_shader_objects : enable\n");
- if (deviceCaps.TexCaps.bCubemapArraysSupported)
+ if (deviceCaps.TexCaps.bCubemapArraysSupported && !IsES32OrAbove)
GLSLSource.append("#extension GL_EXT_texture_cube_map_array : enable\n");
- if (ShaderType == SHADER_TYPE_GEOMETRY)
+ if (ShaderType == SHADER_TYPE_GEOMETRY && !IsES32OrAbove)
GLSLSource.append("#extension GL_EXT_geometry_shader : enable\n");
- if (ShaderType == SHADER_TYPE_HULL || ShaderType == SHADER_TYPE_DOMAIN)
+ if ((ShaderType == SHADER_TYPE_HULL || ShaderType == SHADER_TYPE_DOMAIN) && !IsES32OrAbove)
GLSLSource.append("#extension GL_EXT_tessellation_shader : enable\n");
GLSLSource.append(