summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorLeslie Linden <leslie@lindenlab.com>2011-07-19 13:31:32 -0700
committerLeslie Linden <leslie@lindenlab.com>2011-07-19 13:31:32 -0700
commit76249c58f64beec0d426ab37397159feeafca2d6 (patch)
tree85faa68d0eeb15e16dd5c6ca4c75b3278c1882d7 /indra/newview
parent2eaadf902406fbdf6feb5e3e39a9f07f3369fc17 (diff)
SH-2038 FIX -- [PUBLIC] Severe performance drop on MacBook Pros
EXP-997 FIX -- Significant FPS degradation in 2.8.0 Beta on Mac equipped ATI video card * Disabled VBO's on mac to avoid stalls in renderer * Placed valid data into the padding between triangles in the vertex buffer to remove uninitialized craziness * Removed invalid rendering checks causing GL errors in debug mode Reviewed by davep
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/featuretable_mac.txt4
-rw-r--r--indra/newview/lldrawable.cpp5
-rw-r--r--indra/newview/llface.cpp12
-rw-r--r--indra/newview/pipeline.cpp10
4 files changed, 13 insertions, 18 deletions
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index f0b1f532a9..fa67ee547c 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -1,4 +1,4 @@
-version 28
+version 29
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// Should be combined into one table
@@ -47,7 +47,7 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 1.0
RenderUseImpostors 1 1
-RenderVBOEnable 1 1
+RenderVBOEnable 1 0
RenderVBOMappingDisable 1 0
RenderVolumeLODFactor 1 2.0
UseStartScreen 1 1
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index a5168fd897..debac9dcbf 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -1524,11 +1524,6 @@ BOOL LLDrawable::isAnimating() const
return TRUE;
}
- if (!LLVertexBuffer::sUseStreamDraw && mVObjp->isFlexible())
- {
- return TRUE;
- }
-
return FALSE;
}
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 59c6e904a1..17b6912b63 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -1621,6 +1621,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (rebuild_pos)
{
+ llassert(num_vertices > 0);
+
mVertexBuffer->getVertexStrider(vert, mGeomIndex, mGeomCount, map_range);
vertices = (LLVector4a*) vert.get();
@@ -1649,7 +1651,15 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
index_dst += 4;
}
while (index_dst < index_end);
-
+
+ S32 aligned_pad_vertices = mGeomCount - num_vertices;
+ LLVector4a* last_vec = end - 1;
+ while (aligned_pad_vertices > 0)
+ {
+ --aligned_pad_vertices;
+ *dst++ = *last_vec;
+ }
+
if (map_range)
{
mVertexBuffer->setBuffer(0);
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index bd801ae4c2..3e35e0e41a 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -3686,8 +3686,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
LLVertexBuffer::unbind();
LLGLState::checkStates();
- //LLGLState::checkTextureChannels();
- //LLGLState::checkClientArrays();
LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderHighlights");
@@ -3825,8 +3823,6 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
llerrs << "GL matrix stack corrupted!" << llendl;
}
LLGLState::checkStates();
- LLGLState::checkTextureChannels();
- LLGLState::checkClientArrays();
}
}
}
@@ -3919,8 +3915,6 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
llerrs << "GL matrix stack corrupted!" << llendl;
}
LLGLState::checkStates();
- LLGLState::checkTextureChannels();
- LLGLState::checkClientArrays();
}
}
}
@@ -3995,8 +3989,6 @@ void LLPipeline::renderGeomShadow(LLCamera& camera)
LLVertexBuffer::unbind();
LLGLState::checkStates();
- LLGLState::checkTextureChannels();
- LLGLState::checkClientArrays();
}
}
else
@@ -8123,8 +8115,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
LLViewerCamera::getInstance()->setUserClipPlane(npnorm);
LLGLState::checkStates();
- //LLGLState::checkTextureChannels();
- //LLGLState::checkClientArrays();
if (!skip_avatar_update)
{