mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Misc GPU stats etc changes
This commit is contained in:
parent
7a5aa60b3a
commit
8a32779150
5 changed files with 36 additions and 25 deletions
|
@ -211,8 +211,9 @@ void hleEnterVblank(u64 userdata, int cyclesLate) {
|
|||
"Draw calls: %i, flushes %i\n"
|
||||
"Cached Draw calls: %i\n"
|
||||
"Num Tracked Vertex Arrays: %i\n"
|
||||
"Vertices Transformed: %i\n"
|
||||
"Vertices Submitted: %i\n"
|
||||
"Cached Vertices Drawn: %i\n"
|
||||
"Uncached Vertices Drawn: %i\n"
|
||||
"FBOs active: %i\n"
|
||||
"Textures active: %i, decoded: %i\n"
|
||||
"Texture invalidations: %i\n"
|
||||
|
@ -230,8 +231,9 @@ void hleEnterVblank(u64 userdata, int cyclesLate) {
|
|||
gpuStats.numFlushes,
|
||||
gpuStats.numCachedDrawCalls,
|
||||
gpuStats.numTrackedVertexArrays,
|
||||
gpuStats.numVertsTransformed,
|
||||
gpuStats.numVertsSubmitted,
|
||||
gpuStats.numCachedVertsDrawn,
|
||||
gpuStats.numUncachedVertsDrawn,
|
||||
gpuStats.numFBOs,
|
||||
gpuStats.numTextures,
|
||||
gpuStats.numTexturesDecoded,
|
||||
|
@ -241,10 +243,11 @@ void hleEnterVblank(u64 userdata, int cyclesLate) {
|
|||
gpuStats.numShaders
|
||||
);
|
||||
|
||||
float zoom = 0.5f; /// g_Config.iWindowZoom;
|
||||
float zoom = 0.3f; /// g_Config.iWindowZoom;
|
||||
float soff = 0.3f;
|
||||
PPGeBegin();
|
||||
PPGeDrawText(stats, 1, 1, 0, zoom, 0xFF000000);
|
||||
PPGeDrawText(stats, -1, -1, 0, zoom, 0xFF000000);
|
||||
PPGeDrawText(stats, soff, soff, 0, zoom, 0xCC000000);
|
||||
PPGeDrawText(stats, -soff, -soff, 0, zoom, 0xCC000000);
|
||||
PPGeDrawText(stats, 0, 0, 0, zoom, 0xFFFFFFFF);
|
||||
PPGeEnd();
|
||||
|
||||
|
|
|
@ -166,8 +166,8 @@ const int flushBeforeCommandList[] = {
|
|||
GLES_GPU::GLES_GPU(int renderWidth, int renderHeight)
|
||||
: interruptsEnabled_(true),
|
||||
displayFramebufPtr_(0),
|
||||
prevDisplayFramebufPtr_(0),
|
||||
prevPrevDisplayFramebufPtr_(0),
|
||||
prevDisplayFramebuf_(0),
|
||||
prevPrevDisplayFramebuf_(0),
|
||||
renderWidth_(renderWidth),
|
||||
renderHeight_(renderHeight)
|
||||
{
|
||||
|
@ -257,8 +257,6 @@ void GLES_GPU::BeginFrame() {
|
|||
void GLES_GPU::SetDisplayFramebuffer(u32 framebuf, u32 stride, int format) {
|
||||
if (framebuf & 0x04000000) {
|
||||
//DEBUG_LOG(G3D, "Switch display framebuffer %08x", framebuf);
|
||||
prevPrevDisplayFramebufPtr_ = prevDisplayFramebufPtr_;
|
||||
prevDisplayFramebufPtr_ = displayFramebufPtr_;
|
||||
displayFramebufPtr_ = framebuf;
|
||||
displayStride_ = stride;
|
||||
displayFormat_ = format;
|
||||
|
@ -275,6 +273,9 @@ void GLES_GPU::CopyDisplayToOutput() {
|
|||
EndDebugDraw();
|
||||
|
||||
VirtualFramebuffer *vfb = GetDisplayFBO();
|
||||
prevPrevDisplayFramebuf_ = prevDisplayFramebuf_;
|
||||
prevDisplayFramebuf_ = displayFramebuf_;
|
||||
displayFramebuf_ = vfb;
|
||||
fbo_unbind();
|
||||
|
||||
glstate.viewport.set(0, 0, PSP_CoreParameter().pixelWidth, PSP_CoreParameter().pixelHeight);
|
||||
|
@ -307,17 +308,12 @@ void GLES_GPU::CopyDisplayToOutput() {
|
|||
BeginDebugDraw();
|
||||
}
|
||||
|
||||
static bool MaskedEqual(u32 addr1, u32 addr2) {
|
||||
return (addr1 & 0x3FFFFFF) == (addr2 & 0x3FFFFFF);
|
||||
}
|
||||
|
||||
|
||||
void GLES_GPU::DecimateFBOs() {
|
||||
for (auto iter = vfbs_.begin(); iter != vfbs_.end();) {
|
||||
VirtualFramebuffer *v = *iter;
|
||||
if (MaskedEqual(v->fb_address, displayFramebufPtr_) ||
|
||||
MaskedEqual(v->fb_address, prevDisplayFramebufPtr_) ||
|
||||
MaskedEqual(v->fb_address, prevPrevDisplayFramebufPtr_)) {
|
||||
if (v == displayFramebuf_ ||
|
||||
v == prevDisplayFramebuf_ ||
|
||||
v == prevPrevDisplayFramebuf_) {
|
||||
++iter;
|
||||
continue;
|
||||
}
|
||||
|
@ -330,6 +326,10 @@ void GLES_GPU::DecimateFBOs() {
|
|||
}
|
||||
}
|
||||
|
||||
static bool MaskedEqual(u32 addr1, u32 addr2) {
|
||||
return (addr1 & 0x3FFFFFF) == (addr2 & 0x3FFFFFF);
|
||||
}
|
||||
|
||||
GLES_GPU::VirtualFramebuffer *GLES_GPU::GetDisplayFBO() {
|
||||
for (auto iter = vfbs_.begin(); iter != vfbs_.end(); ++iter) {
|
||||
if (MaskedEqual((*iter)->fb_address, displayFramebufPtr_) && (*iter)->format == displayFormat_) {
|
||||
|
@ -338,7 +338,7 @@ GLES_GPU::VirtualFramebuffer *GLES_GPU::GetDisplayFBO() {
|
|||
}
|
||||
}
|
||||
DEBUG_LOG(HLE, "Finding no FBO matching address %08x", displayFramebufPtr_);
|
||||
#ifdef _DEBUG
|
||||
#if 0 // defined(_DEBUG)
|
||||
std::string debug = "FBOs: ";
|
||||
for (auto iter = vfbs_.begin(); iter != vfbs_.end(); ++iter) {
|
||||
char temp[256];
|
||||
|
@ -376,7 +376,7 @@ void GLES_GPU::SetRenderFrameBuffer() {
|
|||
VirtualFramebuffer *vfb = 0;
|
||||
for (auto iter = vfbs_.begin(); iter != vfbs_.end(); ++iter) {
|
||||
VirtualFramebuffer *v = *iter;
|
||||
if (v->fb_address == fb_address && v->width == drawing_width && v->height == drawing_height && v->format == fmt) {
|
||||
if (v->fb_address == fb_address && v->width == drawing_width && v->height == drawing_height /* && v->format == fmt */) {
|
||||
// Let's not be so picky for now. Let's say this is the one.
|
||||
vfb = v;
|
||||
// Update fb stride in case it changed
|
||||
|
@ -406,7 +406,7 @@ void GLES_GPU::SetRenderFrameBuffer() {
|
|||
case GE_FORMAT_8888: vfb->colorDepth = FBO_8888;
|
||||
}
|
||||
//#ifdef ANDROID
|
||||
// vfb->colorDepth = FBO_5551;
|
||||
// vfb->colorDepth = FBO_8888;
|
||||
//#endif
|
||||
|
||||
vfb->fbo = fbo_create(vfb->width * renderWidthFactor_, vfb->height * renderHeightFactor_, 1, true, vfb->colorDepth);
|
||||
|
|
|
@ -73,8 +73,6 @@ private:
|
|||
bool interruptsEnabled_;
|
||||
|
||||
u32 displayFramebufPtr_;
|
||||
u32 prevDisplayFramebufPtr_;
|
||||
u32 prevPrevDisplayFramebufPtr_;
|
||||
u32 displayStride_;
|
||||
int displayFormat_;
|
||||
|
||||
|
@ -107,6 +105,10 @@ private:
|
|||
FBO *fbo;
|
||||
};
|
||||
|
||||
VirtualFramebuffer *displayFramebuf_;
|
||||
VirtualFramebuffer *prevDisplayFramebuf_;
|
||||
VirtualFramebuffer *prevPrevDisplayFramebuf_;
|
||||
|
||||
void SetRenderFrameBuffer(); // Uses parameters computed from gstate
|
||||
// TODO: Break out into some form of FBO manager
|
||||
VirtualFramebuffer *GetDisplayFBO();
|
||||
|
|
|
@ -691,7 +691,7 @@ void TransformDrawEngine::SubmitPrim(void *verts, void *inds, int prim, int vert
|
|||
gpuStats.numJoins++;
|
||||
}
|
||||
gpuStats.numDrawCalls++;
|
||||
gpuStats.numVertsTransformed += vertexCount;
|
||||
gpuStats.numVertsSubmitted += vertexCount;
|
||||
|
||||
DeferredDrawCall &dc = drawCalls[numDrawCalls++];
|
||||
dc.verts = verts;
|
||||
|
@ -921,6 +921,7 @@ void TransformDrawEngine::Flush() {
|
|||
if (vai->ebo)
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vai->ebo);
|
||||
useElements = vai->ebo ? true : false;
|
||||
gpuStats.numCachedVertsDrawn += vai->numVerts;
|
||||
}
|
||||
vbo = vai->vbo;
|
||||
ebo = vai->ebo;
|
||||
|
@ -934,6 +935,7 @@ void TransformDrawEngine::Flush() {
|
|||
{
|
||||
vai->numDraws++;
|
||||
gpuStats.numCachedDrawCalls++;
|
||||
gpuStats.numCachedVertsDrawn += vai->numVerts;
|
||||
// DecodeVerts(); // TODO : Remove
|
||||
vbo = vai->vbo;
|
||||
ebo = vai->ebo;
|
||||
|
@ -955,6 +957,7 @@ void TransformDrawEngine::Flush() {
|
|||
} else {
|
||||
DecodeVerts();
|
||||
rotateVBO:
|
||||
gpuStats.numUncachedVertsDrawn += indexGen.VertexCount();
|
||||
useElements = !indexGen.SeenOnlyPurePrims();
|
||||
if (g_Config.bUseVBO) {
|
||||
// Just rotate VBO.
|
||||
|
@ -991,6 +994,7 @@ rotateVBO:
|
|||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
} else {
|
||||
DecodeVerts();
|
||||
gpuStats.numUncachedVertsDrawn += indexGen.VertexCount();
|
||||
prim = indexGen.Prim();
|
||||
DEBUG_LOG(G3D, "Flush prim %i SW! %i verts in one go", prim, indexGen.VertexCount());
|
||||
|
||||
|
|
|
@ -259,8 +259,9 @@ struct GPUStatistics
|
|||
numJoins = 0;
|
||||
numDrawCalls = 0;
|
||||
numCachedDrawCalls = 0;
|
||||
numVertsTransformed = 0;
|
||||
numVertsSubmitted = 0;
|
||||
numCachedVertsDrawn = 0;
|
||||
numUncachedVertsDrawn = 0;
|
||||
numTrackedVertexArrays = 0;
|
||||
numTextureInvalidations = 0;
|
||||
numTextureSwitches = 0;
|
||||
|
@ -275,8 +276,9 @@ struct GPUStatistics
|
|||
int numDrawCalls;
|
||||
int numCachedDrawCalls;
|
||||
int numFlushes;
|
||||
int numVertsTransformed;
|
||||
int numVertsSubmitted;
|
||||
int numCachedVertsDrawn;
|
||||
int numUncachedVertsDrawn;
|
||||
int numTrackedVertexArrays;
|
||||
int numTextureInvalidations;
|
||||
int numTextureSwitches;
|
||||
|
|
Loading…
Add table
Reference in a new issue