mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-30 01:29:42 -06:00
Remove all of our workarounds for Qualcomm devices we don't support anymore.
This commit is contained in:
@ -41,24 +41,11 @@ OpenGLPostProcessing::OpenGLPostProcessing()
|
||||
: m_initialized(false)
|
||||
{
|
||||
CreateHeader();
|
||||
|
||||
m_attribute_workaround = DriverDetails::HasBug(DriverDetails::BUG_BROKENATTRIBUTELESS);
|
||||
if (m_attribute_workaround)
|
||||
{
|
||||
glGenBuffers(1, &m_attribute_vbo);
|
||||
glGenVertexArrays(1, &m_attribute_vao);
|
||||
}
|
||||
}
|
||||
|
||||
OpenGLPostProcessing::~OpenGLPostProcessing()
|
||||
{
|
||||
m_shader.Destroy();
|
||||
|
||||
if (m_attribute_workaround)
|
||||
{
|
||||
glDeleteBuffers(1, &m_attribute_vbo);
|
||||
glDeleteVertexArrays(1, &m_attribute_vao);
|
||||
}
|
||||
}
|
||||
|
||||
void OpenGLPostProcessing::BlitFromTexture(TargetRectangle src, TargetRectangle dst,
|
||||
@ -70,10 +57,7 @@ void OpenGLPostProcessing::BlitFromTexture(TargetRectangle src, TargetRectangle
|
||||
|
||||
glViewport(dst.left, dst.bottom, dst.GetWidth(), dst.GetHeight());
|
||||
|
||||
if (m_attribute_workaround)
|
||||
glBindVertexArray(m_attribute_vao);
|
||||
else
|
||||
OpenGL_BindAttributelessVAO();
|
||||
OpenGL_BindAttributelessVAO();
|
||||
|
||||
m_shader.Bind();
|
||||
|
||||
@ -174,9 +158,6 @@ void OpenGLPostProcessing::ApplyShader()
|
||||
|
||||
const char* vertex_shader = s_vertex_shader;
|
||||
|
||||
if (m_attribute_workaround)
|
||||
vertex_shader = s_vertex_workaround_shader;
|
||||
|
||||
// and compile it
|
||||
if (!ProgramShaderCache::CompileShader(m_shader, vertex_shader, code.c_str()))
|
||||
{
|
||||
@ -192,23 +173,6 @@ void OpenGLPostProcessing::ApplyShader()
|
||||
m_uniform_src_rect = glGetUniformLocation(m_shader.glprogid, "src_rect");
|
||||
m_uniform_layer = glGetUniformLocation(m_shader.glprogid, "layer");
|
||||
|
||||
if (m_attribute_workaround)
|
||||
{
|
||||
GLfloat vertices[] = {
|
||||
-1.f, -1.f, 0.f, 0.f,
|
||||
1.f, -1.f, 1.f, 0.f,
|
||||
-1.f, 1.f, 0.f, 1.f,
|
||||
1.f, 1.f, 1.f, 1.f,
|
||||
};
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, m_attribute_vbo);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
|
||||
|
||||
glBindVertexArray(m_attribute_vao);
|
||||
glEnableVertexAttribArray(SHADER_POSITION_ATTRIB);
|
||||
glVertexAttribPointer(SHADER_POSITION_ATTRIB, 4, GL_FLOAT, 0, 0, nullptr);
|
||||
}
|
||||
|
||||
for (const auto& it : m_config.GetOptions())
|
||||
{
|
||||
std::string glsl_name = "option_" + it.first;
|
||||
|
@ -35,11 +35,6 @@ private:
|
||||
GLuint m_uniform_layer;
|
||||
std::string m_glsl_header;
|
||||
|
||||
// These are only used when working around Qualcomm's broken attributeless rendering
|
||||
GLuint m_attribute_vao;
|
||||
GLuint m_attribute_vbo;
|
||||
bool m_attribute_workaround = false;
|
||||
|
||||
std::unordered_map<std::string, GLuint> m_uniform_bindings;
|
||||
|
||||
void CreateHeader();
|
||||
|
@ -583,10 +583,6 @@ void ProgramShaderCache::CreateHeader()
|
||||
"#define frac fract\n"
|
||||
"#define lerp mix\n"
|
||||
|
||||
// Terrible hacks, look at DriverDetails.h
|
||||
"%s\n" // replace textureSize as constant
|
||||
"%s\n" // wipe out all centroid usages
|
||||
|
||||
, GetGLSLVersionString().c_str()
|
||||
, v<GLSL_140 ? "#extension GL_ARB_uniform_buffer_object : enable" : ""
|
||||
, !is_glsles && g_ActiveConfig.backend_info.bSupportsEarlyZ ? "#extension GL_ARB_shader_image_load_store : enable" : ""
|
||||
@ -606,9 +602,6 @@ void ProgramShaderCache::CreateHeader()
|
||||
, is_glsles ? "precision highp int;" : ""
|
||||
, is_glsles ? "precision highp sampler2DArray;" : ""
|
||||
, (is_glsles && g_ActiveConfig.backend_info.bSupportsPaletteConversion) ? "precision highp usamplerBuffer;" : ""
|
||||
|
||||
, DriverDetails::HasBug(DriverDetails::BUG_BROKENTEXTURESIZE) ? "#define textureSize(x, y) ivec2(1, 1)" : ""
|
||||
, DriverDetails::HasBug(DriverDetails::BUG_BROKENCENTROID) ? "#define centroid" : ""
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -1705,30 +1705,25 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, co
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
if (!DriverDetails::HasBug(DriverDetails::BUG_BROKENSWAP))
|
||||
{
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
// Reset viewport for drawing text
|
||||
glViewport(0, 0, GLInterface->GetBackBufferWidth(), GLInterface->GetBackBufferHeight());
|
||||
// Reset viewport for drawing text
|
||||
glViewport(0, 0, GLInterface->GetBackBufferWidth(), GLInterface->GetBackBufferHeight());
|
||||
|
||||
ShowEfbCopyRegions();
|
||||
DrawDebugText();
|
||||
ShowEfbCopyRegions();
|
||||
DrawDebugText();
|
||||
|
||||
// Do our OSD callbacks
|
||||
OSD::DoCallbacks(OSD::OSD_ONFRAME);
|
||||
OSD::DrawMessages();
|
||||
|
||||
// Do our OSD callbacks
|
||||
OSD::DoCallbacks(OSD::OSD_ONFRAME);
|
||||
OSD::DrawMessages();
|
||||
}
|
||||
// Copy the rendered frame to the real window
|
||||
GLInterface->Swap();
|
||||
|
||||
// Clear framebuffer
|
||||
if (!DriverDetails::HasBug(DriverDetails::BUG_BROKENSWAP))
|
||||
{
|
||||
glClearColor(0, 0, 0, 0);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
}
|
||||
glClearColor(0, 0, 0, 0);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
if (s_vsync != g_ActiveConfig.IsVSync())
|
||||
{
|
||||
|
Reference in New Issue
Block a user