fix volatile buffer

change debugdraw to use volatile
fix volatile buffer wraparound
This commit is contained in:
marauder2k7 2025-07-29 15:20:22 +01:00
parent d45c3794a5
commit 267986a289
2 changed files with 8 additions and 8 deletions

View file

@ -201,6 +201,8 @@ public:
if (mBufferFreePos < mBufferSize) if (mBufferFreePos < mBufferSize)
mUsedRanges.push_back(UsedRange(mBufferFreePos, mBufferSize - 1)); mUsedRanges.push_back(UsedRange(mBufferFreePos, mBufferSize - 1));
init();
// Reset free pos // Reset free pos
mBufferFreePos = 0; mBufferFreePos = 0;
@ -224,8 +226,6 @@ public:
if (GFXGL->mCapabilities.bufferStorage) if (GFXGL->mCapabilities.bufferStorage)
{ {
outPtr = static_cast<U8*>(mBufferPtr) + mBufferFreePos; outPtr = static_cast<U8*>(mBufferPtr) + mBufferFreePos;
_getBufferData.mOffset = outOffset;
_getBufferData.mSize = size;
} }
else if (GFXGL->glUseMap()) else if (GFXGL->glUseMap())
{ {

View file

@ -245,7 +245,7 @@ void duDebugDrawTorque::end()
box.maxExtents.set(-F32_MAX, -F32_MAX, -F32_MAX); box.maxExtents.set(-F32_MAX, -F32_MAX, -F32_MAX);
GFXVertexBufferHandle<GFXVertexPCT> buffer; GFXVertexBufferHandle<GFXVertexPCT> buffer;
buffer.set(GFX, batchVerts, GFXBufferTypeStatic); buffer.set(GFX, batchVerts, GFXBufferTypeVolatile);
GFXVertexPCT* verts = buffer.lock(); GFXVertexPCT* verts = buffer.lock();
for (U32 i = 0; i < linesThisBatch * vertsPerLine; ++i) for (U32 i = 0; i < linesThisBatch * vertsPerLine; ++i)
@ -258,7 +258,7 @@ void duDebugDrawTorque::end()
// --- Build index buffer // --- Build index buffer
GFXPrimitiveBufferHandle pb; GFXPrimitiveBufferHandle pb;
pb.set(GFX, linesThisBatch * 2, linesThisBatch, GFXBufferTypeStatic); pb.set(GFX, linesThisBatch * 2, linesThisBatch, GFXBufferTypeVolatile);
U16* indices = nullptr; U16* indices = nullptr;
pb.lock(&indices); pb.lock(&indices);
@ -303,7 +303,7 @@ void duDebugDrawTorque::end()
box.maxExtents.set(-F32_MAX, -F32_MAX, -F32_MAX); box.maxExtents.set(-F32_MAX, -F32_MAX, -F32_MAX);
GFXVertexBufferHandle<GFXVertexPCT> buffer; GFXVertexBufferHandle<GFXVertexPCT> buffer;
buffer.set(GFX, batchVerts, GFXBufferTypeStatic); buffer.set(GFX, batchVerts, GFXBufferTypeVolatile);
GFXVertexPCT* verts = buffer.lock(); GFXVertexPCT* verts = buffer.lock();
for (U32 i = 0; i < trisThisBatch * vertsPerTri; ++i) for (U32 i = 0; i < trisThisBatch * vertsPerTri; ++i)
@ -317,7 +317,7 @@ void duDebugDrawTorque::end()
// --- Build index buffer // --- Build index buffer
GFXPrimitiveBufferHandle pb; GFXPrimitiveBufferHandle pb;
pb.set(GFX, trisThisBatch*3, trisThisBatch, GFXBufferTypeStatic); pb.set(GFX, trisThisBatch*3, trisThisBatch, GFXBufferTypeVolatile);
U16* indices = nullptr; U16* indices = nullptr;
pb.lock(&indices); pb.lock(&indices);
@ -363,7 +363,7 @@ void duDebugDrawTorque::end()
box.maxExtents.set(-F32_MAX, -F32_MAX, -F32_MAX); box.maxExtents.set(-F32_MAX, -F32_MAX, -F32_MAX);
GFXVertexBufferHandle<GFXVertexPCT> buffer; GFXVertexBufferHandle<GFXVertexPCT> buffer;
buffer.set(GFX, batchVerts, GFXBufferTypeStatic); buffer.set(GFX, batchVerts, GFXBufferTypeVolatile);
GFXVertexPCT* verts = buffer.lock(); GFXVertexPCT* verts = buffer.lock();
U32 outIdx = 0; U32 outIdx = 0;
@ -383,7 +383,7 @@ void duDebugDrawTorque::end()
buffer.unlock(); buffer.unlock();
GFXPrimitiveBufferHandle pb; GFXPrimitiveBufferHandle pb;
pb.set(GFX, batchIndices, quadsThisBatch*2, GFXBufferTypeStatic); pb.set(GFX, batchIndices, quadsThisBatch*2, GFXBufferTypeVolatile);
U16* indices = nullptr; U16* indices = nullptr;
pb.lock(&indices); pb.lock(&indices);