mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 10:44:49 +01:00 
			
		
		
		
	Merge pull request #1725 from FernandoS27/gl43
Update OpenGL's backend version from 3.3 to 4.3
This commit is contained in:
		
						commit
						d01bf170c4
					
				
							
								
								
									
										2390
									
								
								externals/glad/include/glad/glad.h
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2390
									
								
								externals/glad/include/glad/glad.h
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2549
									
								
								externals/glad/src/glad.c
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2549
									
								
								externals/glad/src/glad.c
									
									
									
									
										vendored
									
									
								
							
										
											
												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; | ||||
|         } else if (extension == "GL_ARB_multi_bind") { | ||||
|             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(); | ||||
| 
 | ||||
|     // Create render framebuffer
 | ||||
|  | ||||
| @ -188,8 +188,6 @@ private: | ||||
| 
 | ||||
|     bool has_ARB_direct_state_access = false; | ||||
|     bool has_ARB_multi_bind = false; | ||||
|     bool has_ARB_separate_shader_objects = false; | ||||
|     bool has_ARB_vertex_attrib_binding = false; | ||||
| 
 | ||||
|     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, | ||||
|      true},                                                                     // DXN2UNORM
 | ||||
|     {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
 | ||||
|     {GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB, GL_RGB, GL_UNSIGNED_INT_8_8_8_8, | ||||
|      ComponentType::Float, 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_UNSIGNED_FLOAT, GL_RGB, GL_UNSIGNED_INT_8_8_8_8, ComponentType::Float, | ||||
|      true}, // BC6H_UF16
 | ||||
|     {GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT, GL_RGB, GL_UNSIGNED_INT_8_8_8_8, ComponentType::Float, | ||||
|      true},                                                                    // BC6H_SF16
 | ||||
|     {GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false},        // ASTC_2D_4X4
 | ||||
|     {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
 | ||||
|     {GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm, | ||||
|      true}, // DXT45_SRGB
 | ||||
|     {GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, | ||||
|      ComponentType::UNorm, true},                                              // BC7U_SRGB
 | ||||
|     {GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm, | ||||
|      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_8X8_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: | ||||
|         return GL_TEXTURE_CUBE_MAP; | ||||
|     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)); | ||||
|     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); | ||||
| 
 | ||||
|     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) { | ||||
|         glGetCompressedTextureImage(src_surface->Texture().handle, src_attachment, | ||||
|                                     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 || | ||||
|         updated.dst_rgb_func != current.dst_rgb_func || updated.src_a_func != current.src_a_func || | ||||
|         updated.dst_a_func != current.dst_a_func) { | ||||
|         glBlendFuncSeparateiARB(static_cast<GLuint>(target), updated.src_rgb_func, | ||||
|                                 updated.dst_rgb_func, updated.src_a_func, updated.dst_a_func); | ||||
|         glBlendFuncSeparatei(static_cast<GLuint>(target), updated.src_rgb_func, | ||||
|                              updated.dst_rgb_func, updated.src_a_func, updated.dst_a_func); | ||||
|     } | ||||
| 
 | ||||
|     if (blend_changed || updated.rgb_equation != current.rgb_equation || | ||||
|         updated.a_equation != current.a_equation) { | ||||
|         glBlendEquationSeparateiARB(static_cast<GLuint>(target), updated.rgb_equation, | ||||
|                                     updated.a_equation); | ||||
|         glBlendEquationSeparatei(static_cast<GLuint>(target), updated.rgb_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_OpenGL_Version", gl_version); | ||||
| 
 | ||||
|     if (!GLAD_GL_VERSION_3_3) { | ||||
|     if (!GLAD_GL_VERSION_4_3) { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -310,7 +310,7 @@ void GRenderWindow::InitRenderTarget() { | ||||
|     // TODO: One of these flags might be interesting: WA_OpaquePaintEvent, WA_NoBackground,
 | ||||
|     // WA_DontShowOnScreen, WA_DeleteOnClose
 | ||||
|     QGLFormat fmt; | ||||
|     fmt.setVersion(3, 3); | ||||
|     fmt.setVersion(4, 3); | ||||
|     fmt.setProfile(QGLFormat::CoreProfile); | ||||
|     fmt.setSwapInterval(false); | ||||
| 
 | ||||
|  | ||||
| @ -518,32 +518,18 @@ void GMainWindow::OnDisplayTitleBars(bool show) { | ||||
| QStringList GMainWindow::GetUnsupportedGLExtensions() { | ||||
|     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) | ||||
|         unsupported_ext.append("ARB_vertex_type_10f_11f_11f_rev"); | ||||
|     if (!GLAD_GL_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) | ||||
|         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.
 | ||||
|     if (!GLAD_GL_EXT_texture_compression_s3tc) | ||||
|         unsupported_ext.append("EXT_texture_compression_s3tc"); | ||||
|     if (!GLAD_GL_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) | ||||
|         unsupported_ext.append("ARB_depth_buffer_float"); | ||||
| 
 | ||||
| @ -562,8 +548,8 @@ bool GMainWindow::LoadROM(const QString& filename) { | ||||
|     render_window->MakeCurrent(); | ||||
| 
 | ||||
|     if (!gladLoadGL()) { | ||||
|         QMessageBox::critical(this, tr("Error while initializing OpenGL 3.3 Core!"), | ||||
|                               tr("Your GPU may not support OpenGL 3.3, or you do not " | ||||
|         QMessageBox::critical(this, tr("Error while initializing OpenGL 4.3 Core!"), | ||||
|                               tr("Your GPU may not support OpenGL 4.3, or you do not " | ||||
|                                  "have the latest graphics driver.")); | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
| @ -111,32 +111,18 @@ void EmuWindow_SDL2::Fullscreen() { | ||||
| bool EmuWindow_SDL2::SupportsRequiredGLExtensions() { | ||||
|     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) | ||||
|         unsupported_ext.push_back("ARB_vertex_type_10f_11f_11f_rev"); | ||||
|     if (!GLAD_GL_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) | ||||
|         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.
 | ||||
|     if (!GLAD_GL_EXT_texture_compression_s3tc) | ||||
|         unsupported_ext.push_back("EXT_texture_compression_s3tc"); | ||||
|     if (!GLAD_GL_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) | ||||
|         unsupported_ext.push_back("ARB_depth_buffer_float"); | ||||
| 
 | ||||
| @ -157,7 +143,7 @@ EmuWindow_SDL2::EmuWindow_SDL2(bool fullscreen) { | ||||
|         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_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); | ||||
|     SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user