mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	gl_state: add pipeline state
This commit is contained in:
		
							parent
							
								
									48869c768f
								
							
						
					
					
						commit
						4f9b9c4b80
					
				
					 2 changed files with 15 additions and 0 deletions
				
			
		|  | @ -71,6 +71,7 @@ OpenGLState::OpenGLState() { | |||
|     draw.vertex_buffer = 0; | ||||
|     draw.uniform_buffer = 0; | ||||
|     draw.shader_program = 0; | ||||
|     draw.program_pipeline = 0; | ||||
| 
 | ||||
|     scissor.enabled = false; | ||||
|     scissor.x = 0; | ||||
|  | @ -282,6 +283,11 @@ void OpenGLState::Apply() const { | |||
|         glUseProgram(draw.shader_program); | ||||
|     } | ||||
| 
 | ||||
|     // Program pipeline
 | ||||
|     if (draw.program_pipeline != cur_state.draw.program_pipeline) { | ||||
|         glBindProgramPipeline(draw.program_pipeline); | ||||
|     } | ||||
| 
 | ||||
|     // Scissor test
 | ||||
|     if (scissor.enabled != cur_state.scissor.enabled) { | ||||
|         if (scissor.enabled) { | ||||
|  | @ -360,6 +366,13 @@ OpenGLState& OpenGLState::ResetProgram(GLuint handle) { | |||
|     return *this; | ||||
| } | ||||
| 
 | ||||
| OpenGLState& OpenGLState::ResetPipeline(GLuint handle) { | ||||
|     if (draw.program_pipeline == handle) { | ||||
|         draw.program_pipeline = 0; | ||||
|     } | ||||
|     return *this; | ||||
| } | ||||
| 
 | ||||
| OpenGLState& OpenGLState::ResetBuffer(GLuint handle) { | ||||
|     if (draw.vertex_buffer == handle) { | ||||
|         draw.vertex_buffer = 0; | ||||
|  |  | |||
|  | @ -128,6 +128,7 @@ public: | |||
|         GLuint vertex_buffer;    // GL_ARRAY_BUFFER_BINDING
 | ||||
|         GLuint uniform_buffer;   // GL_UNIFORM_BUFFER_BINDING
 | ||||
|         GLuint shader_program;   // GL_CURRENT_PROGRAM
 | ||||
|         GLuint program_pipeline; // GL_PROGRAM_PIPELINE_BINDING
 | ||||
|     } draw; | ||||
| 
 | ||||
|     struct { | ||||
|  | @ -161,6 +162,7 @@ public: | |||
|     OpenGLState& ResetTexture(GLuint handle); | ||||
|     OpenGLState& ResetSampler(GLuint handle); | ||||
|     OpenGLState& ResetProgram(GLuint handle); | ||||
|     OpenGLState& ResetPipeline(GLuint handle); | ||||
|     OpenGLState& ResetBuffer(GLuint handle); | ||||
|     OpenGLState& ResetVertexArray(GLuint handle); | ||||
|     OpenGLState& ResetFramebuffer(GLuint handle); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue