summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp6
-rw-r--r--src/video_core/texture_cache/texture_cache.h5
2 files changed, 9 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 2d6fd154a..2872dbdeb 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -370,10 +370,12 @@ void RasterizerOpenGL::SetupCachedFramebuffer(const FramebufferCacheKey& fbkey,
return;
if (fbkey.is_single_buffer) {
- if (fbkey.color_attachments[0] != GL_NONE) {
+ if (fbkey.color_attachments[0] != GL_NONE && fbkey.colors[0]) {
fbkey.colors[0]->Attach(fbkey.color_attachments[0]);
+ glDrawBuffer(fbkey.color_attachments[0]);
+ } else {
+ glDrawBuffer(GL_NONE);
}
- glDrawBuffer(fbkey.color_attachments[0]);
} else {
for (std::size_t index = 0; index < Maxwell::NumRenderTargets; ++index) {
if (fbkey.colors[index]) {
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index 1b8ada910..7058399e2 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -133,6 +133,11 @@ public:
return {};
}
+ if (regs.color_mask[index].raw != 0) {
+ SetEmptyColorBuffer(index);
+ return {};
+ }
+
const auto& config{regs.rt[index]};
const auto gpu_addr{config.Address()};
if (!gpu_addr) {