Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / angle / src / libGLESv2 / renderer / d3d / d3d9 / VertexBuffer9.h
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 // VertexBuffer9.h: Defines the D3D9 VertexBuffer implementation.
8
9 #ifndef LIBGLESV2_RENDERER_VERTEXBUFFER9_H_
10 #define LIBGLESV2_RENDERER_VERTEXBUFFER9_H_
11
12 #include "libGLESv2/renderer/d3d/VertexBuffer.h"
13
14 namespace rx
15 {
16 class Renderer9;
17
18 class VertexBuffer9 : public VertexBuffer
19 {
20   public:
21     explicit VertexBuffer9(rx::Renderer9 *renderer);
22     virtual ~VertexBuffer9();
23
24     virtual bool initialize(unsigned int size, bool dynamicUsage);
25
26     static VertexBuffer9 *makeVertexBuffer9(VertexBuffer *vertexBuffer);
27
28     virtual bool storeVertexAttributes(const gl::VertexAttribute &attrib, const gl::VertexAttribCurrentValueData &currentValue,
29                                        GLint start, GLsizei count, GLsizei instances, unsigned int offset);
30
31     virtual bool getSpaceRequired(const gl::VertexAttribute &attrib, GLsizei count, GLsizei instances, unsigned int *outSpaceRequired) const;
32
33     virtual unsigned int getBufferSize() const;
34     virtual bool setBufferSize(unsigned int size);
35     virtual bool discard();
36
37     IDirect3DVertexBuffer9 *getBuffer() const;
38
39   private:
40     DISALLOW_COPY_AND_ASSIGN(VertexBuffer9);
41
42     rx::Renderer9 *mRenderer;
43
44     IDirect3DVertexBuffer9 *mVertexBuffer;
45     unsigned int mBufferSize;
46     bool mDynamicUsage;
47
48     bool spaceRequired(const gl::VertexAttribute &attrib, std::size_t count, GLsizei instances,
49                        unsigned int *outSpaceRequired) const;
50 };
51
52 }
53
54 #endif // LIBGLESV2_RENDERER_VERTEXBUFFER9_H_