Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Unified Diff: src/gpu/gl/GrGpuGL_program.cpp

Issue 130423013: Use vertex buffer objects instead of client side arrays in fixed-function codepaths (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/gl/GrGLVertexArray.cpp ('k') | src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/gl/GrGpuGL_program.cpp
diff --git a/src/gpu/gl/GrGpuGL_program.cpp b/src/gpu/gl/GrGpuGL_program.cpp
index a3beab1a5999bfbaeed0dca446edd189cbda976f..50ecf0b3322d4a8b03280504e5fc1e03e868f1c7 100644
--- a/src/gpu/gl/GrGpuGL_program.cpp
+++ b/src/gpu/gl/GrGpuGL_program.cpp
@@ -344,22 +344,29 @@ void GrGpuGL::setupGeometry(const DrawInfo& info, size_t* indexOffsetInBytes) {
if (!fCurrentProgram->hasVertexShader()) {
int posIdx = this->getDrawState().positionAttributeIndex();
- const GrVertexAttrib* vertexArray = this->getDrawState().getVertexAttribs() + posIdx;
- GrVertexAttribType vertexArrayType = vertexArray->fType;
- SkASSERT(!GrGLAttribTypeToLayout(vertexArrayType).fNormalized);
- SkASSERT(GrGLAttribTypeToLayout(vertexArrayType).fCount == 2);
- attribState->setFixedFunctionVertexArray(this,
- vbuf,
- 2,
- GrGLAttribTypeToLayout(vertexArrayType).fType,
- stride,
- reinterpret_cast<GrGLvoid*>(
- vertexOffsetInBytes + vertexArray->fOffset));
- attribState->disableUnusedArrays(this, 0, true);
+ const GrVertexAttrib* vertexAttrib = this->getDrawState().getVertexAttribs() + posIdx;
+ GrVertexAttribType attribType = vertexAttrib->fType;
+ SkASSERT(!GrGLAttribTypeToLayout(attribType).fNormalized);
+ SkASSERT(GrGLAttribTypeToLayout(attribType).fCount == 2);
+
+ // Attrib at location 0 is defined to be bound to vertex in fixed-function pipe. Asserts
+ // above should make sure position attribute goes to location 0 when below code is executed.
+
+ attribState->set(this,
+ 0,
+ vbuf,
+ GrGLAttribTypeToLayout(attribType).fCount,
+ GrGLAttribTypeToLayout(attribType).fType,
+ GrGLAttribTypeToLayout(attribType).fNormalized,
+ stride,
+ reinterpret_cast<GrGLvoid*>(
+ vertexOffsetInBytes + vertexAttrib->fOffset));
+ attribState->disableUnusedArrays(this, 1);
} else {
+ int vertexAttribCount = this->getDrawState().getVertexAttribCount();
uint32_t usedAttribArraysMask = 0;
const GrVertexAttrib* vertexAttrib = this->getDrawState().getVertexAttribs();
- int vertexAttribCount = this->getDrawState().getVertexAttribCount();
+
for (int vertexAttribIndex = 0; vertexAttribIndex < vertexAttribCount;
++vertexAttribIndex, ++vertexAttrib) {
@@ -373,9 +380,8 @@ void GrGpuGL::setupGeometry(const DrawInfo& info, size_t* indexOffsetInBytes) {
GrGLAttribTypeToLayout(attribType).fNormalized,
stride,
reinterpret_cast<GrGLvoid*>(
- vertexOffsetInBytes + vertexAttrib->fOffset));
+ vertexOffsetInBytes + vertexAttrib->fOffset));
}
-
- attribState->disableUnusedArrays(this, usedAttribArraysMask, false);
+ attribState->disableUnusedArrays(this, usedAttribArraysMask);
}
}
« no previous file with comments | « src/gpu/gl/GrGLVertexArray.cpp ('k') | src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698