From 9fa6f1f2610ca847b39406d70a7ac81a1c892d0e Mon Sep 17 00:00:00 2001 From: pineappleEA Date: Mon, 17 Jan 2022 00:57:42 +0100 Subject: [PATCH] early-access version 2404 --- README.md | 2 +- src/CMakeLists.txt | 5 +- src/video_core/host_shaders/astc_decoder.comp | 80 +++++++++++-------- 3 files changed, 49 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index ca4098df6..2447f57f4 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ yuzu emulator early access ============= -This is the source code for early-access 2402. +This is the source code for early-access 2404. ## Legal Notice diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 19f7ba339..4ee98beba 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -23,7 +23,6 @@ if (MSVC) # /W3 - Level 3 warnings # /MP - Multi-threaded compilation - # /Zf - Improves PDB generation time in parallel builds # /Zi - Output debugging information # /Zm - Specifies the precompiled header memory allocation limit # /Zo - Enhanced debug info for optimized builds @@ -37,9 +36,9 @@ if (MSVC) # /GT - Supports fiber safety for data allocated using static thread-local storage add_compile_options( /MP - /Zf /Zi - /Zm400 + /Zm300 + /Zf /Zo /permissive- /EHsc diff --git a/src/video_core/host_shaders/astc_decoder.comp b/src/video_core/host_shaders/astc_decoder.comp index f34c5f5d9..3a10578cb 100755 --- a/src/video_core/host_shaders/astc_decoder.comp +++ b/src/video_core/host_shaders/astc_decoder.comp @@ -155,9 +155,6 @@ uint SwizzleOffset(uvec2 pos) { // Replicates low num_bits such that [(to_bit - 1):(to_bit - 1 - from_bit)] // is the same as [(num_bits - 1):0] and repeats all the way down. uint Replicate(uint val, uint num_bits, uint to_bit) { - if (num_bits == 0 || to_bit == 0) { - return 0; - } const uint v = val & uint((1 << num_bits) - 1); uint res = v; uint reslen = num_bits; @@ -187,42 +184,57 @@ uint ReplicateBitTo9(uint value) { return REPLICATE_1_BIT_TO_9_TABLE[value]; } -uint FastReplicateTo8(uint value, uint num_bits) { - switch (num_bits) { - case 1: - return REPLICATE_1_BIT_TO_8_TABLE[value]; - case 2: - return REPLICATE_2_BIT_TO_8_TABLE[value]; - case 3: - return REPLICATE_3_BIT_TO_8_TABLE[value]; - case 4: - return REPLICATE_4_BIT_TO_8_TABLE[value]; - case 5: - return REPLICATE_5_BIT_TO_8_TABLE[value]; - case 6: - return REPLICATE_6_BIT_TO_8_TABLE[value]; - case 7: - return REPLICATE_7_BIT_TO_8_TABLE[value]; - case 8: +uint FastReplicate(uint value, uint num_bits, uint to_bit) { + if (num_bits == 0) { + return 0; + } + if (num_bits == to_bit) { return value; } - return Replicate(value, num_bits, 8); + if (to_bit == 6) { + switch (num_bits) { + case 1: + return REPLICATE_1_BIT_TO_6_TABLE[value]; + case 2: + return REPLICATE_2_BIT_TO_6_TABLE[value]; + case 3: + return REPLICATE_3_BIT_TO_6_TABLE[value]; + case 4: + return REPLICATE_4_BIT_TO_6_TABLE[value]; + case 5: + return REPLICATE_5_BIT_TO_6_TABLE[value]; + default: + break; + } + } else { /* if (to_bit == 8) */ + switch (num_bits) { + case 1: + return REPLICATE_1_BIT_TO_8_TABLE[value]; + case 2: + return REPLICATE_2_BIT_TO_8_TABLE[value]; + case 3: + return REPLICATE_3_BIT_TO_8_TABLE[value]; + case 4: + return REPLICATE_4_BIT_TO_8_TABLE[value]; + case 5: + return REPLICATE_5_BIT_TO_8_TABLE[value]; + case 6: + return REPLICATE_6_BIT_TO_8_TABLE[value]; + case 7: + return REPLICATE_7_BIT_TO_8_TABLE[value]; + default: + break; + } + } + return Replicate(value, num_bits, to_bit); +} + +uint FastReplicateTo8(uint value, uint num_bits) { + return FastReplicate(value, num_bits, 8); } uint FastReplicateTo6(uint value, uint num_bits) { - switch (num_bits) { - case 1: - return REPLICATE_1_BIT_TO_6_TABLE[value]; - case 2: - return REPLICATE_2_BIT_TO_6_TABLE[value]; - case 3: - return REPLICATE_3_BIT_TO_6_TABLE[value]; - case 4: - return REPLICATE_4_BIT_TO_6_TABLE[value]; - case 5: - return REPLICATE_5_BIT_TO_6_TABLE[value]; - } - return Replicate(value, num_bits, 6); + return FastReplicate(value, num_bits, 6); } uint Div3Floor(uint v) {