mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-29 06:16:55 +01:00
graphics: accept video-out buffers with 128-byte independent DCC blocks (Gran Turismo 7) (#1945)
graphics: accept video-out buffers with 128-byte independent DCC blocks
This commit is contained in:
@@ -19,7 +19,13 @@ namespace Libs::Graphics {
|
|||||||
|
|
||||||
enum class ColorTransform : uint32_t { None, SwapBgra16, Reverse10_11_11 };
|
enum class ColorTransform : uint32_t { None, SwapBgra16, Reverse10_11_11 };
|
||||||
|
|
||||||
enum class VideoOutCompression : uint8_t { Uncompressed, Dcc256_256_0, Dcc256_64_64, Unsupported };
|
enum class VideoOutCompression : uint8_t {
|
||||||
|
Uncompressed,
|
||||||
|
Dcc256_256_0,
|
||||||
|
Dcc256_64_64,
|
||||||
|
Dcc128_128_128,
|
||||||
|
Unsupported
|
||||||
|
};
|
||||||
|
|
||||||
enum class ImageMetadataKind : uint8_t { None, Htile, Dcc, Cmask };
|
enum class ImageMetadataKind : uint8_t { None, Htile, Dcc, Cmask };
|
||||||
|
|
||||||
@@ -287,8 +293,9 @@ inline bool ImageInfo::IsDepth() const noexcept {
|
|||||||
[[nodiscard]] inline VideoOutCompression
|
[[nodiscard]] inline VideoOutCompression
|
||||||
ClassifyVideoOutCompression(bool compressed, uint64_t metadata_address, uint32_t dcc_control,
|
ClassifyVideoOutCompression(bool compressed, uint64_t metadata_address, uint32_t dcc_control,
|
||||||
uint64_t dcc_clear_color) noexcept {
|
uint64_t dcc_clear_color) noexcept {
|
||||||
constexpr uint32_t DCC_256_256_0 = 0x00000048u;
|
constexpr uint32_t DCC_256_256_0 = 0x00000048u;
|
||||||
constexpr uint32_t DCC_256_64_64 = 0x00000208u;
|
constexpr uint32_t DCC_256_64_64 = 0x00000208u;
|
||||||
|
constexpr uint32_t DCC_128_128_128 = 0x00100024u;
|
||||||
if (!compressed) {
|
if (!compressed) {
|
||||||
return metadata_address == 0 && dcc_control == 0 && dcc_clear_color == 0
|
return metadata_address == 0 && dcc_control == 0 && dcc_clear_color == 0
|
||||||
? VideoOutCompression::Uncompressed
|
? VideoOutCompression::Uncompressed
|
||||||
@@ -300,6 +307,7 @@ ClassifyVideoOutCompression(bool compressed, uint64_t metadata_address, uint32_t
|
|||||||
switch (dcc_control) {
|
switch (dcc_control) {
|
||||||
case DCC_256_256_0: return VideoOutCompression::Dcc256_256_0;
|
case DCC_256_256_0: return VideoOutCompression::Dcc256_256_0;
|
||||||
case DCC_256_64_64: return VideoOutCompression::Dcc256_64_64;
|
case DCC_256_64_64: return VideoOutCompression::Dcc256_64_64;
|
||||||
|
case DCC_128_128_128: return VideoOutCompression::Dcc128_128_128;
|
||||||
default: return VideoOutCompression::Unsupported;
|
default: return VideoOutCompression::Unsupported;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user