|
|
|
@ -1473,39 +1473,6 @@ private:
|
|
|
|
|
|
|
|
|
|
void ProcessMethodCall(u32 method, u32 argument, u32 nonshadow_argument, bool is_last_call);
|
|
|
|
|
|
|
|
|
|
Core::System& system;
|
|
|
|
|
MemoryManager& memory_manager;
|
|
|
|
|
|
|
|
|
|
VideoCore::RasterizerInterface* rasterizer = nullptr;
|
|
|
|
|
|
|
|
|
|
/// Start offsets of each macro in macro_memory
|
|
|
|
|
std::array<u32, 0x80> macro_positions = {};
|
|
|
|
|
|
|
|
|
|
std::array<bool, Regs::NUM_REGS> mme_inline{};
|
|
|
|
|
|
|
|
|
|
/// 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;
|
|
|
|
|
|
|
|
|
|
/// Interpreter for the macro codes uploaded to the GPU.
|
|
|
|
|
std::unique_ptr<MacroEngine> macro_engine;
|
|
|
|
|
|
|
|
|
|
static constexpr u32 null_cb_data = 0xFFFFFFFF;
|
|
|
|
|
struct {
|
|
|
|
|
std::array<std::array<u32, 0x4000>, 16> buffer;
|
|
|
|
|
u32 current{null_cb_data};
|
|
|
|
|
u32 id{null_cb_data};
|
|
|
|
|
u32 start_pos{};
|
|
|
|
|
u32 counter{};
|
|
|
|
|
} cb_data_state;
|
|
|
|
|
|
|
|
|
|
Upload::State upload_state;
|
|
|
|
|
|
|
|
|
|
bool execute_on{true};
|
|
|
|
|
|
|
|
|
|
std::array<u8, Regs::NUM_REGS> dirty_pointers{};
|
|
|
|
|
|
|
|
|
|
/// Retrieves information about a specific TIC entry from the TIC buffer.
|
|
|
|
|
Texture::TICEntry GetTICEntry(u32 tic_index) const;
|
|
|
|
|
|
|
|
|
@ -1514,8 +1481,8 @@ private:
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Call a macro on this engine.
|
|
|
|
|
*
|
|
|
|
|
* @param method Method to call
|
|
|
|
|
* @param num_parameters Number of arguments
|
|
|
|
|
* @param parameters Arguments to the method call
|
|
|
|
|
*/
|
|
|
|
|
void CallMacroMethod(u32 method, const std::vector<u32>& parameters);
|
|
|
|
@ -1564,6 +1531,38 @@ private:
|
|
|
|
|
|
|
|
|
|
/// Returns a query's value or an empty object if the value will be deferred through a cache.
|
|
|
|
|
std::optional<u64> GetQueryResult();
|
|
|
|
|
|
|
|
|
|
Core::System& system;
|
|
|
|
|
MemoryManager& memory_manager;
|
|
|
|
|
|
|
|
|
|
VideoCore::RasterizerInterface* rasterizer = nullptr;
|
|
|
|
|
|
|
|
|
|
/// Start offsets of each macro in macro_memory
|
|
|
|
|
std::array<u32, 0x80> macro_positions{};
|
|
|
|
|
|
|
|
|
|
std::array<bool, Regs::NUM_REGS> mme_inline{};
|
|
|
|
|
|
|
|
|
|
/// 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;
|
|
|
|
|
|
|
|
|
|
/// Interpreter for the macro codes uploaded to the GPU.
|
|
|
|
|
std::unique_ptr<MacroEngine> macro_engine;
|
|
|
|
|
|
|
|
|
|
static constexpr u32 null_cb_data = 0xFFFFFFFF;
|
|
|
|
|
struct CBDataState {
|
|
|
|
|
std::array<std::array<u32, 0x4000>, 16> buffer;
|
|
|
|
|
u32 current{null_cb_data};
|
|
|
|
|
u32 id{null_cb_data};
|
|
|
|
|
u32 start_pos{};
|
|
|
|
|
u32 counter{};
|
|
|
|
|
};
|
|
|
|
|
CBDataState cb_data_state;
|
|
|
|
|
|
|
|
|
|
Upload::State upload_state;
|
|
|
|
|
|
|
|
|
|
bool execute_on{true};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#define ASSERT_REG_POSITION(field_name, position) \
|
|
|
|
|