From c6932e2675ef0e806ed1f8e08295a48dde3b3990 Mon Sep 17 00:00:00 2001 From: Florent Castelli Date: Sun, 25 Aug 2013 19:51:06 +0200 Subject: [PATCH] Use GEPrimitiveType everywhere instead of stupid integer --- GPU/GLES/GLES_GPU.cpp | 2 +- GPU/GLES/IndexGenerator.cpp | 2 +- GPU/GLES/IndexGenerator.h | 4 ++-- GPU/GLES/TransformPipeline.cpp | 12 ++++++------ GPU/GLES/TransformPipeline.h | 6 +++--- GPU/ge_constants.h | 16 +++++++++------- 6 files changed, 22 insertions(+), 20 deletions(-) diff --git a/GPU/GLES/GLES_GPU.cpp b/GPU/GLES/GLES_GPU.cpp index 75c7da9b6b..1e31559f7d 100644 --- a/GPU/GLES/GLES_GPU.cpp +++ b/GPU/GLES/GLES_GPU.cpp @@ -644,7 +644,7 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) { // when it's time to draw. As most PSP games set state redundantly ALL THE TIME, this is a huge optimization. u32 count = data & 0xFFFF; - u32 prim = data >> 16; + GEPrimitiveType prim = static_cast(data >> 16); // Discard AA lines as we can't do anything that makes sense with these anyway. The SW plugin might, though. if ((prim == GE_PRIM_LINE_STRIP || prim == GE_PRIM_LINES) && (gstate.antiAliasEnable & 1)) diff --git a/GPU/GLES/IndexGenerator.cpp b/GPU/GLES/IndexGenerator.cpp index 46a645a6a2..acb9672aae 100644 --- a/GPU/GLES/IndexGenerator.cpp +++ b/GPU/GLES/IndexGenerator.cpp @@ -29,7 +29,7 @@ static const u8 indexedPrimitiveType[7] = { }; void IndexGenerator::Reset() { - prim_ = -1; + prim_ = GE_PRIM_INVALID; count_ = 0; index_ = 0; seenPrims_ = 0; diff --git a/GPU/GLES/IndexGenerator.h b/GPU/GLES/IndexGenerator.h index 832bc01a75..2817991f8c 100644 --- a/GPU/GLES/IndexGenerator.h +++ b/GPU/GLES/IndexGenerator.h @@ -29,7 +29,7 @@ public: void Reset(); static bool PrimCompatible(int prim1, int prim2); bool PrimCompatible(int prim); - int Prim() const { return prim_; } + GEPrimitiveType Prim() const { return prim_; } void AddPrim(int prim, int vertexCount); void TranslatePrim(int prim, int numInds, const u8 *inds, int indexOffset); @@ -93,7 +93,7 @@ private: int index_; int count_; int pureCount_; - int prim_; + GEPrimitiveType prim_; int seenPrims_; }; diff --git a/GPU/GLES/TransformPipeline.cpp b/GPU/GLES/TransformPipeline.cpp index de3e423aca..cc65d3cb6c 100644 --- a/GPU/GLES/TransformPipeline.cpp +++ b/GPU/GLES/TransformPipeline.cpp @@ -65,7 +65,7 @@ inline float clamp(float in, float min, float max) { TransformDrawEngine::TransformDrawEngine() : collectedVerts(0), - prevPrim_(-1), + prevPrim_(GE_PRIM_INVALID), dec_(0), lastVType_(-1), curVbo_(0), @@ -830,7 +830,7 @@ int TransformDrawEngine::EstimatePerVertexCost() { return cost; } -void TransformDrawEngine::SubmitPrim(void *verts, void *inds, int prim, int vertexCount, u32 vertType, int forceIndexType, int *bytesRead) { +void TransformDrawEngine::SubmitPrim(void *verts, void *inds, GEPrimitiveType prim, int vertexCount, u32 vertType, int forceIndexType, int *bytesRead) { if (vertexCount == 0) return; // we ignore zero-sized draw calls. @@ -1031,7 +1031,7 @@ void TransformDrawEngine::DoFlush() { // This is not done on every drawcall, we should collect vertex data // until critical state changes. That's when we draw (flush). - int prim = prevPrim_; + GEPrimitiveType prim = prevPrim_; ApplyDrawState(prim); LinkedShader *program = shaderManager_->ApplyShader(prim); @@ -1139,7 +1139,7 @@ void TransformDrawEngine::DoFlush() { vbo = vai->vbo; ebo = vai->ebo; vertexCount = vai->numVerts; - prim = vai->prim; + prim = static_cast(vai->prim); break; } @@ -1158,7 +1158,7 @@ void TransformDrawEngine::DoFlush() { if (ebo) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); vertexCount = vai->numVerts; - prim = vai->prim; + prim = static_cast(vai->prim); break; } @@ -1219,5 +1219,5 @@ rotateVBO: indexGen.Reset(); collectedVerts = 0; numDrawCalls = 0; - prevPrim_ = -1; + prevPrim_ = GE_PRIM_INVALID; } diff --git a/GPU/GLES/TransformPipeline.h b/GPU/GLES/TransformPipeline.h index f80c25bf2c..94ab6ef131 100644 --- a/GPU/GLES/TransformPipeline.h +++ b/GPU/GLES/TransformPipeline.h @@ -56,7 +56,7 @@ public: vbo = 0; ebo = 0; numDCs = 0; - prim = -1; + prim = GE_PRIM_INVALID; numDraws = 0; numFrames = 0; lastFrame = gpuStats.numFlips; @@ -96,7 +96,7 @@ class TransformDrawEngine : public GfxResourceHolder { public: TransformDrawEngine(); virtual ~TransformDrawEngine(); - void SubmitPrim(void *verts, void *inds, int prim, int vertexCount, u32 vertexType, int forceIndexType, int *bytesRead); + void SubmitPrim(void *verts, void *inds, GEPrimitiveType prim, int vertexCount, u32 vertexType, int forceIndexType, int *bytesRead); void DrawBezier(int ucount, int vcount); void SubmitSpline(void* control_points, void* indices, int count_u, int count_v, int type_u, int type_v, GEPatchPrimType prim_type, u32 vertex_type); @@ -157,7 +157,7 @@ private: // Vertex collector state IndexGenerator indexGen; int collectedVerts; - int prevPrim_; + GEPrimitiveType prevPrim_; // Cached vertex decoders std::map decoderMap_; diff --git a/GPU/ge_constants.h b/GPU/ge_constants.h index f1dbbf4d6f..34da5d23ef 100644 --- a/GPU/ge_constants.h +++ b/GPU/ge_constants.h @@ -476,13 +476,15 @@ enum GETexProjMapMode enum GEPrimitiveType { - GE_PRIM_POINTS=0, - GE_PRIM_LINES=1, - GE_PRIM_LINE_STRIP=2, - GE_PRIM_TRIANGLES=3, - GE_PRIM_TRIANGLE_STRIP=4, - GE_PRIM_TRIANGLE_FAN=5, - GE_PRIM_RECTANGLES=6, + GE_PRIM_POINTS = 0, + GE_PRIM_LINES = 1, + GE_PRIM_LINE_STRIP = 2, + GE_PRIM_TRIANGLES = 3, + GE_PRIM_TRIANGLE_STRIP = 4, + GE_PRIM_TRIANGLE_FAN = 5, + GE_PRIM_RECTANGLES = 6, + GE_PRIM_KEEP_PREVIOUS = 7, + GE_PRIM_INVALID = -1, }; enum GELogicOp