gfx/angle/src/libGLESv2/renderer/IndexDataManager.h

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:1af5d57641c6
1 //
2 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6
7 // IndexDataManager.h: Defines the IndexDataManager, a class that
8 // runs the Buffer translation process for index buffers.
9
10 #ifndef LIBGLESV2_INDEXDATAMANAGER_H_
11 #define LIBGLESV2_INDEXDATAMANAGER_H_
12
13 #include "common/angleutils.h"
14
15 namespace
16 {
17 enum { INITIAL_INDEX_BUFFER_SIZE = 4096 * sizeof(GLuint) };
18 }
19
20 namespace gl
21 {
22 class Buffer;
23 }
24
25 namespace rx
26 {
27 class StaticIndexBufferInterface;
28 class StreamingIndexBufferInterface;
29 class IndexBuffer;
30 class BufferStorage;
31 class Renderer;
32
33 struct TranslatedIndexData
34 {
35 unsigned int minIndex;
36 unsigned int maxIndex;
37 unsigned int startIndex;
38 unsigned int startOffset; // In bytes
39
40 IndexBuffer *indexBuffer;
41 BufferStorage *storage;
42 unsigned int serial;
43 };
44
45 class IndexDataManager
46 {
47 public:
48 explicit IndexDataManager(Renderer *renderer);
49 virtual ~IndexDataManager();
50
51 GLenum prepareIndexData(GLenum type, GLsizei count, gl::Buffer *arrayElementBuffer, const GLvoid *indices, TranslatedIndexData *translated);
52 StaticIndexBufferInterface *getCountingIndices(GLsizei count);
53
54 private:
55 DISALLOW_COPY_AND_ASSIGN(IndexDataManager);
56
57 Renderer *const mRenderer;
58
59 StreamingIndexBufferInterface *mStreamingBufferShort;
60 StreamingIndexBufferInterface *mStreamingBufferInt;
61 StaticIndexBufferInterface *mCountingBuffer;
62 };
63
64 }
65
66 #endif // LIBGLESV2_INDEXDATAMANAGER_H_

mercurial