blob: 44f14cee589f1080dcc4710f5851889530064c23 [file] [log] [blame]
Brandon Jonesd38f9262014-06-18 16:26:45 -07001//
2// Copyright 2014 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// BufferImpl.h: Defines the abstract rx::BufferImpl class.
8
9#ifndef LIBGLESV2_RENDERER_BUFFERD3D_H_
10#define LIBGLESV2_RENDERER_BUFFERD3D_H_
11
12#include "libGLESv2/renderer/BufferImpl.h"
13#include "libGLESv2/angletypes.h"
Brandon Jonesd38f9262014-06-18 16:26:45 -070014
15namespace rx
16{
17
18class Renderer;
19class StaticIndexBufferInterface;
20class StaticVertexBufferInterface;
21
22class BufferD3D : public BufferImpl
23{
24 public:
25 BufferD3D();
26 virtual ~BufferD3D();
27
28 static BufferD3D *makeBufferD3D(BufferImpl *buffer);
29
30 unsigned int getSerial() const { return mSerial; }
31
32 virtual size_t getSize() const = 0;
Brandon Jonesd38f9262014-06-18 16:26:45 -070033 virtual bool supportsDirectBinding() const = 0;
34 virtual Renderer* getRenderer() = 0;
35
36 rx::StaticVertexBufferInterface *getStaticVertexBuffer() { return mStaticVertexBuffer; }
37 rx::StaticIndexBufferInterface *getStaticIndexBuffer() { return mStaticIndexBuffer; }
Brandon Jonesd38f9262014-06-18 16:26:45 -070038
39 void initializeStaticData();
40 void invalidateStaticData();
41 void promoteStaticUsage(int dataSize);
42
43 protected:
44 unsigned int mSerial;
45 static unsigned int mNextSerial;
46
47 void updateSerial();
48
49 rx::StaticVertexBufferInterface *mStaticVertexBuffer;
50 rx::StaticIndexBufferInterface *mStaticIndexBuffer;
Brandon Jonesd38f9262014-06-18 16:26:45 -070051 unsigned int mUnmodifiedDataUse;
52};
53
54}
55
56#endif // LIBGLESV2_RENDERER_BUFFERIMPLD3D_H_