summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorErik Kundiman <erik@megapahit.org>2024-10-19 18:00:10 +0800
committerErik Kundiman <erik@megapahit.org>2024-10-19 18:00:10 +0800
commitc0e3be5df88ed316a247d8f7fae19a327a5a8a6f (patch)
tree48b553e5e3dea0263d9e5c34dad44239411df76b /indra
parent551950b4d38187a1724517b8b2995faa57a87205 (diff)
Further revert llrender to LL's
This might fix the black screen problem on Apple GPU.
Diffstat (limited to 'indra')
-rw-r--r--indra/llrender/llgl.cpp17
-rw-r--r--indra/llrender/llrender.cpp22
-rw-r--r--indra/llrender/llvertexbuffer.cpp1
-rw-r--r--indra/llrender/llvertexbuffer.h2
4 files changed, 11 insertions, 31 deletions
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index bd05645b46..6988e55034 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -50,10 +50,6 @@
#include "llglheaders.h"
#include "llglslshader.h"
-#include "llvertexbuffer.h"
-#include "llcontrol.h"
-extern LLControlGroup gSavedSettings;
-
#include "glm/glm.hpp"
#include <glm/gtc/matrix_access.hpp>
#include "glm/gtc/type_ptr.hpp"
@@ -1283,18 +1279,6 @@ bool LLGLManager::initGL()
initGLStates();
- U32 MPVBufferOptiMode = gSavedSettings.getU32("MPVBufferOptiMode");
- if (MPVBufferOptiMode == 0)
- {
- if(mIsApple) MPVBufferOptiMode = 2;
- else MPVBufferOptiMode = 1;
- gSavedSettings.setU32("MPVBufferOptiMode",MPVBufferOptiMode);
- }
- LLVertexBuffer::sMappingMode = MPVBufferOptiMode;
- //LLRender::sMappingMode = MPVBufferOptiMode;
-
- LL_INFOS() << "milo init sMappingMode " << MPVBufferOptiMode << LL_ENDL;
-
return true;
}
@@ -1411,7 +1395,6 @@ void LLGLManager::asLLSD(LLSD& info)
info["is_ati"] = mIsAMD; // note, do not rename is_ati to is_amd without coordinating with DW
info["is_nvidia"] = mIsNVIDIA;
info["is_intel"] = mIsIntel;
- info["is_apple"] = mIsApple;
info["gl_renderer"] = mGLRenderer;
}
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index db3a04c581..9178fc16b9 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -51,8 +51,6 @@ extern void APIENTRY gl_debug_callback(GLenum source,
thread_local LLRender gGL;
-const U32 BATCH_SIZE = 16334;
-
// Handy copies of last good GL matrices
F32 gGLModelView[16];
F32 gGLLastModelView[16];
@@ -69,7 +67,7 @@ S32 gGLViewport[4];
U32 LLRender::sUICalls = 0;
U32 LLRender::sUIVerts = 0;
U32 LLTexUnit::sWhiteTexture = 0;
-bool LLRender::sGLCoreProfile = true;
+bool LLRender::sGLCoreProfile = false;
bool LLRender::sNsightDebugSupport = false;
LLVector2 LLRender::sUIGLScaleFactor = LLVector2(1.f, 1.f);
@@ -912,7 +910,7 @@ void LLRender::initVertexBuffer()
llassert_always(mBuffer.isNull());
stop_glerror();
mBuffer = new LLVertexBuffer(immediate_mask);
- mBuffer->allocateBuffer(BATCH_SIZE, 0);
+ mBuffer->allocateBuffer(4096, 0);
mBuffer->getVertexStrider(mVerticesp);
mBuffer->getTexCoord0Strider(mTexcoordsp);
mBuffer->getColorStrider(mColorsp);
@@ -1575,7 +1573,7 @@ void LLRender::end()
if ((mMode != LLRender::LINES &&
mMode != LLRender::TRIANGLES &&
mMode != LLRender::POINTS) ||
- mCount > (BATCH_SIZE / 2))
+ mCount > 2048)
{
flush();
}
@@ -1748,7 +1746,9 @@ LLVertexBuffer* LLRender::genBuffer(U32 attribute_mask, S32 count)
vb->setColorData(mColorsp.get());
}
- if (LLVertexBuffer::sMappingMode == 3) vb->unmapBuffer();
+#if LL_DARWIN
+ vb->unmapBuffer();
+#endif
vb->unbind();
return vb;
@@ -1772,7 +1772,7 @@ void LLRender::resetStriders(S32 count)
void LLRender::vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z)
{
//the range of mVerticesp, mColorsp and mTexcoordsp is [0, 4095]
- if (mCount > BATCH_SIZE / 2)
+ if (mCount > 2048)
{ //break when buffer gets reasonably full to keep GL command buffers happy and avoid overflow below
switch (mMode)
{
@@ -1782,7 +1782,7 @@ void LLRender::vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z)
}
}
- if (mCount > BATCH_SIZE - 2)
+ if (mCount > 4094)
{
// LL_WARNS() << "GL immediate mode overflow. Some geometry not drawn." << LL_ENDL;
return;
@@ -1806,7 +1806,7 @@ void LLRender::vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z)
void LLRender::vertexBatchPreTransformed(LLVector4a* verts, S32 vert_count)
{
- if (mCount + vert_count > BATCH_SIZE - 2)
+ if (mCount + vert_count > 4094)
{
// LL_WARNS() << "GL immediate mode overflow. Some geometry not drawn." << LL_ENDL;
return;
@@ -1827,7 +1827,7 @@ void LLRender::vertexBatchPreTransformed(LLVector4a* verts, S32 vert_count)
void LLRender::vertexBatchPreTransformed(LLVector4a* verts, LLVector2* uvs, S32 vert_count)
{
- if (mCount + vert_count > BATCH_SIZE - 2)
+ if (mCount + vert_count > 4094)
{
// LL_WARNS() << "GL immediate mode overflow. Some geometry not drawn." << LL_ENDL;
return;
@@ -1851,7 +1851,7 @@ void LLRender::vertexBatchPreTransformed(LLVector4a* verts, LLVector2* uvs, S32
void LLRender::vertexBatchPreTransformed(LLVector4a* verts, LLVector2* uvs, LLColor4U* colors, S32 vert_count)
{
- if (mCount + vert_count > BATCH_SIZE - 2)
+ if (mCount + vert_count > 4094)
{
// LL_WARNS() << "GL immediate mode overflow. Some geometry not drawn." << LL_ENDL;
return;
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 52ee998dcb..6f4828397a 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -658,7 +658,6 @@ U32 LLVertexBuffer::sGLRenderIndices = 0;
U32 LLVertexBuffer::sLastMask = 0;
U32 LLVertexBuffer::sVertexCount = 0;
-U32 LLVertexBuffer::sMappingMode = 0;
//NOTE: each component must be AT LEAST 4 bytes in size to avoid a performance penalty on AMD hardware
const U32 LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_MAX] =
diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h
index 487b510d2e..d4c6fbaf18 100644
--- a/indra/llrender/llvertexbuffer.h
+++ b/indra/llrender/llvertexbuffer.h
@@ -337,8 +337,6 @@ public:
static U32 sGLRenderIndices;
static U32 sLastMask;
static U32 sVertexCount;
-
- static U32 sMappingMode;
};
#ifdef LL_PROFILER_ENABLE_RENDER_DOC