mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-17 20:52:36 +01:00
Fix GpuShader5 extension on Intel and support 'bitsTo' functions (#2118)
GpuShader5 extension isn't supported on fragment shaders. Bumps the GLSL version to support the 'bitsTo' functions when present on the shader.
This commit is contained in:
@@ -6135,7 +6135,12 @@ namespace bgfx { namespace gl
|
|||||||
&& !bx::findIdentifierMatch(code, s_EXT_gpu_shader4).isEmpty()
|
&& !bx::findIdentifierMatch(code, s_EXT_gpu_shader4).isEmpty()
|
||||||
;
|
;
|
||||||
|
|
||||||
const bool usesGpuShader5 = !bx::findIdentifierMatch(code, s_ARB_gpu_shader5).isEmpty();
|
// GpuShader5 extension is not supported on the fragment shader!
|
||||||
|
const bool usesGpuShader5 = true
|
||||||
|
&& m_type != GL_FRAGMENT_SHADER
|
||||||
|
&& !bx::findIdentifierMatch(code, s_ARB_gpu_shader5).isEmpty()
|
||||||
|
;
|
||||||
|
|
||||||
const bool usesIUsamplers = !bx::findIdentifierMatch(code, s_uisamplers).isEmpty();
|
const bool usesIUsamplers = !bx::findIdentifierMatch(code, s_uisamplers).isEmpty();
|
||||||
const bool usesUint = !bx::findIdentifierMatch(code, s_uint).isEmpty();
|
const bool usesUint = !bx::findIdentifierMatch(code, s_uint).isEmpty();
|
||||||
const bool usesTexelFetch = !bx::findIdentifierMatch(code, s_texelFetch).isEmpty();
|
const bool usesTexelFetch = !bx::findIdentifierMatch(code, s_texelFetch).isEmpty();
|
||||||
|
|||||||
@@ -1965,7 +1965,14 @@ namespace bgfx
|
|||||||
const bx::StringView preprocessedInput(preprocessor.m_preprocessed.c_str() );
|
const bx::StringView preprocessedInput(preprocessor.m_preprocessed.c_str() );
|
||||||
|
|
||||||
if (!bx::strFind(preprocessedInput, "layout(std430").isEmpty()
|
if (!bx::strFind(preprocessedInput, "layout(std430").isEmpty()
|
||||||
|| !bx::strFind(preprocessedInput, "image2D").isEmpty() )
|
|| !bx::strFind(preprocessedInput, "image2D").isEmpty()
|
||||||
|
|| (_options.shaderType == 'f'
|
||||||
|
&& (!bx::strFind(preprocessedInput, "floatBitsToUint").isEmpty() ||
|
||||||
|
!bx::strFind(preprocessedInput, "floatBitsToInt").isEmpty() ||
|
||||||
|
!bx::strFind(preprocessedInput, "intBitsToFloat").isEmpty() ||
|
||||||
|
!bx::strFind(preprocessedInput, "uintBitsToFloat").isEmpty()
|
||||||
|
) )
|
||||||
|
)
|
||||||
{
|
{
|
||||||
glsl = 430;
|
glsl = 430;
|
||||||
}
|
}
|
||||||
@@ -1976,9 +1983,14 @@ namespace bgfx
|
|||||||
|| !bx::findIdentifierMatch(input, s_ARB_shader_texture_lod).isEmpty()
|
|| !bx::findIdentifierMatch(input, s_ARB_shader_texture_lod).isEmpty()
|
||||||
|| !bx::findIdentifierMatch(input, s_EXT_shader_texture_lod).isEmpty()
|
|| !bx::findIdentifierMatch(input, s_EXT_shader_texture_lod).isEmpty()
|
||||||
;
|
;
|
||||||
|
|
||||||
|
const bool usesGpuShader5 = true
|
||||||
|
&& _options.shaderType != 'f'
|
||||||
|
&& !bx::findIdentifierMatch(input, s_ARB_gpu_shader5).isEmpty()
|
||||||
|
;
|
||||||
|
|
||||||
const bool usesInstanceID = !bx::findIdentifierMatch(input, "gl_InstanceID").isEmpty();
|
const bool usesInstanceID = !bx::findIdentifierMatch(input, "gl_InstanceID").isEmpty();
|
||||||
const bool usesGpuShader4 = !bx::findIdentifierMatch(input, s_EXT_gpu_shader4).isEmpty();
|
const bool usesGpuShader4 = !bx::findIdentifierMatch(input, s_EXT_gpu_shader4).isEmpty();
|
||||||
const bool usesGpuShader5 = !bx::findIdentifierMatch(input, s_ARB_gpu_shader5).isEmpty();
|
|
||||||
const bool usesTexelFetch = !bx::findIdentifierMatch(input, s_texelFetch).isEmpty();
|
const bool usesTexelFetch = !bx::findIdentifierMatch(input, s_texelFetch).isEmpty();
|
||||||
const bool usesTextureMS = !bx::findIdentifierMatch(input, s_ARB_texture_multisample).isEmpty();
|
const bool usesTextureMS = !bx::findIdentifierMatch(input, s_ARB_texture_multisample).isEmpty();
|
||||||
const bool usesTextureArray = !bx::findIdentifierMatch(input, s_textureArray).isEmpty();
|
const bool usesTextureArray = !bx::findIdentifierMatch(input, s_textureArray).isEmpty();
|
||||||
|
|||||||
Reference in New Issue
Block a user