diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 3980aa2c..c0090224 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -1155,6 +1155,13 @@ namespace bgfx } } + if (!isTextureFormatValid(TextureFormat::R8) ) + { + // GL core has to use GL_R8 Issue#208, GLES2 has to use GL_LUMINANCE issue#226 + s_textureFormat[TextureFormat::R8].m_internalFmt = GL_LUMINANCE; + s_textureFormat[TextureFormat::R8].m_fmt = GL_LUMINANCE; + } + if (!BX_ENABLED(BX_PLATFORM_EMSCRIPTEN) ) { for (uint32_t ii = 0; ii < TextureFormat::Count; ++ii) @@ -1253,7 +1260,7 @@ namespace bgfx || s_extension[Extension::WEBKIT_WEBGL_depth_texture].m_supported ; - g_caps.supported |= m_depthTextureSupport + g_caps.supported |= m_depthTextureSupport ? BGFX_CAPS_TEXTURE_COMPARE_LEQUAL : 0 ; @@ -1318,13 +1325,6 @@ namespace bgfx } } - if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL >= 31) - || BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30) ) - { - s_textureFormat[TextureFormat::R8].m_internalFmt = GL_R8; - s_textureFormat[TextureFormat::R8].m_fmt = GL_RED; - } - #if BGFX_CONFIG_RENDERER_OPENGL if (s_extension[Extension::ARB_debug_output].m_supported || s_extension[Extension::KHR_debug].m_supported) @@ -1819,9 +1819,9 @@ namespace bgfx 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) || BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30) ? GL_DEPTH_STENCIL_ATTACHMENT - : GL_DEPTH_ATTACHMENT + : GL_DEPTH_ATTACHMENT ; GL_CHECK(glFramebufferRenderbuffer(GL_FRAMEBUFFER, attachment, GL_RENDERBUFFER, m_msaaBackBufferRbos[1]) ); @@ -1862,8 +1862,8 @@ namespace bgfx GL_CHECK(glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0) ); uint32_t width = m_resolution.m_width; uint32_t height = m_resolution.m_height; - GLenum filter = BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES < 30) - ? GL_NEAREST + GLenum filter = BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES < 30) + ? GL_NEAREST : GL_LINEAR ; GL_CHECK(glBlitFramebuffer(0 @@ -2349,7 +2349,7 @@ namespace bgfx float m_y; float m_z; }; - + Vertex* vertex = (Vertex*)_clearQuad.m_vb->data; BX_CHECK(vertexDecl.m_stride == sizeof(Vertex), "Stride/Vertex mismatch (stride %d, sizeof(Vertex) %d)", vertexDecl.m_stride, sizeof(Vertex) ); @@ -2491,7 +2491,7 @@ namespace bgfx GLSL_TYPE(GL_INT); GLSL_TYPE(GL_INT_VEC2); GLSL_TYPE(GL_INT_VEC3); - GLSL_TYPE(GL_INT_VEC4); + GLSL_TYPE(GL_INT_VEC4); GLSL_TYPE(GL_UNSIGNED_INT); GLSL_TYPE(GL_UNSIGNED_INT_VEC2); GLSL_TYPE(GL_UNSIGNED_INT_VEC3); @@ -3166,7 +3166,7 @@ namespace bgfx const bool compressed = isCompressed(TextureFormat::Enum(m_textureFormat) ); uint32_t blockWidth = 1; uint32_t blockHeight = 1; - + if (convert && compressed) { blockWidth = blockInfo.blockWidth; @@ -3611,7 +3611,7 @@ namespace bgfx "#define noperspective\n" ); - bool usesDerivatives = s_extension[Extension::OES_standard_derivatives].m_supported + bool usesDerivatives = s_extension[Extension::OES_standard_derivatives].m_supported && bx::findIdentifierMatch(code, s_OES_standard_derivatives) ; @@ -3985,7 +3985,7 @@ namespace bgfx , 0 ) ); } - + needResolve |= (0 != texture.m_rbo) && (0 != texture.m_id); } } @@ -4072,7 +4072,7 @@ namespace bgfx uint16_t denseIdx = m_denseIdx; m_denseIdx = UINT16_MAX; - + return denseIdx; } @@ -4262,7 +4262,7 @@ namespace bgfx char* viewName = s_viewName[view]; viewName[3] = eye ? 'R' : 'L'; GL_CHECK(glInsertEventMarker(0, viewName) ); - + viewState.m_rect.m_x = eye * (viewState.m_rect.m_width+1)/2; viewState.m_rect.m_width /= 2; } @@ -4325,7 +4325,7 @@ namespace bgfx case ComputeBinding::Buffer: { const VertexBufferGL& vertexBuffer = m_vertexBuffers[bind.m_idx]; - GL_CHECK(glBindBufferBase(GL_SHADER_STORAGE_BUFFER, ii, vertexBuffer.m_id) ); + GL_CHECK(glBindBufferBase(GL_SHADER_STORAGE_BUFFER, ii, vertexBuffer.m_id) ); barrier |= GL_SHADER_STORAGE_BARRIER_BIT; } break;