Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorExMix <rahuba.youri@mapswithme.com>2013-11-10 12:53:34 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 02:04:50 +0300
commitd38c009b01251c6d43db85437d74d76c5d918025 (patch)
treed42ea402ee2969867fae8b6754d0f7245ae1a8e1 /graphics
parent0169eec293d830814d495e154b00ebffc543a550 (diff)
return GL_RGBA8 as main format for RenderBuffer
Diffstat (limited to 'graphics')
-rw-r--r--graphics/opengl/renderbuffer.cpp34
-rw-r--r--graphics/opengl/renderbuffer.hpp4
-rw-r--r--graphics/resource_manager.cpp7
-rw-r--r--graphics/resource_manager.hpp2
4 files changed, 18 insertions, 29 deletions
diff --git a/graphics/opengl/renderbuffer.cpp b/graphics/opengl/renderbuffer.cpp
index b2f1afd341..eb2d0a56ce 100644
--- a/graphics/opengl/renderbuffer.cpp
+++ b/graphics/opengl/renderbuffer.cpp
@@ -11,40 +11,22 @@ namespace graphics
{
namespace gl
{
- RenderBuffer::RenderBuffer(size_t width, size_t height)
- : m_id(0), m_isDepthBuffer(true), m_width(width), m_height(height)
+ RenderBuffer::RenderBuffer(size_t width, size_t height, bool isDepthBuffer, bool isRgba4)
+ : m_id(0), m_isDepthBuffer(isDepthBuffer), m_width(width), m_height(height)
{
OGLCHECK(glGenRenderbuffersFn(1, &m_id));
makeCurrent();
- OGLCHECK(glRenderbufferStorageFn(GL_RENDERBUFFER_MWM,
- GL_DEPTH_COMPONENT16_MWM,
- m_width,
- m_height));
- }
-
- RenderBuffer::RenderBuffer(size_t width, size_t height, graphics::DataFormat format)
- : m_id(0), m_isDepthBuffer(false), m_width(width), m_height(height)
- {
- OGLCHECK(glGenRenderbuffersFn(1, &m_id));
-
- makeCurrent();
+ GLenum target = GL_RENDERBUFFER_MWM;
+ GLenum internalFormat = m_isDepthBuffer ? GL_DEPTH_COMPONENT16_MWM : GL_RGBA8_MWM;
- GLenum internalFormat;
- switch(format)
- {
- case graphics::Data4Bpp:
+ if (m_isDepthBuffer == false && isRgba4 == true)
internalFormat = GL_RGBA4_MWM;
- break;
- case graphics::Data8Bpp:
- internalFormat = GL_RGBA8_MWM;
- break;
- default:
- ASSERT(false, ("Incorrect color buffer format"));
- }
- OGLCHECK(glRenderbufferStorageFn(GL_RENDERBUFFER_MWM,
+ if (m_isDepthBuffer == false)
+ LOG(LINFO, ("Color buffer format : ", internalFormat));
+ OGLCHECK(glRenderbufferStorageFn(target,
internalFormat,
m_width,
m_height));
diff --git a/graphics/opengl/renderbuffer.hpp b/graphics/opengl/renderbuffer.hpp
index 4cfff40158..b2c85ae090 100644
--- a/graphics/opengl/renderbuffer.hpp
+++ b/graphics/opengl/renderbuffer.hpp
@@ -21,9 +21,7 @@ namespace graphics
public:
// Create depth buffer
- RenderBuffer(size_t width, size_t height);
- // Create color bufer
- RenderBuffer(size_t width, size_t height, graphics::DataFormat format);
+ RenderBuffer(size_t width, size_t height, bool isDepthBuffer = false, bool isRgba4 = false);
~RenderBuffer();
unsigned int id() const;
diff --git a/graphics/resource_manager.cpp b/graphics/resource_manager.cpp
index 1bac2ef0d3..0c19e66a84 100644
--- a/graphics/resource_manager.cpp
+++ b/graphics/resource_manager.cpp
@@ -248,6 +248,13 @@ namespace
if (isGPU("Imagination Technologies", "PowerVR MBX", false))
m_texRtFormat = graphics::Data8Bpp;
+ m_rgba4RenderBuffer = false;
+#ifdef OMIM_OS_ANDROID
+ if (isGPU("NVIDIA Corporation", "NVIDIA Tegra", false))
+ m_rgba4RenderBuffer = true;
+#endif
+
+ LOG(LINFO, ("using GL_RGBA4 for color buffer : ", m_rgba4RenderBuffer));
LOG(LINFO, ("selected", graphics::formatName(m_texRtFormat), "format for tile textures"));
}
diff --git a/graphics/resource_manager.hpp b/graphics/resource_manager.hpp
index af5cb6544e..4444c46dfb 100644
--- a/graphics/resource_manager.hpp
+++ b/graphics/resource_manager.hpp
@@ -199,6 +199,8 @@ namespace graphics
unsigned m_renderThreadsCount;
unsigned m_threadSlotsCount;
+ bool m_rgba4RenderBuffer;
+
Params();
void distributeFreeMemory(int freeVideoMemory);