mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-20 03:25:16 +00: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"(
|
||||
|
||||
#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)
|
||||
// Default. Used when we're not utilizing native fp16
|
||||
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))));
|
||||
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
|
||||
|
||||
#ifdef _DISABLE_EARLY_DISCARD
|
||||
|
|
|
@ -10,10 +10,10 @@ R"(
|
|||
#ifdef _ENABLE_FRAMEBUFFER_SRGB
|
||||
if (_test_bit(rop_control, SRGB_FRAMEBUFFER_BIT))
|
||||
{
|
||||
col0.rgb = linear_to_srgb(col0).rgb;
|
||||
col1.rgb = linear_to_srgb(col1).rgb;
|
||||
col2.rgb = linear_to_srgb(col2).rgb;
|
||||
col3.rgb = linear_to_srgb(col3).rgb;
|
||||
col0.rgb = _mrt_color_t(linear_to_srgb(col0)).rgb;
|
||||
col1.rgb = _mrt_color_t(linear_to_srgb(col1)).rgb;
|
||||
col2.rgb = _mrt_color_t(linear_to_srgb(col2)).rgb;
|
||||
col3.rgb = _mrt_color_t(linear_to_srgb(col3)).rgb;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue