|
|
|
@ -55,7 +55,9 @@ GraphicsFramebufferWidget::GraphicsFramebufferWidget(std::shared_ptr<Pica::Debug |
|
|
|
framebuffer_format_control->addItem(tr("RGBA4")); |
|
|
|
framebuffer_format_control->addItem(tr("D16")); |
|
|
|
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...
|
|
|
|
framebuffer_picture_label = new QLabel; |
|
|
|
@ -221,7 +223,24 @@ void GraphicsFramebufferWidget::OnUpdate() |
|
|
|
framebuffer_address = framebuffer.GetDepthBufferPhysicalAddress(); |
|
|
|
framebuffer_width = framebuffer.GetWidth(); |
|
|
|
framebuffer_height = framebuffer.GetHeight(); |
|
|
|
|
|
|
|
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; |
|
|
|
} |
|
|
|
@ -282,7 +301,7 @@ void GraphicsFramebufferWidget::OnUpdate() |
|
|
|
color.b() = (data >> 16) & 0xFF; |
|
|
|
break; |
|
|
|
} |
|
|
|
case Format::D24S8: |
|
|
|
case Format::D24X8: |
|
|
|
{ |
|
|
|
Math::Vec2<u32> data = Color::DecodeD24S8(pixel); |
|
|
|
color.r() = data.x & 0xFF; |
|
|
|
@ -290,6 +309,12 @@ void GraphicsFramebufferWidget::OnUpdate() |
|
|
|
color.b() = (data.x >> 16) & 0xFF; |
|
|
|
break; |
|
|
|
} |
|
|
|
case Format::X24S8: |
|
|
|
{ |
|
|
|
Math::Vec2<u32> data = Color::DecodeD24S8(pixel); |
|
|
|
color.r() = color.g() = color.b() = data.y; |
|
|
|
break; |
|
|
|
} |
|
|
|
default: |
|
|
|
qDebug() << "Unknown fb color format " << static_cast<int>(framebuffer_format); |
|
|
|
break; |
|
|
|
@ -310,7 +335,8 @@ void GraphicsFramebufferWidget::OnUpdate() |
|
|
|
u32 GraphicsFramebufferWidget::BytesPerPixel(GraphicsFramebufferWidget::Format format) { |
|
|
|
switch (format) { |
|
|
|
case Format::RGBA8: |
|
|
|
case Format::D24S8: |
|
|
|
case Format::D24X8: |
|
|
|
case Format::X24S8: |
|
|
|
return 4; |
|
|
|
case Format::RGB8: |
|
|
|
case Format::D24: |
|
|
|
|