Merge pull request #1725 from FernandoS27/gl43
Update OpenGL's backend version from 3.3 to 4.3master
commit
d01bf170c4
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -98,14 +98,9 @@ RasterizerOpenGL::RasterizerOpenGL(Core::Frontend::EmuWindow& window, ScreenInfo
|
||||||
has_ARB_direct_state_access = true;
|
has_ARB_direct_state_access = true;
|
||||||
} else if (extension == "GL_ARB_multi_bind") {
|
} else if (extension == "GL_ARB_multi_bind") {
|
||||||
has_ARB_multi_bind = true;
|
has_ARB_multi_bind = true;
|
||||||
} else if (extension == "GL_ARB_separate_shader_objects") {
|
|
||||||
has_ARB_separate_shader_objects = true;
|
|
||||||
} else if (extension == "GL_ARB_vertex_attrib_binding") {
|
|
||||||
has_ARB_vertex_attrib_binding = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSERT_MSG(has_ARB_separate_shader_objects, "has_ARB_separate_shader_objects is unsupported");
|
|
||||||
OpenGLState::ApplyDefaultState();
|
OpenGLState::ApplyDefaultState();
|
||||||
|
|
||||||
// Create render framebuffer
|
// Create render framebuffer
|
||||||
|
|
|
||||||
|
|
@ -188,8 +188,6 @@ private:
|
||||||
|
|
||||||
bool has_ARB_direct_state_access = false;
|
bool has_ARB_direct_state_access = false;
|
||||||
bool has_ARB_multi_bind = false;
|
bool has_ARB_multi_bind = false;
|
||||||
bool has_ARB_separate_shader_objects = false;
|
|
||||||
bool has_ARB_vertex_attrib_binding = false;
|
|
||||||
|
|
||||||
OpenGLState state;
|
OpenGLState state;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -265,11 +265,11 @@ static constexpr std::array<FormatTuple, VideoCore::Surface::MaxPixelFormat> tex
|
||||||
{GL_COMPRESSED_RG_RGTC2, GL_RG, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm,
|
{GL_COMPRESSED_RG_RGTC2, GL_RG, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm,
|
||||||
true}, // DXN2UNORM
|
true}, // DXN2UNORM
|
||||||
{GL_COMPRESSED_SIGNED_RG_RGTC2, GL_RG, GL_INT, ComponentType::SNorm, true}, // DXN2SNORM
|
{GL_COMPRESSED_SIGNED_RG_RGTC2, GL_RG, GL_INT, ComponentType::SNorm, true}, // DXN2SNORM
|
||||||
{GL_COMPRESSED_RGBA_BPTC_UNORM_ARB, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm,
|
{GL_COMPRESSED_RGBA_BPTC_UNORM, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm,
|
||||||
true}, // BC7U
|
true}, // BC7U
|
||||||
{GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB, GL_RGB, GL_UNSIGNED_INT_8_8_8_8,
|
{GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT, GL_RGB, GL_UNSIGNED_INT_8_8_8_8, ComponentType::Float,
|
||||||
ComponentType::Float, true}, // BC6H_UF16
|
true}, // BC6H_UF16
|
||||||
{GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB, GL_RGB, GL_UNSIGNED_INT_8_8_8_8, ComponentType::Float,
|
{GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT, GL_RGB, GL_UNSIGNED_INT_8_8_8_8, ComponentType::Float,
|
||||||
true}, // BC6H_SF16
|
true}, // BC6H_SF16
|
||||||
{GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_4X4
|
{GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_4X4
|
||||||
{GL_RG8, GL_RG, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // G8R8U
|
{GL_RG8, GL_RG, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // G8R8U
|
||||||
|
|
@ -306,8 +306,8 @@ static constexpr std::array<FormatTuple, VideoCore::Surface::MaxPixelFormat> tex
|
||||||
true}, // DXT23_SRGB
|
true}, // DXT23_SRGB
|
||||||
{GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm,
|
{GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm,
|
||||||
true}, // DXT45_SRGB
|
true}, // DXT45_SRGB
|
||||||
{GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8,
|
{GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm,
|
||||||
ComponentType::UNorm, true}, // BC7U_SRGB
|
true}, // BC7U_SRGB
|
||||||
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_4X4_SRGB
|
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_4X4_SRGB
|
||||||
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_8X8_SRGB
|
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_8X8_SRGB
|
||||||
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_8X5_SRGB
|
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_8X5_SRGB
|
||||||
|
|
@ -346,7 +346,7 @@ static GLenum SurfaceTargetToGL(SurfaceTarget target) {
|
||||||
case SurfaceTarget::TextureCubemap:
|
case SurfaceTarget::TextureCubemap:
|
||||||
return GL_TEXTURE_CUBE_MAP;
|
return GL_TEXTURE_CUBE_MAP;
|
||||||
case SurfaceTarget::TextureCubeArray:
|
case SurfaceTarget::TextureCubeArray:
|
||||||
return GL_TEXTURE_CUBE_MAP_ARRAY_ARB;
|
return GL_TEXTURE_CUBE_MAP_ARRAY;
|
||||||
}
|
}
|
||||||
LOG_CRITICAL(Render_OpenGL, "Unimplemented texture target={}", static_cast<u32>(target));
|
LOG_CRITICAL(Render_OpenGL, "Unimplemented texture target={}", static_cast<u32>(target));
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
|
|
@ -726,7 +726,7 @@ static void CopySurface(const Surface& src_surface, const Surface& dst_surface,
|
||||||
const std::size_t buffer_size = std::max(src_params.size_in_bytes, dst_params.size_in_bytes);
|
const std::size_t buffer_size = std::max(src_params.size_in_bytes, dst_params.size_in_bytes);
|
||||||
|
|
||||||
glBindBuffer(GL_PIXEL_PACK_BUFFER, copy_pbo_handle);
|
glBindBuffer(GL_PIXEL_PACK_BUFFER, copy_pbo_handle);
|
||||||
glBufferData(GL_PIXEL_PACK_BUFFER, buffer_size, nullptr, GL_STREAM_DRAW_ARB);
|
glBufferData(GL_PIXEL_PACK_BUFFER, buffer_size, nullptr, GL_STREAM_DRAW);
|
||||||
if (source_format.compressed) {
|
if (source_format.compressed) {
|
||||||
glGetCompressedTextureImage(src_surface->Texture().handle, src_attachment,
|
glGetCompressedTextureImage(src_surface->Texture().handle, src_attachment,
|
||||||
static_cast<GLsizei>(src_params.size_in_bytes), nullptr);
|
static_cast<GLsizei>(src_params.size_in_bytes), nullptr);
|
||||||
|
|
|
||||||
|
|
@ -362,14 +362,14 @@ void OpenGLState::ApplyTargetBlending(std::size_t target, bool force) const {
|
||||||
if (blend_changed || updated.src_rgb_func != current.src_rgb_func ||
|
if (blend_changed || updated.src_rgb_func != current.src_rgb_func ||
|
||||||
updated.dst_rgb_func != current.dst_rgb_func || updated.src_a_func != current.src_a_func ||
|
updated.dst_rgb_func != current.dst_rgb_func || updated.src_a_func != current.src_a_func ||
|
||||||
updated.dst_a_func != current.dst_a_func) {
|
updated.dst_a_func != current.dst_a_func) {
|
||||||
glBlendFuncSeparateiARB(static_cast<GLuint>(target), updated.src_rgb_func,
|
glBlendFuncSeparatei(static_cast<GLuint>(target), updated.src_rgb_func,
|
||||||
updated.dst_rgb_func, updated.src_a_func, updated.dst_a_func);
|
updated.dst_rgb_func, updated.src_a_func, updated.dst_a_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (blend_changed || updated.rgb_equation != current.rgb_equation ||
|
if (blend_changed || updated.rgb_equation != current.rgb_equation ||
|
||||||
updated.a_equation != current.a_equation) {
|
updated.a_equation != current.a_equation) {
|
||||||
glBlendEquationSeparateiARB(static_cast<GLuint>(target), updated.rgb_equation,
|
glBlendEquationSeparatei(static_cast<GLuint>(target), updated.rgb_equation,
|
||||||
updated.a_equation);
|
updated.a_equation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -490,7 +490,7 @@ bool RendererOpenGL::Init() {
|
||||||
Core::Telemetry().AddField(Telemetry::FieldType::UserSystem, "GPU_Model", gpu_model);
|
Core::Telemetry().AddField(Telemetry::FieldType::UserSystem, "GPU_Model", gpu_model);
|
||||||
Core::Telemetry().AddField(Telemetry::FieldType::UserSystem, "GPU_OpenGL_Version", gl_version);
|
Core::Telemetry().AddField(Telemetry::FieldType::UserSystem, "GPU_OpenGL_Version", gl_version);
|
||||||
|
|
||||||
if (!GLAD_GL_VERSION_3_3) {
|
if (!GLAD_GL_VERSION_4_3) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -310,7 +310,7 @@ void GRenderWindow::InitRenderTarget() {
|
||||||
// TODO: One of these flags might be interesting: WA_OpaquePaintEvent, WA_NoBackground,
|
// TODO: One of these flags might be interesting: WA_OpaquePaintEvent, WA_NoBackground,
|
||||||
// WA_DontShowOnScreen, WA_DeleteOnClose
|
// WA_DontShowOnScreen, WA_DeleteOnClose
|
||||||
QGLFormat fmt;
|
QGLFormat fmt;
|
||||||
fmt.setVersion(3, 3);
|
fmt.setVersion(4, 3);
|
||||||
fmt.setProfile(QGLFormat::CoreProfile);
|
fmt.setProfile(QGLFormat::CoreProfile);
|
||||||
fmt.setSwapInterval(false);
|
fmt.setSwapInterval(false);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -518,32 +518,18 @@ void GMainWindow::OnDisplayTitleBars(bool show) {
|
||||||
QStringList GMainWindow::GetUnsupportedGLExtensions() {
|
QStringList GMainWindow::GetUnsupportedGLExtensions() {
|
||||||
QStringList unsupported_ext;
|
QStringList unsupported_ext;
|
||||||
|
|
||||||
if (!GLAD_GL_ARB_program_interface_query)
|
|
||||||
unsupported_ext.append("ARB_program_interface_query");
|
|
||||||
if (!GLAD_GL_ARB_separate_shader_objects)
|
|
||||||
unsupported_ext.append("ARB_separate_shader_objects");
|
|
||||||
if (!GLAD_GL_ARB_vertex_attrib_binding)
|
|
||||||
unsupported_ext.append("ARB_vertex_attrib_binding");
|
|
||||||
if (!GLAD_GL_ARB_vertex_type_10f_11f_11f_rev)
|
if (!GLAD_GL_ARB_vertex_type_10f_11f_11f_rev)
|
||||||
unsupported_ext.append("ARB_vertex_type_10f_11f_11f_rev");
|
unsupported_ext.append("ARB_vertex_type_10f_11f_11f_rev");
|
||||||
if (!GLAD_GL_ARB_texture_mirror_clamp_to_edge)
|
if (!GLAD_GL_ARB_texture_mirror_clamp_to_edge)
|
||||||
unsupported_ext.append("ARB_texture_mirror_clamp_to_edge");
|
unsupported_ext.append("ARB_texture_mirror_clamp_to_edge");
|
||||||
if (!GLAD_GL_ARB_base_instance)
|
|
||||||
unsupported_ext.append("ARB_base_instance");
|
|
||||||
if (!GLAD_GL_ARB_texture_storage)
|
|
||||||
unsupported_ext.append("ARB_texture_storage");
|
|
||||||
if (!GLAD_GL_ARB_multi_bind)
|
if (!GLAD_GL_ARB_multi_bind)
|
||||||
unsupported_ext.append("ARB_multi_bind");
|
unsupported_ext.append("ARB_multi_bind");
|
||||||
if (!GLAD_GL_ARB_copy_image)
|
|
||||||
unsupported_ext.append("ARB_copy_image");
|
|
||||||
|
|
||||||
// Extensions required to support some texture formats.
|
// Extensions required to support some texture formats.
|
||||||
if (!GLAD_GL_EXT_texture_compression_s3tc)
|
if (!GLAD_GL_EXT_texture_compression_s3tc)
|
||||||
unsupported_ext.append("EXT_texture_compression_s3tc");
|
unsupported_ext.append("EXT_texture_compression_s3tc");
|
||||||
if (!GLAD_GL_ARB_texture_compression_rgtc)
|
if (!GLAD_GL_ARB_texture_compression_rgtc)
|
||||||
unsupported_ext.append("ARB_texture_compression_rgtc");
|
unsupported_ext.append("ARB_texture_compression_rgtc");
|
||||||
if (!GLAD_GL_ARB_texture_compression_bptc)
|
|
||||||
unsupported_ext.append("ARB_texture_compression_bptc");
|
|
||||||
if (!GLAD_GL_ARB_depth_buffer_float)
|
if (!GLAD_GL_ARB_depth_buffer_float)
|
||||||
unsupported_ext.append("ARB_depth_buffer_float");
|
unsupported_ext.append("ARB_depth_buffer_float");
|
||||||
|
|
||||||
|
|
@ -562,8 +548,8 @@ bool GMainWindow::LoadROM(const QString& filename) {
|
||||||
render_window->MakeCurrent();
|
render_window->MakeCurrent();
|
||||||
|
|
||||||
if (!gladLoadGL()) {
|
if (!gladLoadGL()) {
|
||||||
QMessageBox::critical(this, tr("Error while initializing OpenGL 3.3 Core!"),
|
QMessageBox::critical(this, tr("Error while initializing OpenGL 4.3 Core!"),
|
||||||
tr("Your GPU may not support OpenGL 3.3, or you do not "
|
tr("Your GPU may not support OpenGL 4.3, or you do not "
|
||||||
"have the latest graphics driver."));
|
"have the latest graphics driver."));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -111,32 +111,18 @@ void EmuWindow_SDL2::Fullscreen() {
|
||||||
bool EmuWindow_SDL2::SupportsRequiredGLExtensions() {
|
bool EmuWindow_SDL2::SupportsRequiredGLExtensions() {
|
||||||
std::vector<std::string> unsupported_ext;
|
std::vector<std::string> unsupported_ext;
|
||||||
|
|
||||||
if (!GLAD_GL_ARB_program_interface_query)
|
|
||||||
unsupported_ext.push_back("ARB_program_interface_query");
|
|
||||||
if (!GLAD_GL_ARB_separate_shader_objects)
|
|
||||||
unsupported_ext.push_back("ARB_separate_shader_objects");
|
|
||||||
if (!GLAD_GL_ARB_vertex_attrib_binding)
|
|
||||||
unsupported_ext.push_back("ARB_vertex_attrib_binding");
|
|
||||||
if (!GLAD_GL_ARB_vertex_type_10f_11f_11f_rev)
|
if (!GLAD_GL_ARB_vertex_type_10f_11f_11f_rev)
|
||||||
unsupported_ext.push_back("ARB_vertex_type_10f_11f_11f_rev");
|
unsupported_ext.push_back("ARB_vertex_type_10f_11f_11f_rev");
|
||||||
if (!GLAD_GL_ARB_texture_mirror_clamp_to_edge)
|
if (!GLAD_GL_ARB_texture_mirror_clamp_to_edge)
|
||||||
unsupported_ext.push_back("ARB_texture_mirror_clamp_to_edge");
|
unsupported_ext.push_back("ARB_texture_mirror_clamp_to_edge");
|
||||||
if (!GLAD_GL_ARB_base_instance)
|
|
||||||
unsupported_ext.push_back("ARB_base_instance");
|
|
||||||
if (!GLAD_GL_ARB_texture_storage)
|
|
||||||
unsupported_ext.push_back("ARB_texture_storage");
|
|
||||||
if (!GLAD_GL_ARB_multi_bind)
|
if (!GLAD_GL_ARB_multi_bind)
|
||||||
unsupported_ext.push_back("ARB_multi_bind");
|
unsupported_ext.push_back("ARB_multi_bind");
|
||||||
if (!GLAD_GL_ARB_copy_image)
|
|
||||||
unsupported_ext.push_back("ARB_copy_image");
|
|
||||||
|
|
||||||
// Extensions required to support some texture formats.
|
// Extensions required to support some texture formats.
|
||||||
if (!GLAD_GL_EXT_texture_compression_s3tc)
|
if (!GLAD_GL_EXT_texture_compression_s3tc)
|
||||||
unsupported_ext.push_back("EXT_texture_compression_s3tc");
|
unsupported_ext.push_back("EXT_texture_compression_s3tc");
|
||||||
if (!GLAD_GL_ARB_texture_compression_rgtc)
|
if (!GLAD_GL_ARB_texture_compression_rgtc)
|
||||||
unsupported_ext.push_back("ARB_texture_compression_rgtc");
|
unsupported_ext.push_back("ARB_texture_compression_rgtc");
|
||||||
if (!GLAD_GL_ARB_texture_compression_bptc)
|
|
||||||
unsupported_ext.push_back("ARB_texture_compression_bptc");
|
|
||||||
if (!GLAD_GL_ARB_depth_buffer_float)
|
if (!GLAD_GL_ARB_depth_buffer_float)
|
||||||
unsupported_ext.push_back("ARB_depth_buffer_float");
|
unsupported_ext.push_back("ARB_depth_buffer_float");
|
||||||
|
|
||||||
|
|
@ -157,7 +143,7 @@ EmuWindow_SDL2::EmuWindow_SDL2(bool fullscreen) {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
|
||||||
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue