mirror of
				https://git.h3cjp.net/H3cJP/citra.git
				synced 2025-10-31 15:04:53 +00:00 
			
		
		
		
	Add support for Clip Distance enabled register
This commit is contained in:
		
							parent
							
								
									1856d0ee8a
								
							
						
					
					
						commit
						8e971f5062
					
				|  | @ -744,7 +744,20 @@ public: | |||
| 
 | ||||
|                 u32 vb_element_base; | ||||
| 
 | ||||
|                 INSERT_PADDING_WORDS(0x38); | ||||
|                 INSERT_PADDING_WORDS(0x36); | ||||
| 
 | ||||
|                 union { | ||||
|                     BitField<0, 1, u32> c0; | ||||
|                     BitField<1, 1, u32> c1; | ||||
|                     BitField<2, 1, u32> c2; | ||||
|                     BitField<3, 1, u32> c3; | ||||
|                     BitField<4, 1, u32> c4; | ||||
|                     BitField<5, 1, u32> c5; | ||||
|                     BitField<6, 1, u32> c6; | ||||
|                     BitField<7, 1, u32> c7; | ||||
|                 } clip_distance_enabled; | ||||
| 
 | ||||
|                 INSERT_PADDING_WORDS(0x1); | ||||
| 
 | ||||
|                 float point_size; | ||||
| 
 | ||||
|  | @ -1201,6 +1214,7 @@ ASSERT_REG_POSITION(stencil_front_mask, 0x4E7); | |||
| ASSERT_REG_POSITION(frag_color_clamp, 0x4EA); | ||||
| ASSERT_REG_POSITION(screen_y_control, 0x4EB); | ||||
| ASSERT_REG_POSITION(vb_element_base, 0x50D); | ||||
| ASSERT_REG_POSITION(clip_distance_enabled, 0x544); | ||||
| ASSERT_REG_POSITION(point_size, 0x546); | ||||
| ASSERT_REG_POSITION(zeta_enable, 0x54E); | ||||
| ASSERT_REG_POSITION(multisample_control, 0x54F); | ||||
|  |  | |||
|  | @ -628,6 +628,7 @@ void RasterizerOpenGL::DrawArrays() { | |||
|     SyncCullMode(); | ||||
|     SyncPrimitiveRestart(); | ||||
|     SyncScissorTest(state); | ||||
|     SyncClipEnabled(); | ||||
|     // Alpha Testing is synced on shaders.
 | ||||
|     SyncTransformFeedback(); | ||||
|     SyncPointState(); | ||||
|  | @ -1010,7 +1011,15 @@ void RasterizerOpenGL::SyncViewport(OpenGLState& current_state) { | |||
| } | ||||
| 
 | ||||
| void RasterizerOpenGL::SyncClipEnabled() { | ||||
|     UNREACHABLE(); | ||||
|     const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs; | ||||
|     state.clip_distance[0] = regs.clip_distance_enabled.c0 != 0; | ||||
|     state.clip_distance[1] = regs.clip_distance_enabled.c1 != 0; | ||||
|     state.clip_distance[2] = regs.clip_distance_enabled.c2 != 0; | ||||
|     state.clip_distance[3] = regs.clip_distance_enabled.c3 != 0; | ||||
|     state.clip_distance[4] = regs.clip_distance_enabled.c4 != 0; | ||||
|     state.clip_distance[5] = regs.clip_distance_enabled.c5 != 0; | ||||
|     state.clip_distance[6] = regs.clip_distance_enabled.c6 != 0; | ||||
|     state.clip_distance[7] = regs.clip_distance_enabled.c7 != 0; | ||||
| } | ||||
| 
 | ||||
| void RasterizerOpenGL::SyncClipCoef() { | ||||
|  |  | |||
|  | @ -185,7 +185,7 @@ public: | |||
|         GLfloat clamp; | ||||
|     } polygon_offset; | ||||
| 
 | ||||
|     std::array<bool, 2> clip_distance; // GL_CLIP_DISTANCE
 | ||||
|     std::array<bool, 8> clip_distance; // GL_CLIP_DISTANCE
 | ||||
| 
 | ||||
|     OpenGLState(); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue