Use vertex buffer objects instead of client side arrays in fixed-function codepaths
Pass vertices to the fixed-function shaders in vertex buffer object
stored at attribute 0. This is specified in OpenGL Compatibility
Profile Section 10.8.2 (Transferring Vertices With Vertex Attribute
Zero).
This makes future integration to Chromium command buffer better, since
the command buffer already has code for vertex buffer objects but not
vertex arrays.
Delete unused function pointers related to fixed-function codepaths.
R=bsalomon@google.com
Author: kkinnunen@nvidia.com
Review URL: https://codereview.chromium.org/130423013
git-svn-id: http://skia.googlecode.com/svn/trunk@13557 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/gl/GrGLVertexArray.cpp b/src/gpu/gl/GrGLVertexArray.cpp
index 605ec33..abd337a 100644
--- a/src/gpu/gl/GrGLVertexArray.cpp
+++ b/src/gpu/gl/GrGLVertexArray.cpp
@@ -49,39 +49,7 @@
}
}
-void GrGLAttribArrayState::setFixedFunctionVertexArray(const GrGpuGL* gpu,
- GrGLVertexBuffer* buffer,
- GrGLint size,
- GrGLenum type,
- GrGLsizei stride,
- GrGLvoid* offset) {
- SkASSERT(gpu->glCaps().fixedFunctionSupport());
- AttribArrayState* array = &fFixedFunctionVertexArray;
- if (!array->fEnableIsValid || !array->fEnabled) {
- GR_GL_CALL(gpu->glInterface(), EnableClientState(GR_GL_VERTEX_ARRAY));
- array->fEnableIsValid = true;
- array->fEnabled = true;
- }
- if (!array->fAttribPointerIsValid ||
- array->fVertexBufferID != buffer->bufferID() ||
- array->fSize != size ||
- array->fStride != stride ||
- array->fOffset != offset) {
-
- buffer->bind();
- GR_GL_CALL(gpu->glInterface(), VertexPointer(size,
- type,
- stride,
- offset));
- array->fAttribPointerIsValid = true;
- array->fVertexBufferID = buffer->bufferID();
- array->fSize = size;
- array->fStride = stride;
- array->fOffset = offset;
- }
-}
-
-void GrGLAttribArrayState::disableUnusedArrays(const GrGpuGL* gpu, uint64_t usedMask, bool usingFFVertexArray) {
+void GrGLAttribArrayState::disableUnusedArrays(const GrGpuGL* gpu, uint64_t usedMask) {
int count = fAttribArrayStates.count();
for (int i = 0; i < count; ++i) {
if (!(usedMask & 0x1)) {
@@ -96,35 +64,6 @@
// if the count is greater than 64 then this will become 0 and we will disable arrays 64+.
usedMask >>= 1;
}
-
- // Deal with fixed-function vertex arrays.
- if (gpu->glCaps().fixedFunctionSupport()) {
- if (!usingFFVertexArray) {
- if (!fFixedFunctionVertexArray.fEnableIsValid || fFixedFunctionVertexArray.fEnabled) {
- GR_GL_CALL(gpu->glInterface(), DisableClientState(GR_GL_VERTEX_ARRAY));
- fFixedFunctionVertexArray.fEnableIsValid = true;
- fFixedFunctionVertexArray.fEnabled = false;
- }
- } else {
- SkASSERT(fFixedFunctionVertexArray.fEnableIsValid && fFixedFunctionVertexArray.fEnabled);
- }
- // When we use fixed function vertex processing we always use the vertex array and none of
- // the other arrays.
- if (!fUnusedFixedFunctionArraysDisabled) {
- GR_GL_CALL(gpu->glInterface(), DisableClientState(GR_GL_NORMAL_ARRAY));
- GR_GL_CALL(gpu->glInterface(), DisableClientState(GR_GL_COLOR_ARRAY));
- GR_GL_CALL(gpu->glInterface(), DisableClientState(GR_GL_SECONDARY_COLOR_ARRAY));
- GR_GL_CALL(gpu->glInterface(), DisableClientState(GR_GL_INDEX_ARRAY));
- GR_GL_CALL(gpu->glInterface(), DisableClientState(GR_GL_EDGE_FLAG_ARRAY));
- for (int i = 0; i < gpu->glCaps().maxFixedFunctionTextureCoords(); ++i) {
- GR_GL_CALL(gpu->glInterface(), ClientActiveTexture(GR_GL_TEXTURE0 + i));
- GR_GL_CALL(gpu->glInterface(), DisableClientState(GR_GL_TEXTURE_COORD_ARRAY));
- }
- fUnusedFixedFunctionArraysDisabled = true;
- }
- } else {
- SkASSERT(!usingFFVertexArray);
- }
}
///////////////////////////////////////////////////////////////////////////////////////////////////