diff options
| author | 2018-11-16 07:07:11 -0800 | |
|---|---|---|
| committer | 2018-11-16 07:07:11 -0800 | |
| commit | 241646f423ae20d7d4a989c16f7e47ffc0fbab95 (patch) | |
| tree | dd3eba7cf3bfa6e2342385d51b193ab486a93673 | |
| parent | Merge pull request #1632 from DarkLordZach/keys-manager-optimizations (diff) | |
| parent | textures/decoders: Minor cleanup (diff) | |
| download | yuzu-241646f423ae20d7d4a989c16f7e47ffc0fbab95.tar.gz yuzu-241646f423ae20d7d4a989c16f7e47ffc0fbab95.tar.xz yuzu-241646f423ae20d7d4a989c16f7e47ffc0fbab95.zip | |
Merge pull request #1701 from FreddyFunk/decoders
textures/decoders: Minor cleanup
Diffstat (limited to '')
| -rw-r--r-- | src/video_core/textures/decoders.cpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/video_core/textures/decoders.cpp b/src/video_core/textures/decoders.cpp index a9d134d14..19f30b1b5 100644 --- a/src/video_core/textures/decoders.cpp +++ b/src/video_core/textures/decoders.cpp | |||
| @@ -45,7 +45,7 @@ constexpr auto fast_swizzle_table = SwizzleTable<8, 4, 16>(); | |||
| 45 | * Instead of going gob by gob, we map the coordinates inside a block and manage from | 45 | * Instead of going gob by gob, we map the coordinates inside a block and manage from |
| 46 | * those. Block_Width is assumed to be 1. | 46 | * those. Block_Width is assumed to be 1. |
| 47 | */ | 47 | */ |
| 48 | void PreciseProcessBlock(u8* swizzled_data, u8* unswizzled_data, const bool unswizzle, | 48 | void PreciseProcessBlock(u8* const swizzled_data, u8* const unswizzled_data, const bool unswizzle, |
| 49 | const u32 x_start, const u32 y_start, const u32 z_start, const u32 x_end, | 49 | const u32 x_start, const u32 y_start, const u32 z_start, const u32 x_end, |
| 50 | const u32 y_end, const u32 z_end, const u32 tile_offset, | 50 | const u32 y_end, const u32 z_end, const u32 tile_offset, |
| 51 | const u32 xy_block_size, const u32 layer_z, const u32 stride_x, | 51 | const u32 xy_block_size, const u32 layer_z, const u32 stride_x, |
| @@ -81,7 +81,7 @@ void PreciseProcessBlock(u8* swizzled_data, u8* unswizzled_data, const bool unsw | |||
| 81 | * Instead of going gob by gob, we map the coordinates inside a block and manage from | 81 | * Instead of going gob by gob, we map the coordinates inside a block and manage from |
| 82 | * those. Block_Width is assumed to be 1. | 82 | * those. Block_Width is assumed to be 1. |
| 83 | */ | 83 | */ |
| 84 | void FastProcessBlock(u8* swizzled_data, u8* unswizzled_data, const bool unswizzle, | 84 | void FastProcessBlock(u8* const swizzled_data, u8* const unswizzled_data, const bool unswizzle, |
| 85 | const u32 x_start, const u32 y_start, const u32 z_start, const u32 x_end, | 85 | const u32 x_start, const u32 y_start, const u32 z_start, const u32 x_end, |
| 86 | const u32 y_end, const u32 z_end, const u32 tile_offset, | 86 | const u32 y_end, const u32 z_end, const u32 tile_offset, |
| 87 | const u32 xy_block_size, const u32 layer_z, const u32 stride_x, | 87 | const u32 xy_block_size, const u32 layer_z, const u32 stride_x, |
| @@ -90,10 +90,10 @@ void FastProcessBlock(u8* swizzled_data, u8* unswizzled_data, const bool unswizz | |||
| 90 | u32 z_address = tile_offset; | 90 | u32 z_address = tile_offset; |
| 91 | const u32 x_startb = x_start * bytes_per_pixel; | 91 | const u32 x_startb = x_start * bytes_per_pixel; |
| 92 | const u32 x_endb = x_end * bytes_per_pixel; | 92 | const u32 x_endb = x_end * bytes_per_pixel; |
| 93 | const u32 copy_size = 16; | 93 | constexpr u32 copy_size = 16; |
| 94 | const u32 gob_size_x = 64; | 94 | constexpr u32 gob_size_x = 64; |
| 95 | const u32 gob_size_y = 8; | 95 | constexpr u32 gob_size_y = 8; |
| 96 | const u32 gob_size_z = 1; | 96 | constexpr u32 gob_size_z = 1; |
| 97 | const u32 gob_size = gob_size_x * gob_size_y * gob_size_z; | 97 | const u32 gob_size = gob_size_x * gob_size_y * gob_size_z; |
| 98 | for (u32 z = z_start; z < z_end; z++) { | 98 | for (u32 z = z_start; z < z_end; z++) { |
| 99 | u32 y_address = z_address; | 99 | u32 y_address = z_address; |
| @@ -126,23 +126,23 @@ void FastProcessBlock(u8* swizzled_data, u8* unswizzled_data, const bool unswizz | |||
| 126 | * https://envytools.readthedocs.io/en/latest/hw/memory/g80-surface.html#blocklinear-surfaces | 126 | * https://envytools.readthedocs.io/en/latest/hw/memory/g80-surface.html#blocklinear-surfaces |
| 127 | */ | 127 | */ |
| 128 | template <bool fast> | 128 | template <bool fast> |
| 129 | void SwizzledData(u8* swizzled_data, u8* unswizzled_data, const bool unswizzle, const u32 width, | 129 | void SwizzledData(u8* const swizzled_data, u8* const unswizzled_data, const bool unswizzle, |
| 130 | const u32 height, const u32 depth, const u32 bytes_per_pixel, | 130 | const u32 width, const u32 height, const u32 depth, const u32 bytes_per_pixel, |
| 131 | const u32 out_bytes_per_pixel, const u32 block_height, const u32 block_depth) { | 131 | const u32 out_bytes_per_pixel, const u32 block_height, const u32 block_depth) { |
| 132 | auto div_ceil = [](const u32 x, const u32 y) { return ((x + y - 1) / y); }; | 132 | auto div_ceil = [](const u32 x, const u32 y) { return ((x + y - 1) / y); }; |
| 133 | const u32 stride_x = width * out_bytes_per_pixel; | 133 | const u32 stride_x = width * out_bytes_per_pixel; |
| 134 | const u32 layer_z = height * stride_x; | 134 | const u32 layer_z = height * stride_x; |
| 135 | const u32 gob_x_bytes = 64; | 135 | constexpr u32 gob_x_bytes = 64; |
| 136 | const u32 gob_elements_x = gob_x_bytes / bytes_per_pixel; | 136 | const u32 gob_elements_x = gob_x_bytes / bytes_per_pixel; |
| 137 | const u32 gob_elements_y = 8; | 137 | constexpr u32 gob_elements_y = 8; |
| 138 | const u32 gob_elements_z = 1; | 138 | constexpr u32 gob_elements_z = 1; |
| 139 | const u32 block_x_elements = gob_elements_x; | 139 | const u32 block_x_elements = gob_elements_x; |
| 140 | const u32 block_y_elements = gob_elements_y * block_height; | 140 | const u32 block_y_elements = gob_elements_y * block_height; |
| 141 | const u32 block_z_elements = gob_elements_z * block_depth; | 141 | const u32 block_z_elements = gob_elements_z * block_depth; |
| 142 | const u32 blocks_on_x = div_ceil(width, block_x_elements); | 142 | const u32 blocks_on_x = div_ceil(width, block_x_elements); |
| 143 | const u32 blocks_on_y = div_ceil(height, block_y_elements); | 143 | const u32 blocks_on_y = div_ceil(height, block_y_elements); |
| 144 | const u32 blocks_on_z = div_ceil(depth, block_z_elements); | 144 | const u32 blocks_on_z = div_ceil(depth, block_z_elements); |
| 145 | const u32 gob_size = gob_x_bytes * gob_elements_y * gob_elements_z; | 145 | constexpr u32 gob_size = gob_x_bytes * gob_elements_y * gob_elements_z; |
| 146 | const u32 xy_block_size = gob_size * block_height; | 146 | const u32 xy_block_size = gob_size * block_height; |
| 147 | const u32 block_size = xy_block_size * block_depth; | 147 | const u32 block_size = xy_block_size * block_depth; |
| 148 | u32 tile_offset = 0; | 148 | u32 tile_offset = 0; |
| @@ -171,7 +171,7 @@ void SwizzledData(u8* swizzled_data, u8* unswizzled_data, const bool unswizzle, | |||
| 171 | } | 171 | } |
| 172 | 172 | ||
| 173 | void CopySwizzledData(u32 width, u32 height, u32 depth, u32 bytes_per_pixel, | 173 | void CopySwizzledData(u32 width, u32 height, u32 depth, u32 bytes_per_pixel, |
| 174 | u32 out_bytes_per_pixel, u8* swizzled_data, u8* unswizzled_data, | 174 | u32 out_bytes_per_pixel, u8* const swizzled_data, u8* const unswizzled_data, |
| 175 | bool unswizzle, u32 block_height, u32 block_depth) { | 175 | bool unswizzle, u32 block_height, u32 block_depth) { |
| 176 | if (bytes_per_pixel % 3 != 0 && (width * bytes_per_pixel) % 16 == 0) { | 176 | if (bytes_per_pixel % 3 != 0 && (width * bytes_per_pixel) % 16 == 0) { |
| 177 | SwizzledData<true>(swizzled_data, unswizzled_data, unswizzle, width, height, depth, | 177 | SwizzledData<true>(swizzled_data, unswizzled_data, unswizzle, width, height, depth, |
| @@ -325,9 +325,9 @@ std::vector<u8> DecodeTexture(const std::vector<u8>& texture_data, TextureFormat | |||
| 325 | std::size_t CalculateSize(bool tiled, u32 bytes_per_pixel, u32 width, u32 height, u32 depth, | 325 | std::size_t CalculateSize(bool tiled, u32 bytes_per_pixel, u32 width, u32 height, u32 depth, |
| 326 | u32 block_height, u32 block_depth) { | 326 | u32 block_height, u32 block_depth) { |
| 327 | if (tiled) { | 327 | if (tiled) { |
| 328 | const u32 gobs_in_x = 64; | 328 | constexpr u32 gobs_in_x = 64; |
| 329 | const u32 gobs_in_y = 8; | 329 | constexpr u32 gobs_in_y = 8; |
| 330 | const u32 gobs_in_z = 1; | 330 | constexpr u32 gobs_in_z = 1; |
| 331 | const u32 aligned_width = Common::AlignUp(width * bytes_per_pixel, gobs_in_x); | 331 | const u32 aligned_width = Common::AlignUp(width * bytes_per_pixel, gobs_in_x); |
| 332 | const u32 aligned_height = Common::AlignUp(height, gobs_in_y * block_height); | 332 | const u32 aligned_height = Common::AlignUp(height, gobs_in_y * block_height); |
| 333 | const u32 aligned_depth = Common::AlignUp(depth, gobs_in_z * block_depth); | 333 | const u32 aligned_depth = Common::AlignUp(depth, gobs_in_z * block_depth); |