diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2019-02-21 03:39:28 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2019-02-21 03:39:28 +0000 |
| commit | 746ad343c7dbc565ff6008e58f7b85155694842e (patch) | |
| tree | f1496989b93367dc6ba167f2b9656555ffbf691c /Graphics/GLSLTools | |
| parent | Use in/out layout qualifiers when separate shader objects extension is available (diff) | |
| download | DiligentCore-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.cpp | 31 |
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( |
