Merge pull request #9155 from FernandoS27/goosfraba

Vulkan: Fix regression caused by limiting render area to width/height of render targets.
This commit is contained in:
bunnei 2022-10-30 17:34:28 -07:00 committed by GitHub
commit f39d2cf78b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1782,17 +1782,17 @@ void Framebuffer::CreateFramebuffer(TextureCacheRuntime& runtime,
const auto& resolution = runtime.resolution;
u32 width = 0;
u32 height = 0;
u32 width = std::numeric_limits<u32>::max();
u32 height = std::numeric_limits<u32>::max();
for (size_t index = 0; index < NUM_RT; ++index) {
const ImageView* const color_buffer = color_buffers[index];
if (!color_buffer) {
renderpass_key.color_formats[index] = PixelFormat::Invalid;
continue;
}
width = std::max(width, is_rescaled ? resolution.ScaleUp(color_buffer->size.width)
width = std::min(width, is_rescaled ? resolution.ScaleUp(color_buffer->size.width)
: color_buffer->size.width);
height = std::max(height, is_rescaled ? resolution.ScaleUp(color_buffer->size.height)
height = std::min(height, is_rescaled ? resolution.ScaleUp(color_buffer->size.height)
: color_buffer->size.height);
attachments.push_back(color_buffer->RenderTarget());
renderpass_key.color_formats[index] = color_buffer->format;
@ -1804,9 +1804,9 @@ void Framebuffer::CreateFramebuffer(TextureCacheRuntime& runtime,
}
const size_t num_colors = attachments.size();
if (depth_buffer) {
width = std::max(width, is_rescaled ? resolution.ScaleUp(depth_buffer->size.width)
width = std::min(width, is_rescaled ? resolution.ScaleUp(depth_buffer->size.width)
: depth_buffer->size.width);
height = std::max(height, is_rescaled ? resolution.ScaleUp(depth_buffer->size.height)
height = std::min(height, is_rescaled ? resolution.ScaleUp(depth_buffer->size.height)
: depth_buffer->size.height);
attachments.push_back(depth_buffer->RenderTarget());
renderpass_key.depth_format = depth_buffer->format;