[D3D12] Render target allocation fixes

This commit is contained in:
Triang3l 2018-08-10 19:11:03 +03:00
parent 6b9717c7f7
commit fe5ec61b51
1 changed files with 3 additions and 1 deletions

View File

@ -210,6 +210,8 @@ bool RenderTargetCache::UpdateRenderTargets() {
// Some render target is totally in the end of EDRAM, or nothing is drawn. // Some render target is totally in the end of EDRAM, or nothing is drawn.
return false; return false;
} }
// Don't create render targets larger than x2560.
edram_max_rows = std::min(edram_max_rows, 160u * msaa_samples_y);
// Check the following full update conditions: // Check the following full update conditions:
// - Render target is disabled and another render target got more space than // - Render target is disabled and another render target got more space than
// is currently available in the textures. // is currently available in the textures.
@ -486,7 +488,7 @@ bool RenderTargetCache::UpdateRenderTargets() {
rtv_handles[rtv_count] = binding.render_target->handle; rtv_handles[rtv_count] = binding.render_target->handle;
current_pipeline_render_targets_[rtv_count].guest_render_target = i; current_pipeline_render_targets_[rtv_count].guest_render_target = i;
current_pipeline_render_targets_[rtv_count].format = current_pipeline_render_targets_[rtv_count].format =
GetColorDXGIFormat(ColorRenderTargetFormat(formats[4])); GetColorDXGIFormat(ColorRenderTargetFormat(formats[i]));
++rtv_count; ++rtv_count;
} }
for (uint32_t i = rtv_count; i < 4; ++i) { for (uint32_t i = rtv_count; i < 4; ++i) {