summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libANGLE/renderer/d3d/IndexDataManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/renderer/d3d/IndexDataManager.h')
-rw-r--r--src/3rdparty/angle/src/libANGLE/renderer/d3d/IndexDataManager.h42
1 files changed, 27 insertions, 15 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/IndexDataManager.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/IndexDataManager.h
index 44eb68c071..77f05df92d 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/IndexDataManager.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/IndexDataManager.h
@@ -19,7 +19,10 @@
namespace
{
- enum { INITIAL_INDEX_BUFFER_SIZE = 4096 * sizeof(GLuint) };
+enum
+{
+ INITIAL_INDEX_BUFFER_SIZE = 4096 * sizeof(GLuint)
+};
}
namespace gl
@@ -39,7 +42,7 @@ class RendererD3D;
struct SourceIndexData
{
BufferD3D *srcBuffer;
- const GLvoid *srcIndices;
+ const void *srcIndices;
unsigned int srcCount;
GLenum srcIndexType;
bool srcIndicesChanged;
@@ -47,9 +50,8 @@ struct SourceIndexData
struct TranslatedIndexData
{
- gl::IndexRange indexRange;
unsigned int startIndex;
- unsigned int startOffset; // In bytes
+ unsigned int startOffset; // In bytes
IndexBuffer *indexBuffer;
BufferD3D *storage;
@@ -62,18 +64,21 @@ struct TranslatedIndexData
class IndexDataManager : angle::NonCopyable
{
public:
- explicit IndexDataManager(BufferFactoryD3D *factory, RendererClass rendererClass);
+ explicit IndexDataManager(BufferFactoryD3D *factory);
virtual ~IndexDataManager();
- gl::Error prepareIndexData(GLenum srcType,
+ void deinitialize();
+
+ gl::Error prepareIndexData(const gl::Context *context,
+ GLenum srcType,
+ GLenum dstType,
GLsizei count,
gl::Buffer *glBuffer,
- const GLvoid *indices,
- TranslatedIndexData *translated,
- bool primitiveRestartFixedIndexEnabled);
+ const void *indices,
+ TranslatedIndexData *translated);
private:
- gl::Error streamIndexData(const GLvoid *data,
+ gl::Error streamIndexData(const void *data,
unsigned int count,
GLenum srcType,
GLenum dstType,
@@ -82,12 +87,19 @@ class IndexDataManager : angle::NonCopyable
gl::Error getStreamingIndexBuffer(GLenum destinationIndexType,
IndexBufferInterface **outBuffer);
+ using StreamingBuffer = std::unique_ptr<StreamingIndexBufferInterface>;
+
BufferFactoryD3D *const mFactory;
- RendererClass mRendererClass;
- StreamingIndexBufferInterface *mStreamingBufferShort;
- StreamingIndexBufferInterface *mStreamingBufferInt;
+ std::unique_ptr<StreamingIndexBufferInterface> mStreamingBufferShort;
+ std::unique_ptr<StreamingIndexBufferInterface> mStreamingBufferInt;
};
-}
+GLenum GetIndexTranslationDestType(GLenum srcType,
+ const gl::HasIndexRange &lazyIndexRange,
+ bool usePrimitiveRestartWorkaround);
+
+bool IsOffsetAligned(GLenum elementType, unsigned int offset);
+
+} // namespace rx
-#endif // LIBANGLE_INDEXDATAMANAGER_H_
+#endif // LIBANGLE_INDEXDATAMANAGER_H_