mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-10-31 06:46:40 +08:00 
			
		
		
		
	Merge pull request #12235 from liamwhite/flip-clip
renderer_vulkan: adjust window origin and swizzle independently
This commit is contained in:
		
						commit
						90e87c40e8
					
				| @ -75,14 +75,20 @@ VkViewport GetViewportState(const Device& device, const Maxwell& regs, size_t in | |||||||
|     const float width = conv(src.scale_x * 2.0f); |     const float width = conv(src.scale_x * 2.0f); | ||||||
|     float y = conv(src.translate_y - src.scale_y); |     float y = conv(src.translate_y - src.scale_y); | ||||||
|     float height = conv(src.scale_y * 2.0f); |     float height = conv(src.scale_y * 2.0f); | ||||||
|     bool y_negate = regs.window_origin.mode != Maxwell::WindowOrigin::Mode::UpperLeft; |  | ||||||
| 
 | 
 | ||||||
|     if (!device.IsNvViewportSwizzleSupported()) { |     const bool lower_left = regs.window_origin.mode != Maxwell::WindowOrigin::Mode::UpperLeft; | ||||||
|         y_negate = y_negate != (src.swizzle.y == Maxwell::ViewportSwizzle::NegativeY); |     const bool y_negate = !device.IsNvViewportSwizzleSupported() && | ||||||
|  |                           src.swizzle.y == Maxwell::ViewportSwizzle::NegativeY; | ||||||
|  | 
 | ||||||
|  |     if (lower_left) { | ||||||
|  |         // Flip by surface clip height
 | ||||||
|  |         y += conv(static_cast<f32>(regs.surface_clip.height)); | ||||||
|  |         height = -height; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (y_negate) { |     if (y_negate) { | ||||||
|         y += conv(static_cast<f32>(regs.surface_clip.height)); |         // Flip by viewport height
 | ||||||
|  |         y += height; | ||||||
|         height = -height; |         height = -height; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user