mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-08-04 16:32:39 +00:00
Fix gcc
This commit is contained in:
parent
42d2b7a823
commit
01365c3c43
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
namespace Shader::Gcn {
|
namespace Shader::Gcn {
|
||||||
|
|
||||||
u32 SwizzleMrtComponent(const FragmentRuntimeInfo::PsColorBuffer& color_buffer, u32 comp) {
|
u32 SwizzleMrtComponent(const PsColorBuffer& color_buffer, u32 comp) {
|
||||||
const auto [r, g, b, a] = color_buffer.swizzle;
|
const auto [r, g, b, a] = color_buffer.swizzle;
|
||||||
const std::array swizzle_array = {r, g, b, a};
|
const std::array swizzle_array = {r, g, b, a};
|
||||||
const auto swizzled_comp_type = static_cast<u32>(swizzle_array[comp]);
|
const auto swizzled_comp_type = static_cast<u32>(swizzle_array[comp]);
|
||||||
@ -16,7 +16,7 @@ u32 SwizzleMrtComponent(const FragmentRuntimeInfo::PsColorBuffer& color_buffer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Translator::ExportMrtValue(IR::Attribute attribute, u32 comp, const IR::F32& value,
|
void Translator::ExportMrtValue(IR::Attribute attribute, u32 comp, const IR::F32& value,
|
||||||
const FragmentRuntimeInfo::PsColorBuffer& color_buffer) {
|
const PsColorBuffer& color_buffer) {
|
||||||
auto converted = ApplyWriteNumberConversion(ir, value, color_buffer.num_conversion);
|
auto converted = ApplyWriteNumberConversion(ir, value, color_buffer.num_conversion);
|
||||||
if (color_buffer.needs_unorm_fixup) {
|
if (color_buffer.needs_unorm_fixup) {
|
||||||
// FIXME: Fix-up for GPUs where float-to-unorm rounding is off from expected.
|
// FIXME: Fix-up for GPUs where float-to-unorm rounding is off from expected.
|
||||||
|
@ -309,7 +309,7 @@ private:
|
|||||||
const IR::F32& x_res, const IR::F32& y_res, const IR::F32& z_res);
|
const IR::F32& x_res, const IR::F32& y_res, const IR::F32& z_res);
|
||||||
|
|
||||||
void ExportMrtValue(IR::Attribute attribute, u32 comp, const IR::F32& value,
|
void ExportMrtValue(IR::Attribute attribute, u32 comp, const IR::F32& value,
|
||||||
const FragmentRuntimeInfo::PsColorBuffer& color_buffer);
|
const PsColorBuffer& color_buffer);
|
||||||
void ExportMrtCompressed(IR::Attribute attribute, u32 idx, const IR::U32& value);
|
void ExportMrtCompressed(IR::Attribute attribute, u32 idx, const IR::U32& value);
|
||||||
void ExportMrtUncompressed(IR::Attribute attribute, u32 comp, const IR::F32& value);
|
void ExportMrtUncompressed(IR::Attribute attribute, u32 comp, const IR::F32& value);
|
||||||
void ExportCompressed(IR::Attribute attribute, u32 idx, const IR::U32& value);
|
void ExportCompressed(IR::Attribute attribute, u32 idx, const IR::U32& value);
|
||||||
|
@ -167,6 +167,17 @@ enum class MrtSwizzle : u8 {
|
|||||||
};
|
};
|
||||||
static constexpr u32 MaxColorBuffers = 8;
|
static constexpr u32 MaxColorBuffers = 8;
|
||||||
|
|
||||||
|
struct PsColorBuffer {
|
||||||
|
AmdGpu::NumberFormat num_format : 4;
|
||||||
|
AmdGpu::NumberConversion num_conversion : 2;
|
||||||
|
AmdGpu::Liverpool::ShaderExportFormat export_format : 4;
|
||||||
|
u32 needs_unorm_fixup : 1;
|
||||||
|
u32 pad : 21;
|
||||||
|
AmdGpu::CompMapping swizzle;
|
||||||
|
|
||||||
|
auto operator<=>(const PsColorBuffer&) const noexcept = default;
|
||||||
|
};
|
||||||
|
|
||||||
struct FragmentRuntimeInfo {
|
struct FragmentRuntimeInfo {
|
||||||
struct PsInput {
|
struct PsInput {
|
||||||
u8 param_index;
|
u8 param_index;
|
||||||
@ -184,15 +195,6 @@ struct FragmentRuntimeInfo {
|
|||||||
AmdGpu::Liverpool::PsInput addr_flags;
|
AmdGpu::Liverpool::PsInput addr_flags;
|
||||||
u32 num_inputs;
|
u32 num_inputs;
|
||||||
std::array<PsInput, 32> inputs;
|
std::array<PsInput, 32> inputs;
|
||||||
struct PsColorBuffer {
|
|
||||||
AmdGpu::NumberFormat num_format : 4;
|
|
||||||
AmdGpu::NumberConversion num_conversion : 2;
|
|
||||||
AmdGpu::Liverpool::ShaderExportFormat export_format : 4;
|
|
||||||
u32 needs_unorm_fixup : 1;
|
|
||||||
AmdGpu::CompMapping swizzle;
|
|
||||||
|
|
||||||
auto operator<=>(const PsColorBuffer&) const noexcept = default;
|
|
||||||
};
|
|
||||||
std::array<PsColorBuffer, MaxColorBuffers> color_buffers;
|
std::array<PsColorBuffer, MaxColorBuffers> color_buffers;
|
||||||
|
|
||||||
bool operator==(const FragmentRuntimeInfo& other) const noexcept {
|
bool operator==(const FragmentRuntimeInfo& other) const noexcept {
|
||||||
|
@ -35,8 +35,7 @@ struct GraphicsPipelineKey {
|
|||||||
std::array<size_t, MaxShaderStages> stage_hashes;
|
std::array<size_t, MaxShaderStages> stage_hashes;
|
||||||
u32 num_color_attachments;
|
u32 num_color_attachments;
|
||||||
std::array<vk::Format, Liverpool::NumColorBuffers> color_formats;
|
std::array<vk::Format, Liverpool::NumColorBuffers> color_formats;
|
||||||
std::array<Shader::FragmentRuntimeInfo::PsColorBuffer, Liverpool::NumColorBuffers>
|
std::array<Shader::PsColorBuffer, Liverpool::NumColorBuffers> color_buffers;
|
||||||
color_buffers;
|
|
||||||
vk::Format depth_format;
|
vk::Format depth_format;
|
||||||
vk::Format stencil_format;
|
vk::Format stencil_format;
|
||||||
|
|
||||||
|
@ -345,7 +345,7 @@ bool PipelineCache::RefreshGraphicsKey() {
|
|||||||
|
|
||||||
key.color_formats[remapped_cb] =
|
key.color_formats[remapped_cb] =
|
||||||
LiverpoolToVK::SurfaceFormat(col_buf.GetDataFmt(), col_buf.GetNumberFmt());
|
LiverpoolToVK::SurfaceFormat(col_buf.GetDataFmt(), col_buf.GetNumberFmt());
|
||||||
key.color_buffers[remapped_cb] = {
|
key.color_buffers[remapped_cb] = Shader::PsColorBuffer{
|
||||||
.num_format = col_buf.GetNumberFmt(),
|
.num_format = col_buf.GetNumberFmt(),
|
||||||
.num_conversion = col_buf.GetNumberConversion(),
|
.num_conversion = col_buf.GetNumberConversion(),
|
||||||
.export_format = regs.color_export_format.GetFormat(cb),
|
.export_format = regs.color_export_format.GetFormat(cb),
|
||||||
|
Loading…
Reference in New Issue
Block a user