summaryrefslogtreecommitdiff
path: root/src/video_core/host_shaders
diff options
context:
space:
mode:
authorGravatar Ameer J2023-08-09 18:34:57 -0400
committerGravatar Ameer J2023-08-09 18:34:57 -0400
commit71857e889e3403621d78a2fceaf8265b1113f89f (patch)
tree74f1037701037acb7f141ce6034102546da2680a /src/video_core/host_shaders
parentGetUnquantizedWeightVector (diff)
downloadyuzu-71857e889e3403621d78a2fceaf8265b1113f89f.tar.gz
yuzu-71857e889e3403621d78a2fceaf8265b1113f89f.tar.xz
yuzu-71857e889e3403621d78a2fceaf8265b1113f89f.zip
flatten result vector
Diffstat (limited to 'src/video_core/host_shaders')
-rw-r--r--src/video_core/host_shaders/astc_decoder.comp19
1 files changed, 5 insertions, 14 deletions
diff --git a/src/video_core/host_shaders/astc_decoder.comp b/src/video_core/host_shaders/astc_decoder.comp
index 4014d4bfe..70f147d80 100644
--- a/src/video_core/host_shaders/astc_decoder.comp
+++ b/src/video_core/host_shaders/astc_decoder.comp
@@ -77,7 +77,7 @@ int color_bitsread = 0;
77#define DIVCEIL(number, divisor) (number + divisor - 1) / divisor 77#define DIVCEIL(number, divisor) (number + divisor - 1) / divisor
78#define ARRAY_NUM_ELEMENTS 144 78#define ARRAY_NUM_ELEMENTS 144
79#define VECTOR_ARRAY_SIZE DIVCEIL(ARRAY_NUM_ELEMENTS * 2, 4) 79#define VECTOR_ARRAY_SIZE DIVCEIL(ARRAY_NUM_ELEMENTS * 2, 4)
80uvec4 result_vector[VECTOR_ARRAY_SIZE]; 80uint result_vector[ARRAY_NUM_ELEMENTS * 2];
81 81
82int result_index = 0; 82int result_index = 0;
83uint result_vector_max_index; 83uint result_vector_max_index;
@@ -122,9 +122,7 @@ void ResultEmplaceBack(EncodingData val) {
122 result_limit_reached = true; 122 result_limit_reached = true;
123 return; 123 return;
124 } 124 }
125 const uint array_index = result_index / 4; 125 result_vector[result_index] = val.data;
126 const uint vector_index = result_index % 4;
127 result_vector[array_index][vector_index] = val.data;
128 ++result_index; 126 ++result_index;
129} 127}
130 128
@@ -309,10 +307,7 @@ uint StreamColorBits(uint num_bits) {
309} 307}
310 308
311EncodingData GetEncodingFromVector(uint index) { 309EncodingData GetEncodingFromVector(uint index) {
312 const uint array_index = index / 4; 310 const uint data = result_vector[index];
313 const uint vector_index = index % 4;
314
315 const uint data = result_vector[array_index][vector_index];
316 return EncodingData(data); 311 return EncodingData(data);
317} 312}
318 313
@@ -809,18 +804,14 @@ void UnquantizeTexelWeights(uvec2 size, bool is_dual_plane) {
809 const uint area = size.x * size.y; 804 const uint area = size.x * size.y;
810 const uint loop_count = min(result_index, area * num_planes); 805 const uint loop_count = min(result_index, area * num_planes);
811 for (uint itr = 0; itr < loop_count; ++itr) { 806 for (uint itr = 0; itr < loop_count; ++itr) {
812 const uint array_index = itr / 4; 807 result_vector[itr] =
813 const uint vector_index = itr % 4;
814 result_vector[array_index][vector_index] =
815 UnquantizeTexelWeight(GetEncodingFromVector(itr)); 808 UnquantizeTexelWeight(GetEncodingFromVector(itr));
816 } 809 }
817} 810}
818 811
819uint GetUnquantizedTexelWieght(uint offset_base, uint plane, bool is_dual_plane) { 812uint GetUnquantizedTexelWieght(uint offset_base, uint plane, bool is_dual_plane) {
820 const uint offset = is_dual_plane ? 2 * offset_base + plane : offset_base; 813 const uint offset = is_dual_plane ? 2 * offset_base + plane : offset_base;
821 const uint array_index = offset / 4; 814 return result_vector[offset];
822 const uint vector_index = offset % 4;
823 return result_vector[array_index][vector_index];
824} 815}
825 816
826uvec4 GetUnquantizedWeightVector(uint t, uint s, uvec2 size, uint plane_index, bool is_dual_plane) { 817uvec4 GetUnquantizedWeightVector(uint t, uint s, uvec2 size, uint plane_index, bool is_dual_plane) {