diff --git a/TODO b/TODO index 840caba1b..95bdaa926 100644 --- a/TODO +++ b/TODO @@ -7,16 +7,19 @@ ☐ Perf stats ☐ Settings ☐ Telemetry session +☐ Replace SERIALIZE_AS_POD with BOOST_IS_BITWISE_SERIALIZABLE ✔ HW @done(19-08-13 15:41) ✔ GPU regs @done(19-08-13 15:41) ✔ LCD regs @done(19-08-13 15:41) ☐ Video core @started(19-08-13 16:43) ✔ Geometry pipeline @done(19-12-22 15:52) + Required more use of g_state ✔ PICA state @done(19-08-13 15:41) - ☐ Primitive assembly + ✔ Primitive assembly @done(19-12-22 16:05) ✔ Shader @done(19-08-13 16:03) ☐ HLE @started(19-08-13 16:43) ☐ Kernel @started(19-08-13 16:43) + Most of these require adding g_kernel ✔ Address arbiter @done(19-08-13 16:40) ✔ Client port @done(19-08-13 16:40) ✔ Client session @done(19-08-13 16:40) diff --git a/src/video_core/pica_state.h b/src/video_core/pica_state.h index d7ae04c1b..95ee77662 100644 --- a/src/video_core/pica_state.h +++ b/src/video_core/pica_state.h @@ -228,7 +228,7 @@ private: ar & immediate; ar & gs_unit; ar & geometry_pipeline; - // ar & primitive_assembler; + ar & primitive_assembler; ar & vs_float_regs_counter; ar & vs_uniform_write_buffer; ar & gs_float_regs_counter; diff --git a/src/video_core/primitive_assembly.h b/src/video_core/primitive_assembly.h index fd5445aa8..1545a6b4c 100644 --- a/src/video_core/primitive_assembly.h +++ b/src/video_core/primitive_assembly.h @@ -6,6 +6,7 @@ #include #include "video_core/regs_pipeline.h" +namespace boost::serialization { class access; } namespace Pica { @@ -62,6 +63,17 @@ private: VertexType buffer[2]; bool strip_ready = false; bool winding = false; + + template + void serialize(Archive& ar, const unsigned int version) + { + ar & topology; + ar & buffer_index; + ar & buffer; + ar & strip_ready; + ar & winding; + } + friend class boost::serialization::access; }; } // namespace Pica diff --git a/src/video_core/shader/shader.h b/src/video_core/shader/shader.h index ffa60f3b5..f20e08d98 100644 --- a/src/video_core/shader/shader.h +++ b/src/video_core/shader/shader.h @@ -16,6 +16,7 @@ #include "common/common_types.h" #include "common/hash.h" #include "common/vector_math.h" +#include "common/pod.h" #include "video_core/pica_types.h" #include "video_core/regs_rasterizer.h" #include "video_core/regs_shader.h" @@ -64,6 +65,8 @@ struct OutputVertex { static void ValidateSemantics(const RasterizerRegs& regs); static OutputVertex FromAttributeBuffer(const RasterizerRegs& regs, const AttributeBuffer& output); + + SERIALIZE_AS_POD }; #define ASSERT_POS(var, pos) \ static_assert(offsetof(OutputVertex, var) == pos * sizeof(float24), "Semantic at wrong " \