early-access version 1318
This commit is contained in:
parent
4b3a0ea310
commit
adf2a4a752
3 changed files with 64 additions and 36 deletions
|
@ -1,7 +1,7 @@
|
||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 1317.
|
This is the source code for early-access 1318.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,40 @@
|
||||||
|
diff --git a/CMakeModules/GenerateSCMRev.cmake b/CMakeModules/GenerateSCMRev.cmake
|
||||||
|
--- a/CMakeModules/GenerateSCMRev.cmake
|
||||||
|
+++ b/CMakeModules/GenerateSCMRev.cmake
|
||||||
|
@@ -11,10 +11,10 @@
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
# generate git/build information
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
include(GetGitRevisionDescription)
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
-get_git_head_revision(GIT_REF_SPEC GIT_REV)
|
||||||
<html>
|
-git_describe(GIT_DESC --always --long --dirty)
|
||||||
<head>
|
-git_branch_name(GIT_BRANCH)
|
||||||
<title>503 Backend is unhealthy</title>
|
-get_timestamp(BUILD_DATE)
|
||||||
</head>
|
+#get_git_head_revision(GIT_REF_SPEC GIT_REV)
|
||||||
<body>
|
+#git_describe(GIT_DESC --always --long --dirty)
|
||||||
<h1>Error 503 Backend is unhealthy</h1>
|
+#git_branch_name(GIT_BRANCH)
|
||||||
<p>Backend is unhealthy</p>
|
+#get_timestamp(BUILD_DATE)
|
||||||
<h3>Guru Mediation:</h3>
|
|
||||||
<p>Details: cache-fra19153-FRA 1610670438 2624000569</p>
|
# Generate cpp with Git revision from template
|
||||||
<hr>
|
# Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well
|
||||||
<p>Varnish cache server</p>
|
@@ -113,4 +113,5 @@
|
||||||
</body>
|
set(COMBINED "${COMBINED}${TMP}")
|
||||||
</html>
|
endforeach()
|
||||||
|
string(MD5 SHADER_CACHE_VERSION "${COMBINED}")
|
||||||
|
+set(BUILD_FULLNAME "${BUILD_FULLNAME} ")
|
||||||
|
configure_file("${SRC_DIR}/src/common/scm_rev.cpp.in" "scm_rev.cpp" @ONLY)
|
||||||
|
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
|
||||||
|
--- a/src/common/CMakeLists.txt
|
||||||
|
+++ b/src/common/CMakeLists.txt
|
||||||
|
@@ -28,6 +28,12 @@
|
||||||
|
-DBUILD_TAG="${BUILD_TAG}"
|
||||||
|
-DBUILD_ID="${DISPLAY_VERSION}"
|
||||||
|
-DGIT_EXECUTABLE="${GIT_EXECUTABLE}"
|
||||||
|
+ -DGIT_REF_SPEC="${GIT_REF_SPEC}"
|
||||||
|
+ -DGIT_REV="${GIT_REV}"
|
||||||
|
+ -DGIT_DESC="${GIT_DESC}"
|
||||||
|
+ -DGIT_BRANCH="${GIT_BRANCH}"
|
||||||
|
+ -DBUILD_FULLNAME="${BUILD_FULLNAME}"
|
||||||
|
+ -DBUILD_DATE="${BUILD_DATE}"
|
||||||
|
-P "${CMAKE_SOURCE_DIR}/CMakeModules/GenerateSCMRev.cmake"
|
||||||
|
DEPENDS
|
||||||
|
# WARNING! It was too much work to try and make a common location for this list,
|
||||||
|
|
|
@ -42,21 +42,24 @@ constexpr u32 Popcnt(u32 n) {
|
||||||
|
|
||||||
class InputBitStream {
|
class InputBitStream {
|
||||||
public:
|
public:
|
||||||
constexpr explicit InputBitStream(const u8* ptr, std::size_t start_offset = 0)
|
constexpr explicit InputBitStream(std::span<const u8> data, size_t start_offset = 0)
|
||||||
: cur_byte{ptr}, next_bit{start_offset % 8} {}
|
: cur_byte{data.data()}, total_bits{data.size()}, next_bit{start_offset % 8} {}
|
||||||
|
|
||||||
constexpr std::size_t GetBitsRead() const {
|
constexpr size_t GetBitsRead() const {
|
||||||
return bits_read;
|
return bits_read;
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr bool ReadBit() {
|
constexpr bool ReadBit() {
|
||||||
const bool bit = (*cur_byte >> next_bit++) & 1;
|
if (bits_read >= total_bits * 8) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
const bool bit = ((*cur_byte >> next_bit) & 1) != 0;
|
||||||
|
++next_bit;
|
||||||
while (next_bit >= 8) {
|
while (next_bit >= 8) {
|
||||||
next_bit -= 8;
|
next_bit -= 8;
|
||||||
cur_byte++;
|
++cur_byte;
|
||||||
}
|
}
|
||||||
|
++bits_read;
|
||||||
bits_read++;
|
|
||||||
return bit;
|
return bit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,8 +82,9 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const u8* cur_byte;
|
const u8* cur_byte;
|
||||||
std::size_t next_bit = 0;
|
size_t total_bits = 0;
|
||||||
std::size_t bits_read = 0;
|
size_t next_bit = 0;
|
||||||
|
size_t bits_read = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class OutputBitStream {
|
class OutputBitStream {
|
||||||
|
@ -193,15 +197,15 @@ struct IntegerEncodedValue {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
using IntegerEncodedVector = boost::container::static_vector<
|
using IntegerEncodedVector = boost::container::static_vector<
|
||||||
IntegerEncodedValue, 64,
|
IntegerEncodedValue, 256,
|
||||||
boost::container::static_vector_options<
|
boost::container::static_vector_options<
|
||||||
boost::container::inplace_alignment<alignof(IntegerEncodedValue)>,
|
boost::container::inplace_alignment<alignof(IntegerEncodedValue)>,
|
||||||
boost::container::throw_on_overflow<false>>::type>;
|
boost::container::throw_on_overflow<false>>::type>;
|
||||||
|
|
||||||
static void DecodeTritBlock(InputBitStream& bits, IntegerEncodedVector& result, u32 nBitsPerValue) {
|
static void DecodeTritBlock(InputBitStream& bits, IntegerEncodedVector& result, u32 nBitsPerValue) {
|
||||||
// Implement the algorithm in section C.2.12
|
// Implement the algorithm in section C.2.12
|
||||||
u32 m[5];
|
std::array<u32, 5> m;
|
||||||
u32 t[5];
|
std::array<u32, 5> t;
|
||||||
u32 T;
|
u32 T;
|
||||||
|
|
||||||
// Read the trit encoded block according to
|
// Read the trit encoded block according to
|
||||||
|
@ -866,7 +870,7 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void DecodeColorValues(u32* out, u8* data, const u32* modes, const u32 nPartitions,
|
static void DecodeColorValues(u32* out, std::span<u8> data, const u32* modes, const u32 nPartitions,
|
||||||
const u32 nBitsForColorData) {
|
const u32 nBitsForColorData) {
|
||||||
// First figure out how many color values we have
|
// First figure out how many color values we have
|
||||||
u32 nValues = 0;
|
u32 nValues = 0;
|
||||||
|
@ -898,7 +902,7 @@ static void DecodeColorValues(u32* out, u8* data, const u32* modes, const u32 nP
|
||||||
// We now have enough to decode our integer sequence.
|
// We now have enough to decode our integer sequence.
|
||||||
IntegerEncodedVector decodedColorValues;
|
IntegerEncodedVector decodedColorValues;
|
||||||
|
|
||||||
InputBitStream colorStream(data);
|
InputBitStream colorStream(data, 0);
|
||||||
DecodeIntegerSequence(decodedColorValues, colorStream, range, nValues);
|
DecodeIntegerSequence(decodedColorValues, colorStream, range, nValues);
|
||||||
|
|
||||||
// Once we have the decoded values, we need to dequantize them to the 0-255 range
|
// Once we have the decoded values, we need to dequantize them to the 0-255 range
|
||||||
|
@ -1441,7 +1445,7 @@ static void ComputeEndpos32s(Pixel& ep1, Pixel& ep2, const u32*& colorValues,
|
||||||
|
|
||||||
static void DecompressBlock(std::span<const u8, 16> inBuf, const u32 blockWidth,
|
static void DecompressBlock(std::span<const u8, 16> inBuf, const u32 blockWidth,
|
||||||
const u32 blockHeight, std::span<u32, 12 * 12> outBuf) {
|
const u32 blockHeight, std::span<u32, 12 * 12> outBuf) {
|
||||||
InputBitStream strm(inBuf.data());
|
InputBitStream strm(inBuf);
|
||||||
TexelWeightParams weightParams = DecodeBlockInfo(strm);
|
TexelWeightParams weightParams = DecodeBlockInfo(strm);
|
||||||
|
|
||||||
// Was there an error?
|
// Was there an error?
|
||||||
|
@ -1619,15 +1623,16 @@ static void DecompressBlock(std::span<const u8, 16> inBuf, const u32 blockWidth,
|
||||||
|
|
||||||
// Make sure that higher non-texel bits are set to zero
|
// Make sure that higher non-texel bits are set to zero
|
||||||
const u32 clearByteStart = (weightParams.GetPackedBitSize() >> 3) + 1;
|
const u32 clearByteStart = (weightParams.GetPackedBitSize() >> 3) + 1;
|
||||||
if (clearByteStart > 0) {
|
if (clearByteStart > 0 && clearByteStart <= texelWeightData.size()) {
|
||||||
texelWeightData[clearByteStart - 1] &=
|
texelWeightData[clearByteStart - 1] &=
|
||||||
static_cast<u8>((1 << (weightParams.GetPackedBitSize() % 8)) - 1);
|
static_cast<u8>((1 << (weightParams.GetPackedBitSize() % 8)) - 1);
|
||||||
|
std::memset(texelWeightData.data() + clearByteStart, 0,
|
||||||
|
std::min(16U - clearByteStart, 16U));
|
||||||
}
|
}
|
||||||
std::memset(texelWeightData.data() + clearByteStart, 0, std::min(16U - clearByteStart, 16U));
|
|
||||||
|
|
||||||
IntegerEncodedVector texelWeightValues;
|
IntegerEncodedVector texelWeightValues;
|
||||||
|
|
||||||
InputBitStream weightStream(texelWeightData.data());
|
InputBitStream weightStream(texelWeightData);
|
||||||
|
|
||||||
DecodeIntegerSequence(texelWeightValues, weightStream, weightParams.m_MaxWeight,
|
DecodeIntegerSequence(texelWeightValues, weightStream, weightParams.m_MaxWeight,
|
||||||
weightParams.GetNumWeightValues());
|
weightParams.GetNumWeightValues());
|
||||||
|
|
Loading…
Reference in a new issue