mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-05 06:21:26 +12:00
rsx: Fix compiling of mixed-precision shaders
This commit is contained in:
parent
ca7de4bcb1
commit
abe5013f1d
2 changed files with 17 additions and 11 deletions
|
@ -1,5 +1,18 @@
|
||||||
R"(
|
R"(
|
||||||
|
|
||||||
|
#ifdef _32_BIT_OUTPUT
|
||||||
|
// Everything is fp32 on ouput channels
|
||||||
|
#define _mrt_color_t(expr) expr
|
||||||
|
#else
|
||||||
|
// Mixed types. We have fp16 outputs
|
||||||
|
#define _mrt_color_t f16vec4
|
||||||
|
f16vec4 round_to_8bit(const in f16vec4 v4)
|
||||||
|
{
|
||||||
|
uvec4 raw = uvec4(floor(fma(v4, f16vec4(255.), f16vec4(0.5))));
|
||||||
|
return f16vec4(raw) / f16vec4(255.);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(_ENABLE_ROP_OUTPUT_ROUNDING) || defined(_ENABLE_PROGRAMMABLE_BLENDING)
|
#if defined(_ENABLE_ROP_OUTPUT_ROUNDING) || defined(_ENABLE_PROGRAMMABLE_BLENDING)
|
||||||
// Default. Used when we're not utilizing native fp16
|
// Default. Used when we're not utilizing native fp16
|
||||||
vec4 round_to_8bit(const in vec4 v4)
|
vec4 round_to_8bit(const in vec4 v4)
|
||||||
|
@ -7,13 +20,6 @@ vec4 round_to_8bit(const in vec4 v4)
|
||||||
uvec4 raw = uvec4(floor(fma(v4, vec4(255.), vec4(0.5))));
|
uvec4 raw = uvec4(floor(fma(v4, vec4(255.), vec4(0.5))));
|
||||||
return vec4(raw) / vec4(255.);
|
return vec4(raw) / vec4(255.);
|
||||||
}
|
}
|
||||||
#if !defined(_32_BIT_OUTPUT)
|
|
||||||
f16vec4 round_to_8bit(const in f16vec4 v4)
|
|
||||||
{
|
|
||||||
uvec4 raw = uvec4(floor(fma(v4, f16vec4(255.), f16vec4(0.5))));
|
|
||||||
return f16vec4(raw) / f16vec4(255.);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _DISABLE_EARLY_DISCARD
|
#ifdef _DISABLE_EARLY_DISCARD
|
||||||
|
|
|
@ -10,10 +10,10 @@ R"(
|
||||||
#ifdef _ENABLE_FRAMEBUFFER_SRGB
|
#ifdef _ENABLE_FRAMEBUFFER_SRGB
|
||||||
if (_test_bit(rop_control, SRGB_FRAMEBUFFER_BIT))
|
if (_test_bit(rop_control, SRGB_FRAMEBUFFER_BIT))
|
||||||
{
|
{
|
||||||
col0.rgb = linear_to_srgb(col0).rgb;
|
col0.rgb = _mrt_color_t(linear_to_srgb(col0)).rgb;
|
||||||
col1.rgb = linear_to_srgb(col1).rgb;
|
col1.rgb = _mrt_color_t(linear_to_srgb(col1)).rgb;
|
||||||
col2.rgb = linear_to_srgb(col2).rgb;
|
col2.rgb = _mrt_color_t(linear_to_srgb(col2)).rgb;
|
||||||
col3.rgb = linear_to_srgb(col3).rgb;
|
col3.rgb = _mrt_color_t(linear_to_srgb(col3)).rgb;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue