mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	OpenGL: Avoid undefined behaviour for UNIFORM_BLOCK_DATA_SIZE
This commit is contained in:
		
							parent
							
								
									e08fcb0df4
								
							
						
					
					
						commit
						c900c092e3
					
				
					 2 changed files with 8 additions and 6 deletions
				
			
		|  | @ -316,16 +316,18 @@ private: | ||||||
|         GLfloat dist_atten_scale; |         GLfloat dist_atten_scale; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     /// Uniform structure for the Uniform Buffer Object, all members must be 16-byte aligned
 |     /// Uniform structure for the Uniform Buffer Object, all vectors must be 16-byte aligned
 | ||||||
|  |     // NOTE: Always keep a vec4 at the end. The GL spec is not clear wether the alignment at
 | ||||||
|  |     //       the end of a uniform block is included in UNIFORM_BLOCK_DATA_SIZE or not.
 | ||||||
|  |     //       Not following that rule will cause problems on some AMD drivers.
 | ||||||
|     struct UniformData { |     struct UniformData { | ||||||
|         // A vec4 color for each of the six tev stages
 |  | ||||||
|         GLvec4 const_color[6]; |  | ||||||
|         GLvec4 tev_combiner_buffer_color; |  | ||||||
|         GLint alphatest_ref; |         GLint alphatest_ref; | ||||||
|         GLfloat depth_scale; |         GLfloat depth_scale; | ||||||
|         GLfloat depth_offset; |         GLfloat depth_offset; | ||||||
|         alignas(16) GLvec3 lighting_global_ambient; |         alignas(16) GLvec3 lighting_global_ambient; | ||||||
|         LightSrc light_src[8]; |         LightSrc light_src[8]; | ||||||
|  |         alignas(16) GLvec4 const_color[6]; // A vec4 color for each of the six tev stages
 | ||||||
|  |         alignas(16) GLvec4 tev_combiner_buffer_color; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     static_assert(sizeof(UniformData) == 0x390, "The size of the UniformData structure has changed, update the structure in the shader"); |     static_assert(sizeof(UniformData) == 0x390, "The size of the UniformData structure has changed, update the structure in the shader"); | ||||||
|  |  | ||||||
|  | @ -552,13 +552,13 @@ struct LightSrc { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| layout (std140) uniform shader_data { | layout (std140) uniform shader_data { | ||||||
|     vec4 const_color[NUM_TEV_STAGES]; |  | ||||||
|     vec4 tev_combiner_buffer_color; |  | ||||||
|     int alphatest_ref; |     int alphatest_ref; | ||||||
|     float depth_scale; |     float depth_scale; | ||||||
|     float depth_offset; |     float depth_offset; | ||||||
|     vec3 lighting_global_ambient; |     vec3 lighting_global_ambient; | ||||||
|     LightSrc light_src[NUM_LIGHTS]; |     LightSrc light_src[NUM_LIGHTS]; | ||||||
|  |     vec4 const_color[NUM_TEV_STAGES]; | ||||||
|  |     vec4 tev_combiner_buffer_color; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| uniform sampler2D tex[3]; | uniform sampler2D tex[3]; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue