diff --git a/GPU/GLES/DisplayListInterpreter.cpp b/GPU/GLES/DisplayListInterpreter.cpp index cea3838d5b..d9f10db376 100644 --- a/GPU/GLES/DisplayListInterpreter.cpp +++ b/GPU/GLES/DisplayListInterpreter.cpp @@ -921,7 +921,7 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) { shaderManager_->DirtyUniform(DIRTY_WORLDMATRIX); } num++; - gstate.worldmtxnum = (gstate.worldmtxnum & 0xFF000000) | (num & 0xF); + gstate.worldmtxnum = (GE_CMD_WORLDMATRIXNUMBER << 24) | (num & 0xF); } break; @@ -939,7 +939,7 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) { shaderManager_->DirtyUniform(DIRTY_VIEWMATRIX); } num++; - gstate.viewmtxnum = (gstate.viewmtxnum & 0xFF000000) | (num & 0xF); + gstate.viewmtxnum = (GE_CMD_VIEWMATRIXNUMBER << 24) | (num & 0xF); } break; @@ -957,7 +957,7 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) { shaderManager_->DirtyUniform(DIRTY_PROJMATRIX | DIRTY_PROJTHROUGHMATRIX); } num++; - gstate.projmtxnum = (gstate.projmtxnum & 0xFF000000) | (num & 0xF); + gstate.projmtxnum = (GE_CMD_PROJMATRIXNUMBER << 24) | (num & 0xF); } break; @@ -975,7 +975,7 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) { shaderManager_->DirtyUniform(DIRTY_TEXMATRIX); } num++; - gstate.texmtxnum = (gstate.texmtxnum & 0xFF000000) | (num & 0xF); + gstate.texmtxnum = (GE_CMD_TGENMATRIXNUMBER << 24) | (num & 0xF); } break; @@ -993,7 +993,7 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) { shaderManager_->DirtyUniform(DIRTY_BONEMATRIX0 << (num / 12)); } num++; - gstate.boneMatrixNumber = (gstate.boneMatrixNumber & 0xFF000000) | (num & 0x7F); + gstate.boneMatrixNumber = (GE_CMD_BONEMATRIXNUMBER << 24) | (num & 0x7F); } break; @@ -1120,11 +1120,6 @@ void GLES_GPU::ClearCacheNextFrame() { textureCache_.ClearNextFrame(); } - -inline void GLES_GPU::Flush() { - transformDraw_.Flush(); -} - void GLES_GPU::Resized() { framebufferManager_.Resized(); } diff --git a/GPU/GLES/DisplayListInterpreter.h b/GPU/GLES/DisplayListInterpreter.h index aa97f25fd0..76a4969480 100644 --- a/GPU/GLES/DisplayListInterpreter.h +++ b/GPU/GLES/DisplayListInterpreter.h @@ -69,7 +69,9 @@ protected: virtual void ProcessEvent(GPUEvent ev); private: - void Flush(); + void Flush() { + transformDraw_.Flush(); + } void DoBlockTransfer(); void ApplyDrawState(int prim); void CheckFlushOp(int cmd, u32 diff); diff --git a/GPU/GLES/TransformPipeline.cpp b/GPU/GLES/TransformPipeline.cpp index c087af9f74..a5a5e1cd0a 100644 --- a/GPU/GLES/TransformPipeline.cpp +++ b/GPU/GLES/TransformPipeline.cpp @@ -1109,10 +1109,7 @@ VertexArrayInfo::~VertexArrayInfo() { glDeleteBuffers(1, &ebo); } -void TransformDrawEngine::Flush() { - if (!numDrawCalls) - return; - +void TransformDrawEngine::DoFlush() { gpuStats.numFlushes++; gpuStats.numTrackedVertexArrays = (int)vai_.size(); diff --git a/GPU/GLES/TransformPipeline.h b/GPU/GLES/TransformPipeline.h index 20391c2163..98474748e1 100644 --- a/GPU/GLES/TransformPipeline.h +++ b/GPU/GLES/TransformPipeline.h @@ -100,7 +100,6 @@ public: void DrawBezier(int ucount, int vcount); void DrawSpline(int ucount, int vcount, int utype, int vtype); void DecodeVerts(); - void Flush(); void SetShaderManager(ShaderManager *shaderManager) { shaderManager_ = shaderManager; } @@ -122,7 +121,15 @@ public: // This requires a SetupVertexDecoder call first. int EstimatePerVertexCost(); + // So that this can be inlined + void Flush() { + if (!numDrawCalls) + return; + DoFlush(); + } + private: + void DoFlush(); void SoftwareTransformAndDraw(int prim, u8 *decoded, LinkedShader *program, int vertexCount, u32 vertexType, void *inds, int indexType, const DecVtxFormat &decVtxFormat, int maxIndex); void ApplyDrawState(int prim); bool IsReallyAClear(int numVerts) const;