summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-07-18 10:45:27 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-07-18 10:45:27 +0200
commit0f1e2c38a80b88a2f4a26d90add36fd2a6bcbd23 (patch)
tree2dd5e074fd2062355eb09bd030fc760b686a9991
parent83dd7410e0647f6cd50253b10dff93e3908f7f8d (diff)
parent00e89229bf201f863fc6d45a8c1469f11b7eb6b4 (diff)
downloadredot-engine-0f1e2c38a80b88a2f4a26d90add36fd2a6bcbd23.tar.gz
Merge pull request #94069 from RandomShaper/fix_vk_vali_blocky
RenderingDevice: Leave handling of compressed block granularity to the driver
-rw-r--r--servers/rendering/rendering_device.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/servers/rendering/rendering_device.cpp b/servers/rendering/rendering_device.cpp
index c65d3bec95..2784e22429 100644
--- a/servers/rendering/rendering_device.cpp
+++ b/servers/rendering/rendering_device.cpp
@@ -1617,9 +1617,6 @@ Vector<uint8_t> RenderingDevice::texture_get_data(RID p_texture, uint32_t p_laye
thread_local LocalVector<RDD::BufferTextureCopyRegion> command_buffer_texture_copy_regions_vector;
command_buffer_texture_copy_regions_vector.clear();
- uint32_t block_w = 0, block_h = 0;
- get_compressed_image_format_block_dimensions(tex->format, block_w, block_h);
-
uint32_t w = tex->width;
uint32_t h = tex->height;
uint32_t d = tex->depth;
@@ -1635,8 +1632,8 @@ Vector<uint8_t> RenderingDevice::texture_get_data(RID p_texture, uint32_t p_laye
copy_region.texture_region_size.z = d;
command_buffer_texture_copy_regions_vector.push_back(copy_region);
- w = MAX(block_w, w >> 1);
- h = MAX(block_h, h >> 1);
+ w = (w >> 1);
+ h = (h >> 1);
d = MAX(1u, d >> 1);
}
@@ -1653,6 +1650,10 @@ Vector<uint8_t> RenderingDevice::texture_get_data(RID p_texture, uint32_t p_laye
const uint8_t *read_ptr = driver->buffer_map(tmp_buffer);
ERR_FAIL_NULL_V(read_ptr, Vector<uint8_t>());
+ uint32_t block_w = 0;
+ uint32_t block_h = 0;
+ get_compressed_image_format_block_dimensions(tex->format, block_w, block_h);
+
Vector<uint8_t> buffer_data;
uint32_t tight_buffer_size = get_image_format_required_size(tex->format, tex->width, tex->height, tex->depth, tex->mipmaps);
buffer_data.resize(tight_buffer_size);