Merge pull request #997 from Lectem/cmdlist_full_debug

citra-qt: Improve pica command list widget (add mask, fix some issues)
This commit is contained in:
Tony Wasserka 2015-08-16 13:34:45 +02:00
commit f5144e6c10
4 changed files with 52 additions and 50 deletions

View file

@ -64,7 +64,7 @@ void DebugContext::OnEvent(Event event, void* data) {
void DebugContext::Resume() {
{
std::unique_lock<std::mutex> lock(breakpoint_mutex);
std::lock_guard<std::mutex> lock(breakpoint_mutex);
// Tell all observers that we are about to resume
for (auto& breakpoint_observer : breakpoint_observers) {
@ -312,11 +312,10 @@ void StartPicaTracing()
return;
}
pica_trace_mutex.lock();
std::lock_guard<std::mutex> lock(pica_trace_mutex);
pica_trace = std::unique_ptr<PicaTrace>(new PicaTrace);
is_pica_tracing = true;
pica_trace_mutex.unlock();
}
bool IsPicaTracing()
@ -324,18 +323,18 @@ bool IsPicaTracing()
return is_pica_tracing != 0;
}
void OnPicaRegWrite(u32 id, u32 value)
void OnPicaRegWrite(PicaTrace::Write write)
{
// Double check for is_pica_tracing to avoid pointless locking overhead
if (!is_pica_tracing)
return;
std::unique_lock<std::mutex> lock(pica_trace_mutex);
std::lock_guard<std::mutex> lock(pica_trace_mutex);
if (!is_pica_tracing)
return;
pica_trace->writes.emplace_back(id, value);
pica_trace->writes.push_back(write);
}
std::unique_ptr<PicaTrace> FinishPicaTracing()
@ -349,9 +348,9 @@ std::unique_ptr<PicaTrace> FinishPicaTracing()
is_pica_tracing = false;
// Wait until running tracing is finished
pica_trace_mutex.lock();
std::lock_guard<std::mutex> lock(pica_trace_mutex);
std::unique_ptr<PicaTrace> ret(std::move(pica_trace));
pica_trace_mutex.unlock();
return std::move(ret);
}

View file

@ -187,21 +187,17 @@ void DumpShader(const std::string& filename, const Regs::ShaderConfig& config,
// Utility class to log Pica commands.
struct PicaTrace {
struct Write : public std::pair<u32,u32> {
Write(u32 id, u32 value) : std::pair<u32,u32>(id, value) {}
u32& Id() { return first; }
const u32& Id() const { return first; }
u32& Value() { return second; }
const u32& Value() const { return second; }
struct Write {
u16 cmd_id;
u16 mask;
u32 value;
};
std::vector<Write> writes;
};
void StartPicaTracing();
bool IsPicaTracing();
void OnPicaRegWrite(u32 id, u32 value);
void OnPicaRegWrite(PicaTrace::Write write);
std::unique_ptr<PicaTrace> FinishPicaTracing();
struct TextureInfo {