diff options
author | Subv <subv2112@gmail.com> | 2018-03-18 10:17:10 +0100 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2018-03-18 17:51:46 +0100 |
commit | aa586fa26854cfe32b97aa99c2874945420bcfc4 (patch) | |
tree | 1c17173b997f694dc0bd04d516a131748b4d990d /src/video_core/engines/maxwell_3d.h | |
parent | GPU: Macros are specific to the Maxwell3D engine, so handle them internally. (diff) | |
download | yuzu-aa586fa26854cfe32b97aa99c2874945420bcfc4.tar yuzu-aa586fa26854cfe32b97aa99c2874945420bcfc4.tar.gz yuzu-aa586fa26854cfe32b97aa99c2874945420bcfc4.tar.bz2 yuzu-aa586fa26854cfe32b97aa99c2874945420bcfc4.tar.lz yuzu-aa586fa26854cfe32b97aa99c2874945420bcfc4.tar.xz yuzu-aa586fa26854cfe32b97aa99c2874945420bcfc4.tar.zst yuzu-aa586fa26854cfe32b97aa99c2874945420bcfc4.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/engines/maxwell_3d.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index 75a1c05bc..05820a21e 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h @@ -21,7 +21,10 @@ public: ~Maxwell3D() = default; /// Write the value to the register identified by method. - void WriteReg(u32 method, u32 value); + void WriteReg(u32 method, u32 value, u32 remaining_params); + + /// Uploads the code for a GPU macro program associated with the specified entry. + void SubmitMacroCode(u32 entry, std::vector<u32> code); /// Register structure of the Maxwell3D engine. /// TODO(Subv): This structure will need to be made bigger as more registers are discovered. @@ -198,18 +201,19 @@ public: private: MemoryManager& memory_manager; + std::unordered_map<u32, std::vector<u32>> uploaded_macros; + /// Macro method that is currently being executed / being fed parameters. u32 executing_macro = 0; /// Parameters that have been submitted to the macro call so far. std::vector<u32> macro_params; /** - * Attempts a method call to this engine. Will return without doing anything if the number of - * parameters doesn't match what is expected for the method. + * Call a macro on this engine. * @param method Method to call * @param parameters Arguments to the method call */ - void AttemptMethodCall(u32 method, const std::vector<u32>& parameters); + void CallMacroMethod(u32 method, const std::vector<u32>& parameters); /// Handles a write to the QUERY_GET register. void ProcessQueryGet(); |