forked from suyu/suyu
texture_cache: Style and Corrections
This commit is contained in:
parent
51ba60b27e
commit
d1812316e1
7 changed files with 75 additions and 71 deletions
|
@ -104,7 +104,7 @@ constexpr std::tuple<const char*, const char*, u32> GetPrimitiveDescription(GLen
|
||||||
std::size_t CalculateProgramSize(const GLShader::ProgramCode& program) {
|
std::size_t CalculateProgramSize(const GLShader::ProgramCode& program) {
|
||||||
constexpr std::size_t start_offset = 10;
|
constexpr std::size_t start_offset = 10;
|
||||||
constexpr u64 key = 0xE2400FFFFF07000FULL;
|
constexpr u64 key = 0xE2400FFFFF07000FULL;
|
||||||
constexpr u64 mask =0xFFFFFFFFFF7FFFFFULL;
|
constexpr u64 mask = 0xFFFFFFFFFF7FFFFFULL;
|
||||||
std::size_t offset = start_offset;
|
std::size_t offset = start_offset;
|
||||||
std::size_t size = start_offset * sizeof(u64);
|
std::size_t size = start_offset * sizeof(u64);
|
||||||
while (offset < program.size()) {
|
while (offset < program.size()) {
|
||||||
|
|
|
@ -339,7 +339,8 @@ struct MetaImage {
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Parameters that modify an operation but are not part of any particular operand
|
/// Parameters that modify an operation but are not part of any particular operand
|
||||||
using Meta = std::variant<MetaArithmetic, MetaTexture, MetaImage, MetaStackClass, Tegra::Shader::HalfType>;
|
using Meta =
|
||||||
|
std::variant<MetaArithmetic, MetaTexture, MetaImage, MetaStackClass, Tegra::Shader::HalfType>;
|
||||||
|
|
||||||
/// Holds any kind of operation that can be done in the IR
|
/// Holds any kind of operation that can be done in the IR
|
||||||
class OperationNode final {
|
class OperationNode final {
|
||||||
|
|
|
@ -447,70 +447,70 @@ enum class SurfaceCompression : u8 {
|
||||||
};
|
};
|
||||||
|
|
||||||
inline constexpr std::array<SurfaceCompression, MaxPixelFormat> compression_type_table = {{
|
inline constexpr std::array<SurfaceCompression, MaxPixelFormat> compression_type_table = {{
|
||||||
SurfaceCompression::None, // ABGR8U
|
SurfaceCompression::None, // ABGR8U
|
||||||
SurfaceCompression::None, // ABGR8S
|
SurfaceCompression::None, // ABGR8S
|
||||||
SurfaceCompression::None, // ABGR8UI
|
SurfaceCompression::None, // ABGR8UI
|
||||||
SurfaceCompression::None, // B5G6R5U
|
SurfaceCompression::None, // B5G6R5U
|
||||||
SurfaceCompression::None, // A2B10G10R10U
|
SurfaceCompression::None, // A2B10G10R10U
|
||||||
SurfaceCompression::None, // A1B5G5R5U
|
SurfaceCompression::None, // A1B5G5R5U
|
||||||
SurfaceCompression::None, // R8U
|
SurfaceCompression::None, // R8U
|
||||||
SurfaceCompression::None, // R8UI
|
SurfaceCompression::None, // R8UI
|
||||||
SurfaceCompression::None, // RGBA16F
|
SurfaceCompression::None, // RGBA16F
|
||||||
SurfaceCompression::None, // RGBA16U
|
SurfaceCompression::None, // RGBA16U
|
||||||
SurfaceCompression::None, // RGBA16UI
|
SurfaceCompression::None, // RGBA16UI
|
||||||
SurfaceCompression::None, // R11FG11FB10F
|
SurfaceCompression::None, // R11FG11FB10F
|
||||||
SurfaceCompression::None, // RGBA32UI
|
SurfaceCompression::None, // RGBA32UI
|
||||||
SurfaceCompression::Compressed, // DXT1
|
SurfaceCompression::Compressed, // DXT1
|
||||||
SurfaceCompression::Compressed, // DXT23
|
SurfaceCompression::Compressed, // DXT23
|
||||||
SurfaceCompression::Compressed, // DXT45
|
SurfaceCompression::Compressed, // DXT45
|
||||||
SurfaceCompression::Compressed, // DXN1
|
SurfaceCompression::Compressed, // DXN1
|
||||||
SurfaceCompression::Compressed, // DXN2UNORM
|
SurfaceCompression::Compressed, // DXN2UNORM
|
||||||
SurfaceCompression::Compressed, // DXN2SNORM
|
SurfaceCompression::Compressed, // DXN2SNORM
|
||||||
SurfaceCompression::Compressed, // BC7U
|
SurfaceCompression::Compressed, // BC7U
|
||||||
SurfaceCompression::Compressed, // BC6H_UF16
|
SurfaceCompression::Compressed, // BC6H_UF16
|
||||||
SurfaceCompression::Compressed, // BC6H_SF16
|
SurfaceCompression::Compressed, // BC6H_SF16
|
||||||
SurfaceCompression::Converted, // ASTC_2D_4X4
|
SurfaceCompression::Converted, // ASTC_2D_4X4
|
||||||
SurfaceCompression::None, // BGRA8
|
SurfaceCompression::None, // BGRA8
|
||||||
SurfaceCompression::None, // RGBA32F
|
SurfaceCompression::None, // RGBA32F
|
||||||
SurfaceCompression::None, // RG32F
|
SurfaceCompression::None, // RG32F
|
||||||
SurfaceCompression::None, // R32F
|
SurfaceCompression::None, // R32F
|
||||||
SurfaceCompression::None, // R16F
|
SurfaceCompression::None, // R16F
|
||||||
SurfaceCompression::None, // R16U
|
SurfaceCompression::None, // R16U
|
||||||
SurfaceCompression::None, // R16S
|
SurfaceCompression::None, // R16S
|
||||||
SurfaceCompression::None, // R16UI
|
SurfaceCompression::None, // R16UI
|
||||||
SurfaceCompression::None, // R16I
|
SurfaceCompression::None, // R16I
|
||||||
SurfaceCompression::None, // RG16
|
SurfaceCompression::None, // RG16
|
||||||
SurfaceCompression::None, // RG16F
|
SurfaceCompression::None, // RG16F
|
||||||
SurfaceCompression::None, // RG16UI
|
SurfaceCompression::None, // RG16UI
|
||||||
SurfaceCompression::None, // RG16I
|
SurfaceCompression::None, // RG16I
|
||||||
SurfaceCompression::None, // RG16S
|
SurfaceCompression::None, // RG16S
|
||||||
SurfaceCompression::None, // RGB32F
|
SurfaceCompression::None, // RGB32F
|
||||||
SurfaceCompression::None, // RGBA8_SRGB
|
SurfaceCompression::None, // RGBA8_SRGB
|
||||||
SurfaceCompression::None, // RG8U
|
SurfaceCompression::None, // RG8U
|
||||||
SurfaceCompression::None, // RG8S
|
SurfaceCompression::None, // RG8S
|
||||||
SurfaceCompression::None, // RG32UI
|
SurfaceCompression::None, // RG32UI
|
||||||
SurfaceCompression::None, // R32UI
|
SurfaceCompression::None, // R32UI
|
||||||
SurfaceCompression::Converted, // ASTC_2D_8X8
|
SurfaceCompression::Converted, // ASTC_2D_8X8
|
||||||
SurfaceCompression::Converted, // ASTC_2D_8X5
|
SurfaceCompression::Converted, // ASTC_2D_8X5
|
||||||
SurfaceCompression::Converted, // ASTC_2D_5X4
|
SurfaceCompression::Converted, // ASTC_2D_5X4
|
||||||
SurfaceCompression::None, // BGRA8_SRGB
|
SurfaceCompression::None, // BGRA8_SRGB
|
||||||
SurfaceCompression::Compressed, // DXT1_SRGB
|
SurfaceCompression::Compressed, // DXT1_SRGB
|
||||||
SurfaceCompression::Compressed, // DXT23_SRGB
|
SurfaceCompression::Compressed, // DXT23_SRGB
|
||||||
SurfaceCompression::Compressed, // DXT45_SRGB
|
SurfaceCompression::Compressed, // DXT45_SRGB
|
||||||
SurfaceCompression::Compressed, // BC7U_SRGB
|
SurfaceCompression::Compressed, // BC7U_SRGB
|
||||||
SurfaceCompression::Converted, // ASTC_2D_4X4_SRGB
|
SurfaceCompression::Converted, // ASTC_2D_4X4_SRGB
|
||||||
SurfaceCompression::Converted, // ASTC_2D_8X8_SRGB
|
SurfaceCompression::Converted, // ASTC_2D_8X8_SRGB
|
||||||
SurfaceCompression::Converted, // ASTC_2D_8X5_SRGB
|
SurfaceCompression::Converted, // ASTC_2D_8X5_SRGB
|
||||||
SurfaceCompression::Converted, // ASTC_2D_5X4_SRGB
|
SurfaceCompression::Converted, // ASTC_2D_5X4_SRGB
|
||||||
SurfaceCompression::Converted, // ASTC_2D_5X5
|
SurfaceCompression::Converted, // ASTC_2D_5X5
|
||||||
SurfaceCompression::Converted, // ASTC_2D_5X5_SRGB
|
SurfaceCompression::Converted, // ASTC_2D_5X5_SRGB
|
||||||
SurfaceCompression::Converted, // ASTC_2D_10X8
|
SurfaceCompression::Converted, // ASTC_2D_10X8
|
||||||
SurfaceCompression::Converted, // ASTC_2D_10X8_SRGB
|
SurfaceCompression::Converted, // ASTC_2D_10X8_SRGB
|
||||||
SurfaceCompression::None, // Z32F
|
SurfaceCompression::None, // Z32F
|
||||||
SurfaceCompression::None, // Z16
|
SurfaceCompression::None, // Z16
|
||||||
SurfaceCompression::None, // Z24S8
|
SurfaceCompression::None, // Z24S8
|
||||||
SurfaceCompression::Rearranged, // S8Z24
|
SurfaceCompression::Rearranged, // S8Z24
|
||||||
SurfaceCompression::None, // Z32FS8
|
SurfaceCompression::None, // Z32FS8
|
||||||
}};
|
}};
|
||||||
|
|
||||||
static constexpr SurfaceCompression GetFormatCompressionType(PixelFormat format) {
|
static constexpr SurfaceCompression GetFormatCompressionType(PixelFormat format) {
|
||||||
|
|
|
@ -101,7 +101,7 @@ MatchStructureResult SurfaceBaseImpl::MatchesStructure(const SurfaceParams& rhs)
|
||||||
std::optional<std::pair<u32, u32>> SurfaceBaseImpl::GetLayerMipmap(
|
std::optional<std::pair<u32, u32>> SurfaceBaseImpl::GetLayerMipmap(
|
||||||
const GPUVAddr candidate_gpu_addr) const {
|
const GPUVAddr candidate_gpu_addr) const {
|
||||||
if (gpu_addr == candidate_gpu_addr) {
|
if (gpu_addr == candidate_gpu_addr) {
|
||||||
return {{0,0}};
|
return {{0, 0}};
|
||||||
}
|
}
|
||||||
if (candidate_gpu_addr < gpu_addr) {
|
if (candidate_gpu_addr < gpu_addr) {
|
||||||
return {};
|
return {};
|
||||||
|
|
|
@ -254,7 +254,8 @@ public:
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
} else {
|
} else {
|
||||||
return GetView(ViewParams(view_params.target, layer, 1, mipmap, end_mipmap - mipmap + 1));
|
return GetView(
|
||||||
|
ViewParams(view_params.target, layer, 1, mipmap, end_mipmap - mipmap + 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
#include "common/math_util.h"
|
#include "common/math_util.h"
|
||||||
#include "core/memory.h"
|
#include "core/memory.h"
|
||||||
|
#include "core/settings.h"
|
||||||
#include "video_core/engines/fermi_2d.h"
|
#include "video_core/engines/fermi_2d.h"
|
||||||
#include "video_core/engines/maxwell_3d.h"
|
#include "video_core/engines/maxwell_3d.h"
|
||||||
#include "video_core/gpu.h"
|
#include "video_core/gpu.h"
|
||||||
|
|
|
@ -256,7 +256,8 @@ std::vector<u8> UnswizzleTexture(u8* address, u32 tile_size_x, u32 tile_size_y,
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwizzleSubrect(u32 subrect_width, u32 subrect_height, u32 source_pitch, u32 swizzled_width,
|
void SwizzleSubrect(u32 subrect_width, u32 subrect_height, u32 source_pitch, u32 swizzled_width,
|
||||||
u32 bytes_per_pixel, u8* swizzled_data, u8* unswizzled_data, u32 block_height_bit) {
|
u32 bytes_per_pixel, u8* swizzled_data, u8* unswizzled_data,
|
||||||
|
u32 block_height_bit) {
|
||||||
const u32 block_height = 1U << block_height_bit;
|
const u32 block_height = 1U << block_height_bit;
|
||||||
const u32 image_width_in_gobs{(swizzled_width * bytes_per_pixel + (gob_size_x - 1)) /
|
const u32 image_width_in_gobs{(swizzled_width * bytes_per_pixel + (gob_size_x - 1)) /
|
||||||
gob_size_x};
|
gob_size_x};
|
||||||
|
@ -278,8 +279,8 @@ void SwizzleSubrect(u32 subrect_width, u32 subrect_height, u32 source_pitch, u32
|
||||||
}
|
}
|
||||||
|
|
||||||
void UnswizzleSubrect(u32 subrect_width, u32 subrect_height, u32 dest_pitch, u32 swizzled_width,
|
void UnswizzleSubrect(u32 subrect_width, u32 subrect_height, u32 dest_pitch, u32 swizzled_width,
|
||||||
u32 bytes_per_pixel, u8* swizzled_data, u8* unswizzled_data, u32 block_height_bit,
|
u32 bytes_per_pixel, u8* swizzled_data, u8* unswizzled_data,
|
||||||
u32 offset_x, u32 offset_y) {
|
u32 block_height_bit, u32 offset_x, u32 offset_y) {
|
||||||
const u32 block_height = 1U << block_height_bit;
|
const u32 block_height = 1U << block_height_bit;
|
||||||
for (u32 line = 0; line < subrect_height; ++line) {
|
for (u32 line = 0; line < subrect_height; ++line) {
|
||||||
const u32 y2 = line + offset_y;
|
const u32 y2 = line + offset_y;
|
||||||
|
|
Loading…
Reference in a new issue