|
|
@@ -138,7 +138,28 @@ struct PicaShaderConfig {
|
|
|
};
|
|
|
|
|
|
Pica::Regs::CompareFunc alpha_test_func;
|
|
|
- std::array<Pica::Regs::TevStageConfig, 6> tev_stages;
|
|
|
+
|
|
|
+ // NOTE: MSVC15 (Update 2) doesn't think `delete`'d constructors and operators are TC.
|
|
|
+ // This makes BitField not TC when used in a union or struct so we have to resort
|
|
|
+ // to this ugly hack.
|
|
|
+ // Once that bug is fixed we can use Pica::Regs::TevStageConfig here.
|
|
|
+ // Doesn't include const_color because we don't sync it, see comment in CurrentConfig()
|
|
|
+ struct TevStageConfigRaw {
|
|
|
+ u32 sources_raw;
|
|
|
+ u32 modifiers_raw;
|
|
|
+ u32 ops_raw;
|
|
|
+ u32 scales_raw;
|
|
|
+ explicit operator Pica::Regs::TevStageConfig() const noexcept {
|
|
|
+ Pica::Regs::TevStageConfig stage;
|
|
|
+ stage.sources_raw = sources_raw;
|
|
|
+ stage.modifiers_raw = modifiers_raw;
|
|
|
+ stage.ops_raw = ops_raw;
|
|
|
+ stage.const_color = 0;
|
|
|
+ stage.scales_raw = scales_raw;
|
|
|
+ return stage;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ std::array<TevStageConfigRaw, 6> tev_stages;
|
|
|
u8 combiner_buffer_input;
|
|
|
|
|
|
struct {
|