@ -237,11 +237,38 @@ Shader::RuntimeInfo MakeRuntimeInfo(std::span<const Shader::IR::Program> program
}
info . convert_depth_mode = gl_ndc ;
break ;
case Shader : : Stage : : Fragment :
case Shader : : Stage : : Fragment : {
info . alpha_test_func = MaxwellToCompareFunction (
key . state . UnpackComparisonOp ( key . state . alpha_test_func . Value ( ) ) ) ;
info . alpha_test_reference = std : : bit_cast < float > ( key . state . alpha_test_ref ) ;
// Check for dual source blending
const auto & blend0 = key . state . attachments [ 0 ] ;
if ( blend0 . enable ! = 0 ) {
using F = Maxwell : : Blend : : Factor ;
const auto src_rgb = blend0 . SourceRGBFactor ( ) ;
const auto dst_rgb = blend0 . DestRGBFactor ( ) ;
const auto src_a = blend0 . SourceAlphaFactor ( ) ;
const auto dst_a = blend0 . DestAlphaFactor ( ) ;
info . dual_source_blend =
src_rgb = = F : : Source1Color_D3D | | src_rgb = = F : : OneMinusSource1Color_D3D | |
src_rgb = = F : : Source1Alpha_D3D | | src_rgb = = F : : OneMinusSource1Alpha_D3D | |
src_rgb = = F : : Source1Color_GL | | src_rgb = = F : : OneMinusSource1Color_GL | |
src_rgb = = F : : Source1Alpha_GL | | src_rgb = = F : : OneMinusSource1Alpha_GL | |
dst_rgb = = F : : Source1Color_D3D | | dst_rgb = = F : : OneMinusSource1Color_D3D | |
dst_rgb = = F : : Source1Alpha_D3D | | dst_rgb = = F : : OneMinusSource1Alpha_D3D | |
dst_rgb = = F : : Source1Color_GL | | dst_rgb = = F : : OneMinusSource1Color_GL | |
dst_rgb = = F : : Source1Alpha_GL | | dst_rgb = = F : : OneMinusSource1Alpha_GL | |
src_a = = F : : Source1Color_D3D | | src_a = = F : : OneMinusSource1Color_D3D | |
src_a = = F : : Source1Alpha_D3D | | src_a = = F : : OneMinusSource1Alpha_D3D | |
src_a = = F : : Source1Color_GL | | src_a = = F : : OneMinusSource1Color_GL | |
src_a = = F : : Source1Alpha_GL | | src_a = = F : : OneMinusSource1Alpha_GL | |
dst_a = = F : : Source1Color_D3D | | dst_a = = F : : OneMinusSource1Color_D3D | |
dst_a = = F : : Source1Alpha_D3D | | dst_a = = F : : OneMinusSource1Alpha_D3D | |
dst_a = = F : : Source1Color_GL | | dst_a = = F : : OneMinusSource1Color_GL | |
dst_a = = F : : Source1Alpha_GL | | dst_a = = F : : OneMinusSource1Alpha_GL ;
}
if ( device . IsMoltenVK ( ) ) {
for ( size_t i = 0 ; i < 8 ; + + i ) {
const auto format = static_cast < Tegra : : RenderTargetFormat > ( key . state . color_formats [ i ] ) ;
@ -258,6 +285,7 @@ Shader::RuntimeInfo MakeRuntimeInfo(std::span<const Shader::IR::Program> program
}
}
break ;
}
default :
break ;
}