mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-19 13:32:59 +01:00
Use m_gles3 flag more extensively (instead of compile-time ES version) (#2665)
This commit is contained in:
committed by
GitHub
parent
08cd17e3b8
commit
c0729cb09b
@@ -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) );
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user