mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	citra-qt: Add depth formats to framebuffer viewing widget.
This commit is contained in:
		
							parent
							
								
									88df3fbf27
								
							
						
					
					
						commit
						302e9a20f3
					
				
					 2 changed files with 33 additions and 6 deletions
				
			
		|  | @ -55,7 +55,9 @@ GraphicsFramebufferWidget::GraphicsFramebufferWidget(std::shared_ptr<Pica::Debug | ||||||
|     framebuffer_format_control->addItem(tr("RGBA4")); |     framebuffer_format_control->addItem(tr("RGBA4")); | ||||||
|     framebuffer_format_control->addItem(tr("D16")); |     framebuffer_format_control->addItem(tr("D16")); | ||||||
|     framebuffer_format_control->addItem(tr("D24")); |     framebuffer_format_control->addItem(tr("D24")); | ||||||
|     framebuffer_format_control->addItem(tr("D24S8")); |     framebuffer_format_control->addItem(tr("D24X8")); | ||||||
|  |     framebuffer_format_control->addItem(tr("X24S8")); | ||||||
|  |     framebuffer_format_control->addItem(tr("(unknown)")); | ||||||
| 
 | 
 | ||||||
|     // TODO: This QLabel should shrink the image to the available space rather than just expanding...
 |     // TODO: This QLabel should shrink the image to the available space rather than just expanding...
 | ||||||
|     framebuffer_picture_label = new QLabel; |     framebuffer_picture_label = new QLabel; | ||||||
|  | @ -221,7 +223,24 @@ void GraphicsFramebufferWidget::OnUpdate() | ||||||
|         framebuffer_address = framebuffer.GetDepthBufferPhysicalAddress(); |         framebuffer_address = framebuffer.GetDepthBufferPhysicalAddress(); | ||||||
|         framebuffer_width = framebuffer.GetWidth(); |         framebuffer_width = framebuffer.GetWidth(); | ||||||
|         framebuffer_height = framebuffer.GetHeight(); |         framebuffer_height = framebuffer.GetHeight(); | ||||||
|         framebuffer_format = Format::D16; | 
 | ||||||
|  |         switch (framebuffer.depth_format) { | ||||||
|  |         case Pica::Regs::DepthFormat::D16: | ||||||
|  |             framebuffer_format = Format::D16; | ||||||
|  |             break; | ||||||
|  | 
 | ||||||
|  |         case Pica::Regs::DepthFormat::D24: | ||||||
|  |             framebuffer_format = Format::D24; | ||||||
|  |             break; | ||||||
|  | 
 | ||||||
|  |         case Pica::Regs::DepthFormat::D24S8: | ||||||
|  |             framebuffer_format = Format::D24X8; | ||||||
|  |             break; | ||||||
|  | 
 | ||||||
|  |         default: | ||||||
|  |             framebuffer_format = Format::Unknown; | ||||||
|  |             break; | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         break; |         break; | ||||||
|     } |     } | ||||||
|  | @ -282,7 +301,7 @@ void GraphicsFramebufferWidget::OnUpdate() | ||||||
|                 color.b() = (data >> 16) & 0xFF; |                 color.b() = (data >> 16) & 0xFF; | ||||||
|                 break; |                 break; | ||||||
|             } |             } | ||||||
|             case Format::D24S8: |             case Format::D24X8: | ||||||
|             { |             { | ||||||
|                 Math::Vec2<u32> data = Color::DecodeD24S8(pixel); |                 Math::Vec2<u32> data = Color::DecodeD24S8(pixel); | ||||||
|                 color.r() = data.x & 0xFF; |                 color.r() = data.x & 0xFF; | ||||||
|  | @ -290,6 +309,12 @@ void GraphicsFramebufferWidget::OnUpdate() | ||||||
|                 color.b() = (data.x >> 16) & 0xFF; |                 color.b() = (data.x >> 16) & 0xFF; | ||||||
|                 break; |                 break; | ||||||
|             } |             } | ||||||
|  |             case Format::X24S8: | ||||||
|  |             { | ||||||
|  |                 Math::Vec2<u32> data = Color::DecodeD24S8(pixel); | ||||||
|  |                 color.r() = color.g() = color.b() = data.y; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|             default: |             default: | ||||||
|                 qDebug() << "Unknown fb color format " << static_cast<int>(framebuffer_format); |                 qDebug() << "Unknown fb color format " << static_cast<int>(framebuffer_format); | ||||||
|                 break; |                 break; | ||||||
|  | @ -310,7 +335,8 @@ void GraphicsFramebufferWidget::OnUpdate() | ||||||
| u32 GraphicsFramebufferWidget::BytesPerPixel(GraphicsFramebufferWidget::Format format) { | u32 GraphicsFramebufferWidget::BytesPerPixel(GraphicsFramebufferWidget::Format format) { | ||||||
|     switch (format) { |     switch (format) { | ||||||
|         case Format::RGBA8: |         case Format::RGBA8: | ||||||
|         case Format::D24S8: |         case Format::D24X8: | ||||||
|  |         case Format::X24S8: | ||||||
|             return 4; |             return 4; | ||||||
|         case Format::RGB8: |         case Format::RGB8: | ||||||
|         case Format::D24: |         case Format::D24: | ||||||
|  |  | ||||||
|  | @ -35,8 +35,9 @@ class GraphicsFramebufferWidget : public BreakPointObserverDock { | ||||||
|         RGBA4    = 4, |         RGBA4    = 4, | ||||||
|         D16      = 5, |         D16      = 5, | ||||||
|         D24      = 6, |         D24      = 6, | ||||||
|         D24S8    = 7, |         D24X8    = 7, | ||||||
|         Unknown  = 8 |         X24S8    = 8, | ||||||
|  |         Unknown  = 9 | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     static u32 BytesPerPixel(Format format); |     static u32 BytesPerPixel(Format format); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue