diff --git a/src/xenia/gpu/d3d12/d3d12_command_processor.cc b/src/xenia/gpu/d3d12/d3d12_command_processor.cc index 53c87c350..330bfe020 100644 --- a/src/xenia/gpu/d3d12/d3d12_command_processor.cc +++ b/src/xenia/gpu/d3d12/d3d12_command_processor.cc @@ -743,7 +743,7 @@ bool D3D12CommandProcessor::SetupContext() { } render_target_cache_ = - std::make_unique(this, register_file_); + std::make_unique(this, register_file_, &trace_writer_); if (!render_target_cache_->Initialize(texture_cache_.get())) { XELOGE("Failed to initialize the render target cache"); return false; diff --git a/src/xenia/gpu/d3d12/render_target_cache.cc b/src/xenia/gpu/d3d12/render_target_cache.cc index 8d32c5be7..7e429fa50 100644 --- a/src/xenia/gpu/d3d12/render_target_cache.cc +++ b/src/xenia/gpu/d3d12/render_target_cache.cc @@ -99,8 +99,11 @@ const RenderTargetCache::EDRAMLoadStoreModeInfo }; RenderTargetCache::RenderTargetCache(D3D12CommandProcessor* command_processor, - RegisterFile* register_file) - : command_processor_(command_processor), register_file_(register_file) {} + RegisterFile* register_file, + TraceWriter* trace_writer) + : command_processor_(command_processor), + register_file_(register_file), + trace_writer_(trace_writer) {} RenderTargetCache::~RenderTargetCache() { Shutdown(); } @@ -1037,6 +1040,7 @@ bool RenderTargetCache::Resolve(SharedMemory* shared_memory, assert_true(fetch.type == 3); assert_true(fetch.endian == Endian::k8in32); assert_true(fetch.size == 6); + trace_writer_->WriteMemoryRead(fetch.address << 2, fetch.size << 2); const uint8_t* src_vertex_address = memory->TranslatePhysical(fetch.address << 2); float vertices[6]; diff --git a/src/xenia/gpu/d3d12/render_target_cache.h b/src/xenia/gpu/d3d12/render_target_cache.h index 0ccf8be0b..582299845 100644 --- a/src/xenia/gpu/d3d12/render_target_cache.h +++ b/src/xenia/gpu/d3d12/render_target_cache.h @@ -17,6 +17,7 @@ #include "xenia/gpu/d3d12/shared_memory.h" #include "xenia/gpu/d3d12/texture_cache.h" #include "xenia/gpu/register_file.h" +#include "xenia/gpu/trace_writer.h" #include "xenia/gpu/xenos.h" #include "xenia/memory.h" #include "xenia/ui/d3d12/d3d12_api.h" @@ -247,7 +248,7 @@ class RenderTargetCache { }; RenderTargetCache(D3D12CommandProcessor* command_processor, - RegisterFile* register_file); + RegisterFile* register_file, TraceWriter* trace_writer); ~RenderTargetCache(); bool Initialize(const TextureCache* texture_cache); @@ -503,6 +504,7 @@ class RenderTargetCache { D3D12CommandProcessor* command_processor_; RegisterFile* register_file_; + TraceWriter* trace_writer_; // Whether 1 guest pixel is rendered as 2x2 host pixels (currently only // supported with ROV).