mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 13:20:03 +00:00 
			
		
		
		
	video_core: Take factors into account with min/max blending functions (#6925)
* sw_framebuffer: Take factors into account for min/max blending * renderer_gl: Take factors into account for min/max blending * Address review comments * gl_shader_gen: Fix frambuffer fetch on qcom and mali * renderer_opengl: Add fallback path for mesa * gl_shader_gen: Avoid emitting blend emulation if minmax_factor is present
This commit is contained in:
		
							parent
							
								
									93c7c6a995
								
							
						
					
					
						commit
						1159e4d928
					
				
					 15 changed files with 306 additions and 63 deletions
				
			
		
							
								
								
									
										41
									
								
								externals/glad/include/glad/glad.h
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										41
									
								
								externals/glad/include/glad/glad.h
									
										
									
									
										vendored
									
									
								
							|  | @ -1,28 +1,32 @@ | |||
| /*
 | ||||
| 
 | ||||
|     OpenGL, OpenGL ES loader generated by glad 0.1.36 on Sat Apr  1 20:34:42 2023. | ||||
|     OpenGL, OpenGL ES loader generated by glad 0.1.34 on Sat Aug 26 18:38:43 2023. | ||||
| 
 | ||||
|     Language/Generator: C/C++ | ||||
|     Specification: gl | ||||
|     APIs: gl=4.3, gles2=3.2 | ||||
|     Profile: core | ||||
|     Extensions: | ||||
|         GL_AMD_blend_minmax_factor, | ||||
|         GL_ARB_buffer_storage, | ||||
|         GL_ARB_clear_texture, | ||||
|         GL_ARB_get_texture_sub_image, | ||||
|         GL_ARB_texture_compression_bptc, | ||||
|         GL_ARM_shader_framebuffer_fetch, | ||||
|         GL_EXT_buffer_storage, | ||||
|         GL_EXT_clip_cull_distance, | ||||
|         GL_EXT_texture_compression_s3tc | ||||
|         GL_EXT_shader_framebuffer_fetch, | ||||
|         GL_EXT_texture_compression_s3tc, | ||||
|         GL_NV_blend_minmax_factor | ||||
|     Loader: True | ||||
|     Local files: False | ||||
|     Omit khrplatform: False | ||||
|     Reproducible: False | ||||
| 
 | ||||
|     Commandline: | ||||
|         --profile="core" --api="gl=4.3,gles2=3.2" --generator="c" --spec="gl" --extensions="GL_ARB_buffer_storage,GL_ARB_clear_texture,GL_ARB_get_texture_sub_image,GL_ARB_texture_compression_bptc,GL_EXT_buffer_storage,GL_EXT_clip_cull_distance,GL_EXT_texture_compression_s3tc" | ||||
|         --profile="core" --api="gl=4.3,gles2=3.2" --generator="c" --spec="gl" --extensions="GL_AMD_blend_minmax_factor,GL_ARB_buffer_storage,GL_ARB_clear_texture,GL_ARB_get_texture_sub_image,GL_ARB_texture_compression_bptc,GL_ARM_shader_framebuffer_fetch,GL_EXT_buffer_storage,GL_EXT_clip_cull_distance,GL_EXT_shader_framebuffer_fetch,GL_EXT_texture_compression_s3tc,GL_NV_blend_minmax_factor" | ||||
|     Online: | ||||
|         https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D4.3&api=gles2%3D3.2&extensions=GL_ARB_buffer_storage&extensions=GL_ARB_clear_texture&extensions=GL_ARB_get_texture_sub_image&extensions=GL_ARB_texture_compression_bptc&extensions=GL_EXT_buffer_storage&extensions=GL_EXT_clip_cull_distance&extensions=GL_EXT_texture_compression_s3tc
 | ||||
|         https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D4.3&api=gles2%3D3.2&extensions=GL_AMD_blend_minmax_factor&extensions=GL_ARB_buffer_storage&extensions=GL_ARB_clear_texture&extensions=GL_ARB_get_texture_sub_image&extensions=GL_ARB_texture_compression_bptc&extensions=GL_ARM_shader_framebuffer_fetch&extensions=GL_EXT_buffer_storage&extensions=GL_EXT_clip_cull_distance&extensions=GL_EXT_shader_framebuffer_fetch&extensions=GL_EXT_texture_compression_s3tc&extensions=GL_NV_blend_minmax_factor
 | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
|  | @ -3320,6 +3324,8 @@ typedef void (APIENTRYP PFNGLGETNUNIFORMUIVPROC)(GLuint program, GLint location, | |||
| GLAPI PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv; | ||||
| #define glGetnUniformuiv glad_glGetnUniformuiv | ||||
| #endif | ||||
| #define GL_FACTOR_MIN_AMD 0x901C | ||||
| #define GL_FACTOR_MAX_AMD 0x901D | ||||
| #define GL_MAP_PERSISTENT_BIT 0x0040 | ||||
| #define GL_MAP_COHERENT_BIT 0x0080 | ||||
| #define GL_DYNAMIC_STORAGE_BIT 0x0100 | ||||
|  | @ -3332,10 +3338,13 @@ GLAPI PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv; | |||
| #define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D | ||||
| #define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E | ||||
| #define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F | ||||
| #define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 | ||||
| #define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 | ||||
| #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 | ||||
| #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 | ||||
| #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 | ||||
| #define GL_FETCH_PER_SAMPLE_ARM 0x8F65 | ||||
| #define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66 | ||||
| #define GL_MAP_PERSISTENT_BIT_EXT 0x0040 | ||||
| #define GL_MAP_COHERENT_BIT_EXT 0x0080 | ||||
| #define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100 | ||||
|  | @ -3354,6 +3363,10 @@ GLAPI PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv; | |||
| #define GL_CLIP_DISTANCE5_EXT 0x3005 | ||||
| #define GL_CLIP_DISTANCE6_EXT 0x3006 | ||||
| #define GL_CLIP_DISTANCE7_EXT 0x3007 | ||||
| #ifndef GL_AMD_blend_minmax_factor | ||||
| #define GL_AMD_blend_minmax_factor 1 | ||||
| GLAPI int GLAD_GL_AMD_blend_minmax_factor; | ||||
| #endif | ||||
| #ifndef GL_ARB_buffer_storage | ||||
| #define GL_ARB_buffer_storage 1 | ||||
| GLAPI int GLAD_GL_ARB_buffer_storage; | ||||
|  | @ -3385,10 +3398,22 @@ GLAPI PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glad_glGetCompressedTextureSubImage; | |||
| #define GL_ARB_texture_compression_bptc 1 | ||||
| GLAPI int GLAD_GL_ARB_texture_compression_bptc; | ||||
| #endif | ||||
| #ifndef GL_EXT_shader_framebuffer_fetch | ||||
| #define GL_EXT_shader_framebuffer_fetch 1 | ||||
| GLAPI int GLAD_GL_EXT_shader_framebuffer_fetch; | ||||
| #endif | ||||
| #ifndef GL_EXT_texture_compression_s3tc | ||||
| #define GL_EXT_texture_compression_s3tc 1 | ||||
| GLAPI int GLAD_GL_EXT_texture_compression_s3tc; | ||||
| #endif | ||||
| #ifndef GL_NV_blend_minmax_factor | ||||
| #define GL_NV_blend_minmax_factor 1 | ||||
| GLAPI int GLAD_GL_NV_blend_minmax_factor; | ||||
| #endif | ||||
| #ifndef GL_ARM_shader_framebuffer_fetch | ||||
| #define GL_ARM_shader_framebuffer_fetch 1 | ||||
| GLAPI int GLAD_GL_ARM_shader_framebuffer_fetch; | ||||
| #endif | ||||
| #ifndef GL_EXT_buffer_storage | ||||
| #define GL_EXT_buffer_storage 1 | ||||
| GLAPI int GLAD_GL_EXT_buffer_storage; | ||||
|  | @ -3400,10 +3425,18 @@ GLAPI PFNGLBUFFERSTORAGEEXTPROC glad_glBufferStorageEXT; | |||
| #define GL_EXT_clip_cull_distance 1 | ||||
| GLAPI int GLAD_GL_EXT_clip_cull_distance; | ||||
| #endif | ||||
| #ifndef GL_EXT_shader_framebuffer_fetch | ||||
| #define GL_EXT_shader_framebuffer_fetch 1 | ||||
| GLAPI int GLAD_GL_EXT_shader_framebuffer_fetch; | ||||
| #endif | ||||
| #ifndef GL_EXT_texture_compression_s3tc | ||||
| #define GL_EXT_texture_compression_s3tc 1 | ||||
| GLAPI int GLAD_GL_EXT_texture_compression_s3tc; | ||||
| #endif | ||||
| #ifndef GL_NV_blend_minmax_factor | ||||
| #define GL_NV_blend_minmax_factor 1 | ||||
| GLAPI int GLAD_GL_NV_blend_minmax_factor; | ||||
| #endif | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| } | ||||
|  |  | |||
							
								
								
									
										22
									
								
								externals/glad/src/glad.c
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								externals/glad/src/glad.c
									
										
									
									
										vendored
									
									
								
							|  | @ -1,28 +1,32 @@ | |||
| /*
 | ||||
| 
 | ||||
|     OpenGL, OpenGL ES loader generated by glad 0.1.36 on Sat Apr  1 20:34:42 2023. | ||||
|     OpenGL, OpenGL ES loader generated by glad 0.1.34 on Sat Aug 26 18:38:43 2023. | ||||
| 
 | ||||
|     Language/Generator: C/C++ | ||||
|     Specification: gl | ||||
|     APIs: gl=4.3, gles2=3.2 | ||||
|     Profile: core | ||||
|     Extensions: | ||||
|         GL_AMD_blend_minmax_factor, | ||||
|         GL_ARB_buffer_storage, | ||||
|         GL_ARB_clear_texture, | ||||
|         GL_ARB_get_texture_sub_image, | ||||
|         GL_ARB_texture_compression_bptc, | ||||
|         GL_ARM_shader_framebuffer_fetch, | ||||
|         GL_EXT_buffer_storage, | ||||
|         GL_EXT_clip_cull_distance, | ||||
|         GL_EXT_texture_compression_s3tc | ||||
|         GL_EXT_shader_framebuffer_fetch, | ||||
|         GL_EXT_texture_compression_s3tc, | ||||
|         GL_NV_blend_minmax_factor | ||||
|     Loader: True | ||||
|     Local files: False | ||||
|     Omit khrplatform: False | ||||
|     Reproducible: False | ||||
| 
 | ||||
|     Commandline: | ||||
|         --profile="core" --api="gl=4.3,gles2=3.2" --generator="c" --spec="gl" --extensions="GL_ARB_buffer_storage,GL_ARB_clear_texture,GL_ARB_get_texture_sub_image,GL_ARB_texture_compression_bptc,GL_EXT_buffer_storage,GL_EXT_clip_cull_distance,GL_EXT_texture_compression_s3tc" | ||||
|         --profile="core" --api="gl=4.3,gles2=3.2" --generator="c" --spec="gl" --extensions="GL_AMD_blend_minmax_factor,GL_ARB_buffer_storage,GL_ARB_clear_texture,GL_ARB_get_texture_sub_image,GL_ARB_texture_compression_bptc,GL_ARM_shader_framebuffer_fetch,GL_EXT_buffer_storage,GL_EXT_clip_cull_distance,GL_EXT_shader_framebuffer_fetch,GL_EXT_texture_compression_s3tc,GL_NV_blend_minmax_factor" | ||||
|     Online: | ||||
|         https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D4.3&api=gles2%3D3.2&extensions=GL_ARB_buffer_storage&extensions=GL_ARB_clear_texture&extensions=GL_ARB_get_texture_sub_image&extensions=GL_ARB_texture_compression_bptc&extensions=GL_EXT_buffer_storage&extensions=GL_EXT_clip_cull_distance&extensions=GL_EXT_texture_compression_s3tc
 | ||||
|         https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D4.3&api=gles2%3D3.2&extensions=GL_AMD_blend_minmax_factor&extensions=GL_ARB_buffer_storage&extensions=GL_ARB_clear_texture&extensions=GL_ARB_get_texture_sub_image&extensions=GL_ARB_texture_compression_bptc&extensions=GL_ARM_shader_framebuffer_fetch&extensions=GL_EXT_buffer_storage&extensions=GL_EXT_clip_cull_distance&extensions=GL_EXT_shader_framebuffer_fetch&extensions=GL_EXT_texture_compression_s3tc&extensions=GL_NV_blend_minmax_factor
 | ||||
| */ | ||||
| 
 | ||||
| #include <stdio.h> | ||||
|  | @ -853,13 +857,17 @@ PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv = NULL; | |||
| PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf = NULL; | ||||
| PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv = NULL; | ||||
| PFNGLWAITSYNCPROC glad_glWaitSync = NULL; | ||||
| int GLAD_GL_AMD_blend_minmax_factor = 0; | ||||
| int GLAD_GL_ARB_buffer_storage = 0; | ||||
| int GLAD_GL_ARB_clear_texture = 0; | ||||
| int GLAD_GL_ARB_get_texture_sub_image = 0; | ||||
| int GLAD_GL_ARB_texture_compression_bptc = 0; | ||||
| int GLAD_GL_ARM_shader_framebuffer_fetch = 0; | ||||
| int GLAD_GL_EXT_buffer_storage = 0; | ||||
| int GLAD_GL_EXT_clip_cull_distance = 0; | ||||
| int GLAD_GL_EXT_shader_framebuffer_fetch = 0; | ||||
| int GLAD_GL_EXT_texture_compression_s3tc = 0; | ||||
| int GLAD_GL_NV_blend_minmax_factor = 0; | ||||
| PFNGLBUFFERSTORAGEPROC glad_glBufferStorage = NULL; | ||||
| PFNGLCLEARTEXIMAGEPROC glad_glClearTexImage = NULL; | ||||
| PFNGLCLEARTEXSUBIMAGEPROC glad_glClearTexSubImage = NULL; | ||||
|  | @ -1498,11 +1506,14 @@ static void load_GL_ARB_get_texture_sub_image(GLADloadproc load) { | |||
| } | ||||
| static int find_extensionsGL(void) { | ||||
| 	if (!get_exts()) return 0; | ||||
| 	GLAD_GL_AMD_blend_minmax_factor = has_ext("GL_AMD_blend_minmax_factor"); | ||||
| 	GLAD_GL_ARB_buffer_storage = has_ext("GL_ARB_buffer_storage"); | ||||
| 	GLAD_GL_ARB_clear_texture = has_ext("GL_ARB_clear_texture"); | ||||
| 	GLAD_GL_ARB_get_texture_sub_image = has_ext("GL_ARB_get_texture_sub_image"); | ||||
| 	GLAD_GL_ARB_texture_compression_bptc = has_ext("GL_ARB_texture_compression_bptc"); | ||||
| 	GLAD_GL_EXT_shader_framebuffer_fetch = has_ext("GL_EXT_shader_framebuffer_fetch"); | ||||
| 	GLAD_GL_EXT_texture_compression_s3tc = has_ext("GL_EXT_texture_compression_s3tc"); | ||||
| 	GLAD_GL_NV_blend_minmax_factor = has_ext("GL_NV_blend_minmax_factor"); | ||||
| 	free_exts(); | ||||
| 	return 1; | ||||
| } | ||||
|  | @ -1971,9 +1982,12 @@ static void load_GL_EXT_buffer_storage(GLADloadproc load) { | |||
| } | ||||
| static int find_extensionsGLES2(void) { | ||||
| 	if (!get_exts()) return 0; | ||||
| 	GLAD_GL_ARM_shader_framebuffer_fetch = has_ext("GL_ARM_shader_framebuffer_fetch"); | ||||
| 	GLAD_GL_EXT_buffer_storage = has_ext("GL_EXT_buffer_storage"); | ||||
| 	GLAD_GL_EXT_clip_cull_distance = has_ext("GL_EXT_clip_cull_distance"); | ||||
| 	GLAD_GL_EXT_shader_framebuffer_fetch = has_ext("GL_EXT_shader_framebuffer_fetch"); | ||||
| 	GLAD_GL_EXT_texture_compression_s3tc = has_ext("GL_EXT_texture_compression_s3tc"); | ||||
| 	GLAD_GL_NV_blend_minmax_factor = has_ext("GL_NV_blend_minmax_factor"); | ||||
| 	free_exts(); | ||||
| 	return 1; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue