diff options
Diffstat (limited to 'ANGLE/src/libGLESv2/geometry/IndexDataManager.h')
-rw-r--r-- | ANGLE/src/libGLESv2/geometry/IndexDataManager.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/ANGLE/src/libGLESv2/geometry/IndexDataManager.h b/ANGLE/src/libGLESv2/geometry/IndexDataManager.h new file mode 100644 index 0000000..00ebed2 --- /dev/null +++ b/ANGLE/src/libGLESv2/geometry/IndexDataManager.h @@ -0,0 +1,71 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// geometry/IndexDataManager.h: Defines the IndexDataManager, a class that +// runs the Buffer translation process for index buffers. + +#ifndef LIBGLESV2_GEOMETRY_INDEXDATAMANAGER_H_ +#define LIBGLESV2_GEOMETRY_INDEXDATAMANAGER_H_ + +#include <bitset> +#include <cstddef> + +#define GL_APICALL +#include <GLES2/gl2.h> + +#include "libGLESv2/Context.h" + +namespace gl +{ + +class Buffer; +class BufferBackEnd; +class TranslatedIndexBuffer; +struct FormatConverter; + +struct TranslatedIndexData +{ + GLuint minIndex; + GLuint maxIndex; + GLuint count; + GLuint indexSize; + + TranslatedIndexBuffer *buffer; + GLsizei offset; +}; + +class IndexDataManager +{ + public: + IndexDataManager(Context *context, BufferBackEnd *backend); + ~IndexDataManager(); + + GLenum preRenderValidate(GLenum mode, GLenum type, GLsizei count, Buffer *arrayElementBuffer, const void *indices, TranslatedIndexData *translated); + GLenum preRenderValidateUnindexed(GLenum mode, GLsizei count, TranslatedIndexData *indexInfo); + + private: + std::size_t IndexDataManager::typeSize(GLenum type) const; + std::size_t IndexDataManager::indexSize(GLenum type) const; + std::size_t spaceRequired(GLenum type, GLsizei count) const; + TranslatedIndexBuffer *prepareIndexBuffer(GLenum type, std::size_t requiredSpace); + + Context *mContext; + BufferBackEnd *mBackend; + + bool mIntIndicesSupported; + + TranslatedIndexBuffer *mStreamBufferShort; + TranslatedIndexBuffer *mStreamBufferInt; + + TranslatedIndexBuffer *mCountingBuffer; + GLsizei mCountingBufferSize; + + TranslatedIndexBuffer *mLineLoopBuffer; +}; + +} + +#endif // LIBGLESV2_GEOMETRY_INDEXDATAMANAGER_H_ |