mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Replace the previous OpenGL loader with a glad-generated 3.3 one
The main advantage of switching to glad from glLoadGen is that, apart from being actively maintained, it supports a customizable entrypoint loader function, which makes it possible to also support OpenGL ES.
This commit is contained in:
		
							parent
							
								
									58e9f78844
								
							
						
					
					
						commit
						a1a5570e97
					
				
					 19 changed files with 3982 additions and 2815 deletions
				
			
		|  | @ -15,7 +15,7 @@ create_directory_groups(${SRCS} ${HEADERS}) | |||
| 
 | ||||
| add_executable(citra ${SRCS} ${HEADERS}) | ||||
| target_link_libraries(citra core video_core common) | ||||
| target_link_libraries(citra ${GLFW_LIBRARIES} ${OPENGL_gl_LIBRARY} inih) | ||||
| target_link_libraries(citra ${GLFW_LIBRARIES} ${OPENGL_gl_LIBRARY} inih glad) | ||||
| if (MSVC) | ||||
|     target_link_libraries(citra getopt) | ||||
| endif() | ||||
|  | @ -23,4 +23,4 @@ target_link_libraries(citra ${PLATFORM_LIBRARIES}) | |||
| 
 | ||||
| if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|FreeBSD|OpenBSD|NetBSD") | ||||
|     install(TARGETS citra RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin") | ||||
| endif() | ||||
| endif() | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ | |||
| #include <string> | ||||
| 
 | ||||
| // Let’s use our own GL header, instead of one from GLFW.
 | ||||
| #include "video_core/renderer_opengl/generated/gl_3_2_core.h" | ||||
| #include <glad/glad.h> | ||||
| #define GLFW_INCLUDE_NONE | ||||
| #include <GLFW/glfw3.h> | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,4 @@ | |||
| set(SRCS | ||||
|             renderer_opengl/generated/gl_3_2_core.c | ||||
|             renderer_opengl/gl_rasterizer.cpp | ||||
|             renderer_opengl/gl_rasterizer_cache.cpp | ||||
|             renderer_opengl/gl_shader_util.cpp | ||||
|  | @ -19,7 +18,6 @@ set(SRCS | |||
| 
 | ||||
| set(HEADERS | ||||
|             debug_utils/debug_utils.h | ||||
|             renderer_opengl/generated/gl_3_2_core.h | ||||
|             renderer_opengl/gl_rasterizer.h | ||||
|             renderer_opengl/gl_rasterizer_cache.h | ||||
|             renderer_opengl/gl_resource_manager.h | ||||
|  | @ -53,6 +51,7 @@ endif() | |||
| create_directory_groups(${SRCS} ${HEADERS}) | ||||
| 
 | ||||
| add_library(video_core STATIC ${SRCS} ${HEADERS}) | ||||
| target_link_libraries(video_core glad) | ||||
| 
 | ||||
| if (PNG_FOUND) | ||||
|     target_link_libraries(video_core ${PNG_LIBRARIES}) | ||||
|  |  | |||
|  | @ -1,5 +0,0 @@ | |||
| These file were generated by the [glLoadGen](https://bitbucket.org/alfonse/glloadgen/wiki/Home) OpenGL loader generator and have been checked in as-is. You can re-generate them using version 2.0.2 of glLoadGen and executing the following command: | ||||
| 
 | ||||
| ``` | ||||
| lua LoadGen.lua -version 3.2 -profile core -indent space 3_2_core | ||||
| ``` | ||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -5,6 +5,8 @@ | |||
| #include <cstring> | ||||
| #include <memory> | ||||
| 
 | ||||
| #include <glad/glad.h> | ||||
| 
 | ||||
| #include "common/color.h" | ||||
| #include "common/math_util.h" | ||||
| #include "common/microprofile.h" | ||||
|  | @ -21,8 +23,6 @@ | |||
| #include "video_core/renderer_opengl/gl_shader_util.h" | ||||
| #include "video_core/renderer_opengl/pica_to_gl.h" | ||||
| 
 | ||||
| #include "generated/gl_3_2_core.h" | ||||
| 
 | ||||
| static bool IsPassThroughTevStage(const Pica::Regs::TevStageConfig& stage) { | ||||
|     return (stage.color_op == Pica::Regs::TevStageConfig::Operation::Replace && | ||||
|             stage.alpha_op == Pica::Regs::TevStageConfig::Operation::Replace && | ||||
|  |  | |||
|  | @ -6,9 +6,10 @@ | |||
| 
 | ||||
| #include <utility> | ||||
| 
 | ||||
| #include <glad/glad.h> | ||||
| 
 | ||||
| #include "common/common_types.h" | ||||
| 
 | ||||
| #include "video_core/renderer_opengl/generated/gl_3_2_core.h" | ||||
| #include "video_core/renderer_opengl/gl_shader_util.h" | ||||
| #include "video_core/renderer_opengl/gl_state.h" | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "generated/gl_3_2_core.h" | ||||
| #include <glad/glad.h> | ||||
| 
 | ||||
| namespace ShaderUtil { | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "generated/gl_3_2_core.h" | ||||
| #include <glad/glad.h> | ||||
| 
 | ||||
| class OpenGLState { | ||||
| public: | ||||
|  |  | |||
|  | @ -4,12 +4,12 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <glad/glad.h> | ||||
| 
 | ||||
| #include "common/common_types.h" | ||||
| 
 | ||||
| #include "video_core/pica.h" | ||||
| 
 | ||||
| #include "generated/gl_3_2_core.h" | ||||
| 
 | ||||
| namespace PicaToGL { | ||||
| 
 | ||||
| inline GLenum TextureFilterMode(Pica::Regs::TextureConfig::TextureFilter mode) { | ||||
|  |  | |||
|  | @ -373,8 +373,8 @@ void RendererOpenGL::SetWindow(EmuWindow* window) { | |||
| void RendererOpenGL::Init() { | ||||
|     render_window->MakeCurrent(); | ||||
| 
 | ||||
|     int err = ogl_LoadFunctions(); | ||||
|     if (ogl_LOAD_SUCCEEDED != err) { | ||||
|     // TODO: Make frontends initialize this, so they can use gladLoadGLLoader with their own loaders
 | ||||
|     if (!gladLoadGL()) { | ||||
|         LOG_CRITICAL(Render_OpenGL, "Failed to initialize GL functions! Exiting..."); | ||||
|         exit(-1); | ||||
|     } | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
| 
 | ||||
| #include <array> | ||||
| 
 | ||||
| #include "generated/gl_3_2_core.h" | ||||
| #include <glad/glad.h> | ||||
| 
 | ||||
| #include "common/math_util.h" | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue