mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Pica/OutputMerger: Implement color format checking.
This commit is contained in:
		
							parent
							
								
									3b5710bae6
								
							
						
					
					
						commit
						aaf30ca4ee
					
				
					 2 changed files with 13 additions and 4 deletions
				
			
		|  | @ -421,7 +421,7 @@ struct Regs { | ||||||
|         INSERT_PADDING_WORDS(0x6); |         INSERT_PADDING_WORDS(0x6); | ||||||
| 
 | 
 | ||||||
|         u32 depth_format; |         u32 depth_format; | ||||||
|         u32 color_format; |         BitField<16, 3, u32> color_format; | ||||||
| 
 | 
 | ||||||
|         INSERT_PADDING_WORDS(0x4); |         INSERT_PADDING_WORDS(0x4); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -20,10 +20,19 @@ namespace Rasterizer { | ||||||
| static void DrawPixel(int x, int y, const Math::Vec4<u8>& color) { | static void DrawPixel(int x, int y, const Math::Vec4<u8>& color) { | ||||||
|     const PAddr addr = registers.framebuffer.GetColorBufferPhysicalAddress(); |     const PAddr addr = registers.framebuffer.GetColorBufferPhysicalAddress(); | ||||||
|     u32* color_buffer = reinterpret_cast<u32*>(Memory::GetPointer(PAddrToVAddr(addr))); |     u32* color_buffer = reinterpret_cast<u32*>(Memory::GetPointer(PAddrToVAddr(addr))); | ||||||
|     u32 value = (color.a() << 24) | (color.r() << 16) | (color.g() << 8) | color.b(); |  | ||||||
| 
 | 
 | ||||||
|     // Assuming RGBA8 format until actual framebuffer format handling is implemented
 |     switch (registers.framebuffer.color_format) { | ||||||
|  |     case registers.framebuffer.RGBA8: | ||||||
|  |     { | ||||||
|  |         u32 value = (color.a() << 24) | (color.r() << 16) | (color.g() << 8) | color.b(); | ||||||
|         *(color_buffer + x + y * registers.framebuffer.GetWidth()) = value; |         *(color_buffer + x + y * registers.framebuffer.GetWidth()) = value; | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     default: | ||||||
|  |         LOG_CRITICAL(Render_Software, "Unknown framebuffer color format %x", registers.framebuffer.color_format); | ||||||
|  |         exit(1); | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static const Math::Vec4<u8> GetPixel(int x, int y) { | static const Math::Vec4<u8> GetPixel(int x, int y) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue