mirror of
https://github.com/libretro/ppsspp.git
synced 2025-03-02 05:36:43 +00:00
49 lines
908 B
C++
49 lines
908 B
C++
#include "GPUCommon.h"
|
|
|
|
static int dlIdGenerator = 1;
|
|
|
|
void init() {
|
|
dlIdGenerator = 1;
|
|
}
|
|
|
|
int GPUCommon::listStatus(int listid)
|
|
{
|
|
for(DisplayListQueue::iterator it(dlQueue.begin()); it != dlQueue.end(); ++it)
|
|
{
|
|
if(it->id == listid)
|
|
{
|
|
return it->status;
|
|
}
|
|
}
|
|
return 0x80000100; // INVALID_ID
|
|
}
|
|
|
|
u32 GPUCommon::EnqueueList(u32 listpc, u32 stall, bool head)
|
|
{
|
|
DisplayList dl;
|
|
dl.id = dlIdGenerator++;
|
|
dl.pc = listpc & 0xFFFFFFF;
|
|
dl.stall = stall & 0xFFFFFFF;
|
|
dl.status = PSP_GE_LIST_QUEUED;
|
|
if(head)
|
|
dlQueue.push_front(dl);
|
|
else
|
|
dlQueue.push_back(dl);
|
|
ProcessDLQueue();
|
|
return dl.id;
|
|
}
|
|
|
|
void GPUCommon::UpdateStall(int listid, u32 newstall)
|
|
{
|
|
// this needs improvement....
|
|
for (DisplayListQueue::iterator iter = dlQueue.begin(); iter != dlQueue.end(); iter++)
|
|
{
|
|
DisplayList &l = *iter;
|
|
if (l.id == listid)
|
|
{
|
|
l.stall = newstall & 0xFFFFFFF;
|
|
}
|
|
}
|
|
|
|
ProcessDLQueue();
|
|
} |