summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-07-21 03:07:18 -0300
committerGravatar Fernando Sahmkow2021-11-16 22:11:27 +0100
commitd464b122d5385105a6f4b0bc34bc1695c706417c (patch)
treeccaaa8ef85f026eb18b5cb8354279b4680822a27 /src
parentFix blits (diff)
downloadyuzu-d464b122d5385105a6f4b0bc34bc1695c706417c.tar.gz
yuzu-d464b122d5385105a6f4b0bc34bc1695c706417c.tar.xz
yuzu-d464b122d5385105a6f4b0bc34bc1695c706417c.zip
Fix blits with mips
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_vulkan/vk_texture_cache.cpp28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
index b061ea08b..4e05058c9 100644
--- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
@@ -1128,8 +1128,8 @@ bool Image::ScaleUp(bool save_as_backup) {
1128 .z = 0, 1128 .z = 0,
1129 }, 1129 },
1130 { 1130 {
1131 .x = s32(info.size.width), 1131 .x = static_cast<s32>(info.size.width),
1132 .y = s32(info.size.height), 1132 .y = static_cast<s32>(info.size.height),
1133 .z = 1, 1133 .z = 1,
1134 }, 1134 },
1135 }, 1135 },
@@ -1146,8 +1146,10 @@ bool Image::ScaleUp(bool save_as_backup) {
1146 .z = 0, 1146 .z = 0,
1147 }, 1147 },
1148 { 1148 {
1149 .x = s32(scale_up(info.size.width)), 1149 .x = std::max(1, static_cast<s32>(scale_up(info.size.width)) >> level),
1150 .y = is_2d ? s32(scale_up(info.size.height)) : s32(info.size.height), 1150 .y = std::max(1, static_cast<s32>(is_2d ? scale_up(info.size.height)
1151 : info.size.height) >>
1152 level),
1151 .z = 1, 1153 .z = 1,
1152 }, 1154 },
1153 }, 1155 },
@@ -1199,9 +1201,9 @@ bool Image::ScaleDown(bool save_as_backup) {
1199 regions.push_back({ 1201 regions.push_back({
1200 .srcSubresource{ 1202 .srcSubresource{
1201 .aspectMask = aspect_mask, 1203 .aspectMask = aspect_mask,
1202 .mipLevel = u32(level), 1204 .mipLevel = static_cast<u32>(level),
1203 .baseArrayLayer = 0, 1205 .baseArrayLayer = 0,
1204 .layerCount = u32(info.resources.layers), 1206 .layerCount = static_cast<u32>(info.resources.layers),
1205 }, 1207 },
1206 .srcOffsets{ 1208 .srcOffsets{
1207 { 1209 {
@@ -1210,16 +1212,18 @@ bool Image::ScaleDown(bool save_as_backup) {
1210 .z = 0, 1212 .z = 0,
1211 }, 1213 },
1212 { 1214 {
1213 .x = s32(scale_up(info.size.width)), 1215 .x = std::max(1, static_cast<s32>(scale_up(info.size.width)) >> level),
1214 .y = is_2d ? s32(scale_up(info.size.height)) : s32(info.size.height), 1216 .y = std::max(1, static_cast<s32>(is_2d ? scale_up(info.size.height)
1217 : info.size.height) >>
1218 level),
1215 .z = 1, 1219 .z = 1,
1216 }, 1220 },
1217 }, 1221 },
1218 .dstSubresource{ 1222 .dstSubresource{
1219 .aspectMask = aspect_mask, 1223 .aspectMask = aspect_mask,
1220 .mipLevel = u32(level), 1224 .mipLevel = static_cast<u32>(level),
1221 .baseArrayLayer = 0, 1225 .baseArrayLayer = 0,
1222 .layerCount = u32(info.resources.layers), 1226 .layerCount = static_cast<u32>(info.resources.layers),
1223 }, 1227 },
1224 .dstOffsets{ 1228 .dstOffsets{
1225 { 1229 {
@@ -1228,8 +1232,8 @@ bool Image::ScaleDown(bool save_as_backup) {
1228 .z = 0, 1232 .z = 0,
1229 }, 1233 },
1230 { 1234 {
1231 .x = s32(info.size.width), 1235 .x = std::max(1, static_cast<s32>(info.size.width) >> level),
1232 .y = s32(info.size.height), 1236 .y = std::max(1, static_cast<s32>(info.size.height) >> level),
1233 .z = 1, 1237 .z = 1,
1234 }, 1238 },
1235 }, 1239 },