Browse Source

texture_cache return invalid buffer on deactivated color_mask

nce_cpp
Fernando Sahmkow 7 years ago
committed by ReinUsesLisp
parent
commit
4298dc8290
  1. 6
      src/video_core/renderer_opengl/gl_rasterizer.cpp
  2. 5
      src/video_core/texture_cache/texture_cache.h

6
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]) {

5
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) {

Loading…
Cancel
Save