NV2A : Renamed lock to pgraph_lock, and _lock to pgraph_mutex to avoid confusion

This commit is contained in:
PatrickvL 2018-02-09 16:36:49 +01:00
parent 12f81c0ade
commit dc12ee3119
3 changed files with 22 additions and 22 deletions

View File

@ -387,7 +387,7 @@ int pfifo_puller_thread(NV2AState *d)
} }
cache_lock.unlock(); cache_lock.unlock();
d->pgraph.lock.lock(); d->pgraph.pgraph_lock.lock();
while (!state->working_cache.empty()) { while (!state->working_cache.empty()) {
CacheEntry* command = state->working_cache.front(); CacheEntry* command = state->working_cache.front();
@ -456,7 +456,7 @@ int pfifo_puller_thread(NV2AState *d)
g_free(command); g_free(command);
} }
d->pgraph.lock.unlock(); d->pgraph.pgraph_lock.unlock();
} }
return 0; return 0;

View File

@ -391,7 +391,7 @@ static uint64_t fast_hash(const uint8_t *data, size_t len, unsigned int samples)
/* PGRAPH - accelerated 2d/3d drawing engine */ /* PGRAPH - accelerated 2d/3d drawing engine */
DEVICE_READ32(PGRAPH) DEVICE_READ32(PGRAPH)
{ {
d->pgraph.lock.lock(); d->pgraph.pgraph_lock.lock();
DEVICE_READ32_SWITCH() { DEVICE_READ32_SWITCH() {
case NV_PGRAPH_INTR: case NV_PGRAPH_INTR:
@ -432,7 +432,7 @@ DEVICE_READ32(PGRAPH)
DEVICE_READ32_REG(pgraph); // Was : DEBUG_READ32_UNHANDLED(PGRAPH); DEVICE_READ32_REG(pgraph); // Was : DEBUG_READ32_UNHANDLED(PGRAPH);
} }
d->pgraph.lock.unlock(); d->pgraph.pgraph_lock.unlock();
// reg_log_read(NV_PGRAPH, addr, r); // reg_log_read(NV_PGRAPH, addr, r);
@ -453,7 +453,7 @@ DEVICE_WRITE32(PGRAPH)
{ {
// reg_log_write(NV_PGRAPH, addr, val); // reg_log_write(NV_PGRAPH, addr, val);
d->pgraph.lock.lock(); d->pgraph.pgraph_lock.lock();
switch (addr) { switch (addr) {
case NV_PGRAPH_INTR: case NV_PGRAPH_INTR:
@ -516,7 +516,7 @@ DEVICE_WRITE32(PGRAPH)
break; break;
} }
d->pgraph.lock.unlock(); d->pgraph.pgraph_lock.unlock();
DEVICE_WRITE32_END(PGRAPH); DEVICE_WRITE32_END(PGRAPH);
} }
@ -702,14 +702,14 @@ static void pgraph_method(NV2AState *d,
pg->notify_source = NV_PGRAPH_NSOURCE_NOTIFICATION; /* TODO: check this */ pg->notify_source = NV_PGRAPH_NSOURCE_NOTIFICATION; /* TODO: check this */
pg->pending_interrupts |= NV_PGRAPH_INTR_ERROR; pg->pending_interrupts |= NV_PGRAPH_INTR_ERROR;
pg->lock.unlock(); pg->pgraph_lock.unlock();
qemu_mutex_lock_iothread(); qemu_mutex_lock_iothread();
update_irq(d); update_irq(d);
pg->lock.lock(); pg->pgraph_lock.lock();
qemu_mutex_unlock_iothread(); qemu_mutex_unlock_iothread();
while (pg->pending_interrupts & NV_PGRAPH_INTR_ERROR) { while (pg->pending_interrupts & NV_PGRAPH_INTR_ERROR) {
pg->interrupt_cond.wait(pg->lock); pg->interrupt_cond.wait(pg->pgraph_lock);
} }
} }
break; break;
@ -780,7 +780,7 @@ static void pgraph_method(NV2AState *d,
break; break;
} }
pg->flip_3d_cond.wait(pg->lock); pg->flip_3d_cond.wait(pg->pgraph_lock);
} }
NV2A_DPRINTF("flip stall done\n"); NV2A_DPRINTF("flip stall done\n");
break; break;
@ -2290,7 +2290,7 @@ static void pgraph_method(NV2AState *d,
pgraph_update_surface(d, false, true, true); pgraph_update_surface(d, false, true, true);
//qemu_mutex_unlock(&d->pg->lock); //qemu_mutex_unlock(&d->pg->pgraph_lock);
//qemu_mutex_lock_iothread(); //qemu_mutex_lock_iothread();
xbaddr semaphore_dma_len; xbaddr semaphore_dma_len;
@ -2301,7 +2301,7 @@ static void pgraph_method(NV2AState *d,
stl_le_p((uint32_t*)semaphore_data, parameter); stl_le_p((uint32_t*)semaphore_data, parameter);
//qemu_mutex_lock(&d->pg->lock); //qemu_mutex_lock(&d->pg->pgraph_lock);
//qemu_mutex_unlock_iothread(); //qemu_mutex_unlock_iothread();
break; break;
@ -2576,33 +2576,33 @@ static void pgraph_context_switch(NV2AState *d, unsigned int channel_id)
{ {
bool valid; bool valid;
// Cxbx Note : This isn't present in xqemu / OpenXbox : d->pgraph.lock.lock(); // Cxbx Note : This isn't present in xqemu / OpenXbox : d->pgraph.pgraph_lock.lock();
valid = d->pgraph.channel_valid && d->pgraph.channel_id == channel_id; valid = d->pgraph.channel_valid && d->pgraph.channel_id == channel_id;
if (!valid) { if (!valid) {
d->pgraph.trapped_channel_id = channel_id; d->pgraph.trapped_channel_id = channel_id;
} }
// Cxbx Note : This isn't present in xqemu / OpenXbox : d->pgraph.lock.unlock(); // Cxbx Note : This isn't present in xqemu / OpenXbox : d->pgraph.pgraph_lock.unlock();
if (!valid) { if (!valid) {
NV2A_DPRINTF("puller needs to switch to ch %d\n", channel_id); NV2A_DPRINTF("puller needs to switch to ch %d\n", channel_id);
d->pgraph.lock.unlock(); d->pgraph.pgraph_lock.unlock();
qemu_mutex_lock_iothread(); qemu_mutex_lock_iothread();
d->pgraph.pending_interrupts |= NV_PGRAPH_INTR_CONTEXT_SWITCH; d->pgraph.pending_interrupts |= NV_PGRAPH_INTR_CONTEXT_SWITCH;
update_irq(d); update_irq(d);
d->pgraph.lock.lock(); d->pgraph.pgraph_lock.lock();
qemu_mutex_unlock_iothread(); qemu_mutex_unlock_iothread();
while (d->pgraph.pending_interrupts & NV_PGRAPH_INTR_CONTEXT_SWITCH) { while (d->pgraph.pending_interrupts & NV_PGRAPH_INTR_CONTEXT_SWITCH) {
d->pgraph.interrupt_cond.wait(d->pgraph.lock); d->pgraph.interrupt_cond.wait(d->pgraph.pgraph_lock);
} }
} }
} }
static void pgraph_wait_fifo_access(NV2AState *d) { static void pgraph_wait_fifo_access(NV2AState *d) {
while (!d->pgraph.fifo_access) { while (!d->pgraph.fifo_access) {
d->pgraph.fifo_access_cond.wait(d->pgraph.lock); d->pgraph.fifo_access_cond.wait(d->pgraph.pgraph_lock);
} }
} }
@ -2693,7 +2693,7 @@ void pgraph_init(NV2AState *d)
PGRAPHState *pg = &d->pgraph; PGRAPHState *pg = &d->pgraph;
pg->lock = std::unique_lock<std::mutex>(pg->_lock, std::defer_lock); // was SDL_CreateMutex(); pg->pgraph_lock = std::unique_lock<std::mutex>(pg->pgraph_mutex, std::defer_lock); // was SDL_CreateMutex();
//pg->interrupt_cond = SDL_CreateCond(); //pg->interrupt_cond = SDL_CreateCond();
//pg->fifo_access_cond = SDL_CreateCond(); //pg->fifo_access_cond = SDL_CreateCond();
//pg->flip_3d_cond = SDL_CreateCond(); //pg->flip_3d_cond = SDL_CreateCond();
@ -2781,7 +2781,7 @@ void pgraph_init(NV2AState *d)
void pgraph_destroy(PGRAPHState *pg) void pgraph_destroy(PGRAPHState *pg)
{ {
#ifdef COMPILE_OPENGL #ifdef COMPILE_OPENGL
SDL_DestroyMutex(pg->lock); SDL_DestroyMutex(pg->pgraph_lock);
SDL_DestroyCond(pg->interrupt_cond); SDL_DestroyCond(pg->interrupt_cond);
SDL_DestroyCond(pg->fifo_access_cond); SDL_DestroyCond(pg->fifo_access_cond);
SDL_DestroyCond(pg->flip_3d_cond); SDL_DestroyCond(pg->flip_3d_cond);

View File

@ -301,8 +301,8 @@ typedef struct GraphicsContext {
typedef struct PGRAPHState { typedef struct PGRAPHState {
std::mutex _lock; std::mutex pgraph_mutex;
std::unique_lock<std::mutex> lock; std::unique_lock<std::mutex> pgraph_lock;
uint32_t pending_interrupts; uint32_t pending_interrupts;
uint32_t enabled_interrupts; uint32_t enabled_interrupts;