[D3D12] Resolve fetch memory read tracing

This commit is contained in:
Triang3l 2019-10-25 09:16:42 +03:00
parent c057b5a032
commit f75d927cc5
3 changed files with 10 additions and 4 deletions

View File

@ -743,7 +743,7 @@ bool D3D12CommandProcessor::SetupContext() {
}
render_target_cache_ =
std::make_unique<RenderTargetCache>(this, register_file_);
std::make_unique<RenderTargetCache>(this, register_file_, &trace_writer_);
if (!render_target_cache_->Initialize(texture_cache_.get())) {
XELOGE("Failed to initialize the render target cache");
return false;

View File

@ -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];

View File

@ -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).