summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2019-08-21 07:22:54 +0200
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-08-21 07:28:31 +0200
commit80702aa88f6f448decfbb06dc14db470c221dd38 (patch)
tree564386e3afa4a28ac7028f10805e7671fbed26ee
parentrenderer_opengl: Use block linear swizzling for CPU framebuffers (diff)
downloadyuzu-80702aa88f6f448decfbb06dc14db470c221dd38.tar
yuzu-80702aa88f6f448decfbb06dc14db470c221dd38.tar.gz
yuzu-80702aa88f6f448decfbb06dc14db470c221dd38.tar.bz2
yuzu-80702aa88f6f448decfbb06dc14db470c221dd38.tar.lz
yuzu-80702aa88f6f448decfbb06dc14db470c221dd38.tar.xz
yuzu-80702aa88f6f448decfbb06dc14db470c221dd38.tar.zst
yuzu-80702aa88f6f448decfbb06dc14db470c221dd38.zip
-rw-r--r--src/video_core/gpu.h1
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp6
-rw-r--r--src/video_core/surface.cpp5
3 files changed, 9 insertions, 3 deletions
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h
index dea9dfef0..1a7f5bdf2 100644
--- a/src/video_core/gpu.h
+++ b/src/video_core/gpu.h
@@ -91,6 +91,7 @@ class DebugContext;
struct FramebufferConfig {
enum class PixelFormat : u32 {
ABGR8 = 1,
+ RGB565 = 4,
BGRA8 = 5,
};
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp
index 8c44b330e..af9684839 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.cpp
+++ b/src/video_core/renderer_opengl/renderer_opengl.cpp
@@ -285,7 +285,11 @@ void RendererOpenGL::ConfigureFramebufferTexture(TextureInfo& texture,
internal_format = GL_RGBA8;
texture.gl_format = GL_RGBA;
texture.gl_type = GL_UNSIGNED_INT_8_8_8_8_REV;
-
+ break;
+ case Tegra::FramebufferConfig::PixelFormat::RGB565:
+ internal_format = GL_RGB565;
+ texture.gl_format = GL_RGB;
+ texture.gl_type = GL_UNSIGNED_SHORT_5_6_5;
break;
default:
internal_format = GL_RGBA8;
diff --git a/src/video_core/surface.cpp b/src/video_core/surface.cpp
index c50f6354d..4ceb219be 100644
--- a/src/video_core/surface.cpp
+++ b/src/video_core/surface.cpp
@@ -445,11 +445,12 @@ PixelFormat PixelFormatFromGPUPixelFormat(Tegra::FramebufferConfig::PixelFormat
switch (format) {
case Tegra::FramebufferConfig::PixelFormat::ABGR8:
return PixelFormat::ABGR8U;
+ case Tegra::FramebufferConfig::PixelFormat::RGB565:
+ return PixelFormat::B5G6R5U;
case Tegra::FramebufferConfig::PixelFormat::BGRA8:
return PixelFormat::BGRA8;
default:
- LOG_CRITICAL(HW_GPU, "Unimplemented format={}", static_cast<u32>(format));
- UNREACHABLE();
+ UNIMPLEMENTED_MSG("Unimplemented format={}", static_cast<u32>(format));
return PixelFormat::ABGR8U;
}
}