OpenGLHostDisplay: Only disable streaming PBO on Adreno

It's slightly faster on Mali.
This commit is contained in:
Connor McLaughlin 2021-02-06 20:19:08 +10:00
parent 837fb6128b
commit b20b1a2fa8
2 changed files with 15 additions and 1 deletions

View file

@ -392,10 +392,23 @@ bool OpenGLHostDisplay::CreateRenderDevice(const WindowInfo& wi, std::string_vie
bool OpenGLHostDisplay::InitializeRenderDevice(std::string_view shader_cache_directory, bool debug_device, bool OpenGLHostDisplay::InitializeRenderDevice(std::string_view shader_cache_directory, bool debug_device,
bool threaded_presentation) bool threaded_presentation)
{ {
m_use_gles2_draw_path = (GetRenderAPI() == HostDisplay::RenderAPI::OpenGLES && !GLAD_GL_ES_VERSION_3_0); m_use_gles2_draw_path = (m_gl_context->IsGLES() && !GLAD_GL_ES_VERSION_3_0);
if (!m_use_gles2_draw_path) if (!m_use_gles2_draw_path)
glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, reinterpret_cast<GLint*>(&m_uniform_buffer_alignment)); glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, reinterpret_cast<GLint*>(&m_uniform_buffer_alignment));
// Doubt GLES2 drivers will support PBOs efficiently.
m_use_pbo_for_pixels = m_use_gles2_draw_path;
if (m_gl_context->IsGLES())
{
// Adreno seems to corrupt textures through PBOs...
const char* gl_vendor = reinterpret_cast<const char*>(glGetString(GL_VENDOR));
if (std::strstr(gl_vendor, "Qualcomm"))
m_use_pbo_for_pixels = false;
}
Log_VerbosePrintf("Using GLES2 draw path: %s", m_use_gles2_draw_path ? "yes" : "no");
Log_VerbosePrintf("Using PBO for streaming: %s", m_use_pbo_for_pixels ? "yes" : "no");
if (debug_device && GLAD_GL_KHR_debug) if (debug_device && GLAD_GL_KHR_debug)
{ {
if (GetRenderAPI() == RenderAPI::OpenGLES) if (GetRenderAPI() == RenderAPI::OpenGLES)

View file

@ -122,6 +122,7 @@ protected:
bool m_display_texture_is_linear_filtered = false; bool m_display_texture_is_linear_filtered = false;
bool m_use_gles2_draw_path = false; bool m_use_gles2_draw_path = false;
bool m_use_pbo_for_pixels = false;
}; };
} // namespace FrontendCommon } // namespace FrontendCommon