Added new transformfeedback fasttimers, and disabled rasterizing when performing transform feedback.
This commit is contained in:
@@ -1172,6 +1172,15 @@ static LLFastTimer::DeclareTimer FTM_FACE_GEOM_COLOR("Color");
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_EMISSIVE("Emissive");
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_WEIGHTS("Weights");
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_BINORMAL("Binormal");
|
||||
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_FEEDBACK("Face Feedback");
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_FEEDBACK_POSITION("Feedback Position");
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_FEEDBACK_NORMAL("Feedback Normal");
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_FEEDBACK_TEXTURE("Feedback Texture");
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_FEEDBACK_COLOR("Feedback Color");
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_FEEDBACK_EMISSIVE("Feedback Emissive");
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_FEEDBACK_BINORMAL("Feedback Binormal");
|
||||
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_INDEX("Index");
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_INDEX_TAIL("Tail");
|
||||
static LLFastTimer::DeclareTimer FTM_FACE_POSITION_STORE("Pos");
|
||||
@@ -1379,7 +1388,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
|
||||
!rebuild_weights && //TODO: add support for weights
|
||||
!volume.isUnique()) //source volume is NOT flexi
|
||||
{ //use transform feedback to pack vertex buffer
|
||||
|
||||
LLFastTimer t(FTM_FACE_GEOM_FEEDBACK);
|
||||
LLGLEnable discard(GL_RASTERIZER_DISCARD);
|
||||
LLVertexBuffer* buff = (LLVertexBuffer*) vf.mVertexBuffer.get();
|
||||
|
||||
if (vf.mVertexBuffer.isNull() || buff->getNumVerts() != vf.mNumVertices)
|
||||
@@ -1396,7 +1406,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
|
||||
|
||||
if (rebuild_pos)
|
||||
{
|
||||
LLFastTimer t(FTM_FACE_GEOM_POSITION);
|
||||
LLFastTimer t(FTM_FACE_GEOM_FEEDBACK_POSITION);
|
||||
gTransformPositionProgram.bind();
|
||||
|
||||
mVertexBuffer->bindForFeedback(0, LLVertexBuffer::TYPE_VERTEX, mGeomIndex, mGeomCount);
|
||||
@@ -1421,7 +1431,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
|
||||
|
||||
if (rebuild_color)
|
||||
{
|
||||
LLFastTimer t(FTM_FACE_GEOM_COLOR);
|
||||
LLFastTimer t(FTM_FACE_GEOM_FEEDBACK_COLOR);
|
||||
gTransformColorProgram.bind();
|
||||
|
||||
mVertexBuffer->bindForFeedback(0, LLVertexBuffer::TYPE_COLOR, mGeomIndex, mGeomCount);
|
||||
@@ -1437,7 +1447,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
|
||||
|
||||
if (rebuild_emissive)
|
||||
{
|
||||
LLFastTimer t(FTM_FACE_GEOM_EMISSIVE);
|
||||
LLFastTimer t(FTM_FACE_GEOM_FEEDBACK_EMISSIVE);
|
||||
gTransformColorProgram.bind();
|
||||
|
||||
mVertexBuffer->bindForFeedback(0, LLVertexBuffer::TYPE_EMISSIVE, mGeomIndex, mGeomCount);
|
||||
@@ -1458,7 +1468,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
|
||||
|
||||
if (rebuild_normal)
|
||||
{
|
||||
LLFastTimer t(FTM_FACE_GEOM_NORMAL);
|
||||
LLFastTimer t(FTM_FACE_GEOM_FEEDBACK_NORMAL);
|
||||
gTransformNormalProgram.bind();
|
||||
|
||||
mVertexBuffer->bindForFeedback(0, LLVertexBuffer::TYPE_NORMAL, mGeomIndex, mGeomCount);
|
||||
@@ -1471,7 +1481,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
|
||||
|
||||
if (rebuild_binormal)
|
||||
{
|
||||
LLFastTimer t(FTM_FACE_GEOM_BINORMAL);
|
||||
LLFastTimer t(FTM_FACE_GEOM_FEEDBACK_BINORMAL);
|
||||
gTransformBinormalProgram.bind();
|
||||
|
||||
mVertexBuffer->bindForFeedback(0, LLVertexBuffer::TYPE_BINORMAL, mGeomIndex, mGeomCount);
|
||||
@@ -1484,7 +1494,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
|
||||
|
||||
if (rebuild_tcoord)
|
||||
{
|
||||
LLFastTimer t(FTM_FACE_GEOM_TEXTURE);
|
||||
LLFastTimer t(FTM_FACE_GEOM_FEEDBACK_TEXTURE);
|
||||
gTransformTexCoordProgram.bind();
|
||||
|
||||
mVertexBuffer->bindForFeedback(0, LLVertexBuffer::TYPE_TEXCOORD0, mGeomIndex, mGeomCount);
|
||||
|
||||
Reference in New Issue
Block a user