GPU recording (--trace_gpu=file) and playback (gpu-trace-viewer file).
This commit is contained in:
@@ -14,7 +14,9 @@
|
||||
#include <thread>
|
||||
|
||||
#include "xenia/common.h"
|
||||
#include "xenia/emulator.h"
|
||||
#include "xenia/cpu/processor.h"
|
||||
#include "xenia/memory.h"
|
||||
#include "xenia/ui/main_window.h"
|
||||
#include "xenia/xbox.h"
|
||||
|
||||
namespace xe {
|
||||
@@ -24,25 +26,37 @@ class GraphicsSystem {
|
||||
public:
|
||||
virtual ~GraphicsSystem();
|
||||
|
||||
Emulator* emulator() const { return emulator_; }
|
||||
Memory* memory() const { return memory_; }
|
||||
cpu::Processor* processor() const { return processor_; }
|
||||
|
||||
virtual X_STATUS Setup();
|
||||
virtual X_STATUS Setup(cpu::Processor* processor,
|
||||
ui::PlatformLoop* target_loop,
|
||||
ui::PlatformWindow* target_window);
|
||||
virtual void Shutdown();
|
||||
|
||||
void SetInterruptCallback(uint32_t callback, uint32_t user_data);
|
||||
virtual void InitializeRingBuffer(uint32_t ptr, uint32_t page_count) = 0;
|
||||
virtual void EnableReadPointerWriteBack(uint32_t ptr, uint32_t block_size) = 0;
|
||||
virtual void EnableReadPointerWriteBack(uint32_t ptr,
|
||||
uint32_t block_size) = 0;
|
||||
|
||||
void DispatchInterruptCallback(uint32_t source, uint32_t cpu);
|
||||
|
||||
protected:
|
||||
GraphicsSystem(Emulator* emulator);
|
||||
enum class TracePlaybackMode {
|
||||
kUntilEnd,
|
||||
kBreakOnSwap,
|
||||
};
|
||||
virtual const uint8_t* PlayTrace(const uint8_t* trace_data, size_t trace_size,
|
||||
TracePlaybackMode playback_mode) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
protected:
|
||||
GraphicsSystem();
|
||||
|
||||
Emulator* emulator_;
|
||||
Memory* memory_;
|
||||
cpu::Processor* processor_;
|
||||
ui::PlatformLoop* target_loop_;
|
||||
ui::PlatformWindow* target_window_;
|
||||
|
||||
uint32_t interrupt_callback_;
|
||||
uint32_t interrupt_callback_data_;
|
||||
|
||||
Reference in New Issue
Block a user