summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libANGLE/renderer/d3d/BufferD3D.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/renderer/d3d/BufferD3D.h')
-rw-r--r--src/3rdparty/angle/src/libANGLE/renderer/d3d/BufferD3D.h54
1 files changed, 26 insertions, 28 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/BufferD3D.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/BufferD3D.h
index a27ca9857a..60153748e6 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/BufferD3D.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/BufferD3D.h
@@ -15,71 +15,69 @@
#include <stdint.h>
#include <vector>
+namespace gl
+{
+struct VertexAttribute;
+class VertexBinding;
+}
+
namespace rx
{
class BufferFactoryD3D;
class StaticIndexBufferInterface;
class StaticVertexBufferInterface;
-enum D3DBufferUsage
-{
- D3D_BUFFER_USAGE_STATIC,
- D3D_BUFFER_USAGE_DYNAMIC,
-};
-
-enum D3DBufferInvalidationType
+enum class D3DBufferUsage
{
- D3D_BUFFER_INVALIDATE_WHOLE_CACHE,
- D3D_BUFFER_INVALIDATE_DEFAULT_BUFFER_ONLY,
-};
-
-enum D3DStaticBufferCreationType
-{
- D3D_BUFFER_CREATE_IF_NECESSARY,
- D3D_BUFFER_DO_NOT_CREATE,
+ STATIC,
+ DYNAMIC,
};
class BufferD3D : public BufferImpl
{
public:
- BufferD3D(BufferFactoryD3D *factory);
- virtual ~BufferD3D();
+ BufferD3D(const gl::BufferState &state, BufferFactoryD3D *factory);
+ ~BufferD3D() override;
unsigned int getSerial() const { return mSerial; }
virtual size_t getSize() const = 0;
virtual bool supportsDirectBinding() const = 0;
- virtual void markTransformFeedbackUsage() = 0;
- virtual gl::Error getData(const uint8_t **outData) = 0;
+ virtual gl::Error markTransformFeedbackUsage(const gl::Context *context) = 0;
+ virtual gl::Error getData(const gl::Context *context, const uint8_t **outData) = 0;
+ // Warning: you should ensure binding really matches attrib.bindingIndex before using this
+ // function.
StaticVertexBufferInterface *getStaticVertexBuffer(const gl::VertexAttribute &attribute,
- D3DStaticBufferCreationType creationType);
+ const gl::VertexBinding &binding);
StaticIndexBufferInterface *getStaticIndexBuffer();
- void initializeStaticData();
- void invalidateStaticData(D3DBufferInvalidationType invalidationType);
- void reinitOutOfDateStaticData();
+ virtual void initializeStaticData(const gl::Context *context);
+ virtual void invalidateStaticData(const gl::Context *context);
- void promoteStaticUsage(int dataSize);
+ void promoteStaticUsage(const gl::Context *context, int dataSize);
- gl::Error getIndexRange(GLenum type,
+ gl::Error getIndexRange(const gl::Context *context,
+ GLenum type,
size_t offset,
size_t count,
bool primitiveRestartEnabled,
gl::IndexRange *outRange) override;
+ BufferFactoryD3D *getFactory() const { return mFactory; }
+ D3DBufferUsage getUsage() const { return mUsage; }
+
protected:
void updateSerial();
- void updateD3DBufferUsage(GLenum usage);
+ void updateD3DBufferUsage(const gl::Context *context, gl::BufferUsage usage);
void emptyStaticBufferCache();
BufferFactoryD3D *mFactory;
unsigned int mSerial;
static unsigned int mNextSerial;
- StaticVertexBufferInterface *mStaticVertexBuffer;
+ std::vector<std::unique_ptr<StaticVertexBufferInterface>> mStaticVertexBuffers;
StaticIndexBufferInterface *mStaticIndexBuffer;
- std::vector<StaticVertexBufferInterface *> *mStaticBufferCache;
unsigned int mStaticBufferCacheTotalSize;
unsigned int mStaticVertexBufferOutOfDate;
unsigned int mUnmodifiedDataUse;