Use m_gles3 flag more extensively (instead of compile-time ES version) (#2665)

This commit is contained in:
Christophe Dehais
2021-11-19 16:26:47 +01:00
committed by GitHub
parent 08cd17e3b8
commit c0729cb09b

View File

@@ -2225,8 +2225,6 @@ namespace bgfx { namespace gl
m_glslVersion = getGLString(GL_SHADING_LANGUAGE_VERSION);
{
int32_t glVersion = 0;
if (BX_ENABLED(BX_PLATFORM_EMSCRIPTEN) )
{
int32_t majorGlVersion = 0;
@@ -2240,15 +2238,16 @@ namespace bgfx { namespace gl
bx::fromString(&majorGlVersion, version);
bx::fromString(&minorGlVersion, version + 2);
glVersion = majorGlVersion*10 + minorGlVersion;
int32_t glVersion = majorGlVersion*10 + minorGlVersion;
BX_TRACE("WebGL context version %d (%d.%d).", glVersion, majorGlVersion, minorGlVersion);
}
m_gles3 = false
|| BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30)
|| (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES) && glVersion >= 30)
;
m_gles3 = glVersion >= 30;
}
else
{
m_gles3 = BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30);
}
}
for (uint32_t ii = 0; ii < BX_COUNTOF(s_vendorIds); ++ii)
@@ -2873,7 +2872,7 @@ namespace bgfx { namespace gl
|| s_extension[Extension::ARB_sampler_objects].m_supported
);
m_shadowSamplersSupport = !!(BGFX_CONFIG_RENDERER_OPENGL || BGFX_CONFIG_RENDERER_OPENGLES >= 30)
m_shadowSamplersSupport = !!(BGFX_CONFIG_RENDERER_OPENGL || m_gles3)
|| s_extension[Extension::EXT_shadow_samplers].m_supported
;
@@ -3350,8 +3349,7 @@ namespace bgfx { namespace gl
, at[0].mip
) );
if (!BX_ENABLED(BX_PLATFORM_EMSCRIPTEN)
&& !BX_ENABLED(BX_PLATFORM_IOS) )
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || m_gles3)
{
GL_CHECK(glReadBuffer(GL_COLOR_ATTACHMENT0) );
}
@@ -3618,7 +3616,7 @@ namespace bgfx { namespace gl
if (!BX_ENABLED(BX_PLATFORM_OSX) )
{
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL)
|| BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30) )
|| m_gles3 )
{
if (m_samplerObjectSupport)
{
@@ -3819,7 +3817,7 @@ namespace bgfx { namespace gl
GL_CHECK(glRenderbufferStorageMultisample(GL_RENDERBUFFER, _msaa, GL_DEPTH24_STENCIL8, _width, _height) );
GL_CHECK(glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_msaaBackBufferRbos[0]) );
GLenum attachment = BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30)
GLenum attachment = BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || m_gles3
? GL_DEPTH_STENCIL_ATTACHMENT
: GL_DEPTH_ATTACHMENT
;
@@ -3862,7 +3860,7 @@ namespace bgfx { namespace gl
GL_CHECK(glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0) );
uint32_t width = m_resolution.width;
uint32_t height = m_resolution.height;
GLenum filter = BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES < 30)
GLenum filter = BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || !m_gles3
? GL_NEAREST
: GL_LINEAR
;
@@ -3913,7 +3911,7 @@ namespace bgfx { namespace gl
void invalidateCache()
{
if ( (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30) )
if ( (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || m_gles3)
&& m_samplerObjectSupport)
{
m_samplerStateCache.invalidate();
@@ -3922,7 +3920,7 @@ namespace bgfx { namespace gl
void setSamplerState(uint32_t _stage, uint32_t _numMips, uint32_t _flags, const float _rgba[4])
{
if ( (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30) )
if ( (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || m_gles3)
&& m_samplerObjectSupport)
{
if (0 == (BGFX_SAMPLER_INTERNAL_DEFAULT & _flags) )
@@ -4004,7 +4002,7 @@ namespace bgfx { namespace gl
GL_CHECK(glSamplerParameterf(sampler, GL_TEXTURE_MAX_ANISOTROPY_EXT, m_maxAnisotropy) );
}
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30)
if (m_gles3
|| m_shadowSamplersSupport)
{
const uint32_t cmpFunc = (_flags&BGFX_SAMPLER_COMPARE_MASK)>>BGFX_SAMPLER_COMPARE_SHIFT;
@@ -5165,7 +5163,7 @@ namespace bgfx { namespace gl
GL_CHECK(glVertexAttribDivisor(loc, 0) );
uint32_t baseVertex = _baseVertex*_layout.m_stride + _layout.m_offset[attr];
if ( (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL >= 30) || BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 31) )
if ( (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL >= 30) || s_renderGL->m_gles3)
&& (AttribType::Uint8 == type || AttribType::Int16 == type)
&& !normalized)
{
@@ -5383,7 +5381,7 @@ namespace bgfx { namespace gl
, _height
) );
}
else if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL || BGFX_CONFIG_RENDERER_OPENGLES >= 30) )
else if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || s_renderGL->m_gles3)
{
GL_CHECK(glRenderbufferStorageMultisample(GL_RENDERBUFFER
, msaaQuality
@@ -5793,7 +5791,7 @@ namespace bgfx { namespace gl
void TextureGL::setSamplerState(uint32_t _flags, const float _rgba[4])
{
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES < 30)
if (!s_renderGL->m_gles3
&& !s_textureFilter[m_textureFormat])
{
// Force point sampling when texture format doesn't support linear sampling.
@@ -5836,7 +5834,7 @@ namespace bgfx { namespace gl
GL_CHECK(glTexParameteri(target, GL_TEXTURE_WRAP_S, s_textureAddress[(flags&BGFX_SAMPLER_U_MASK)>>BGFX_SAMPLER_U_SHIFT]) );
GL_CHECK(glTexParameteri(target, GL_TEXTURE_WRAP_T, s_textureAddress[(flags&BGFX_SAMPLER_V_MASK)>>BGFX_SAMPLER_V_SHIFT]) );
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL || BGFX_CONFIG_RENDERER_OPENGLES >= 30)
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || s_renderGL->m_gles3
|| s_extension[Extension::APPLE_texture_max_level].m_supported)
{
GL_CHECK(glTexParameteri(targetMsaa, GL_TEXTURE_MAX_LEVEL, numMips-1) );
@@ -5870,7 +5868,7 @@ namespace bgfx { namespace gl
GL_CHECK(glTexParameterf(target, GL_TEXTURE_MAX_ANISOTROPY_EXT, s_renderGL->m_maxAnisotropy) );
}
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30)
if (s_renderGL->m_gles3
|| s_renderGL->m_shadowSamplersSupport)
{
const uint32_t cmpFunc = (flags&BGFX_SAMPLER_COMPARE_MASK)>>BGFX_SAMPLER_COMPARE_SHIFT;
@@ -5901,7 +5899,7 @@ namespace bgfx { namespace gl
GL_CHECK(glBindTexture(m_target, m_id) );
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES)
&& BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES < 30) )
&& !s_renderGL->m_gles3)
{
// GLES2 doesn't have support for sampler object.
setSamplerState(flags, _palette[index]);
@@ -6569,7 +6567,7 @@ namespace bgfx { namespace gl
);
}
if (!BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30) )
if (!s_renderGL->m_gles3)
{
bx::write(&writer
, "#define lowp\n"
@@ -6730,8 +6728,8 @@ namespace bgfx { namespace gl
if (0 != texture.m_rbo)
{
#if !(BGFX_CONFIG_RENDERER_OPENGL >= 30 || BGFX_CONFIG_RENDERER_OPENGLES >= 30)
if (GL_DEPTH_STENCIL_ATTACHMENT == attachment)
if (!(BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL >= 30) || s_renderGL->m_gles3)
&& GL_DEPTH_STENCIL_ATTACHMENT == attachment)
{
GL_CHECK(glFramebufferRenderbuffer(GL_FRAMEBUFFER
, GL_DEPTH_ATTACHMENT
@@ -6745,7 +6743,6 @@ namespace bgfx { namespace gl
) );
}
else
#endif
{
GL_CHECK(glFramebufferRenderbuffer(GL_FRAMEBUFFER
, attachment
@@ -6801,7 +6798,7 @@ namespace bgfx { namespace gl
m_num = uint8_t(colorIdx);
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL || BGFX_CONFIG_RENDERER_OPENGLES >= 31) )
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || s_renderGL->m_gles3 )
{
if (0 == colorIdx)
{
@@ -6981,7 +6978,10 @@ namespace bgfx { namespace gl
}
GL_CHECK(glBindFramebuffer(GL_READ_FRAMEBUFFER, m_fbo[0]) );
GL_CHECK(glReadBuffer(GL_NONE) );
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || s_renderGL->m_gles3)
{
GL_CHECK(glReadBuffer(GL_NONE) );
}
GL_CHECK(glBindFramebuffer(GL_FRAMEBUFFER, s_renderGL->m_msaaBackBufferFbo) );
}