summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgibbed <rick@gibbed.us>2017-08-08 01:39:42 -0500
committergibbed <rick@gibbed.us>2017-08-08 01:39:42 -0500
commit4a9586202363060ac409e9d7338349a78cea5d84 (patch)
tree80b70a5ba58230c8906d450e602581d3b87b72bb
parentd2d8d6562951ba7207ffa9df06c27471817166ae (diff)
GPU: Ensure texture resolves are at least 1x1.
-rw-r--r--src/xenia/gpu/texture_info.cc2
-rw-r--r--src/xenia/gpu/vulkan/vulkan_command_processor.cc4
2 files changed, 4 insertions, 2 deletions
diff --git a/src/xenia/gpu/texture_info.cc b/src/xenia/gpu/texture_info.cc
index bab7a890f..ae0f59042 100644
--- a/src/xenia/gpu/texture_info.cc
+++ b/src/xenia/gpu/texture_info.cc
@@ -93,6 +93,8 @@ bool TextureInfo::PrepareResolve(uint32_t physical_address,
auto& info = *out_info;
info.guest_address = physical_address;
info.dimension = Dimension::k2D;
+ assert_true(width > 0);
+ assert_true(height > 0);
info.width = width - 1;
info.height = height - 1;
info.texture_format = texture_format;
diff --git a/src/xenia/gpu/vulkan/vulkan_command_processor.cc b/src/xenia/gpu/vulkan/vulkan_command_processor.cc
index 571bacfb2..ccbc5d413 100644
--- a/src/xenia/gpu/vulkan/vulkan_command_processor.cc
+++ b/src/xenia/gpu/vulkan/vulkan_command_processor.cc
@@ -1012,8 +1012,8 @@ bool VulkanCommandProcessor::IssueCopy() {
// Demand a resolve texture from the texture cache.
TextureInfo texture_info;
TextureInfo::PrepareResolve(copy_dest_base, copy_dest_format, resolve_endian,
- dest_logical_width, dest_logical_height,
- &texture_info);
+ dest_logical_width,
+ std::max(1u, dest_logical_height), &texture_info);
auto texture =
texture_cache_->DemandResolveTexture(texture_info, copy_dest_format);