VertexArray9.h (2000B)
1 // 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 // VertexArray9.h: Defines the rx::VertexArray9 class which implements rx::VertexArrayImpl. 8 9 #ifndef LIBANGLE_RENDERER_D3D_D3D9_VERTEXARRAY9_H_ 10 #define LIBANGLE_RENDERER_D3D_D3D9_VERTEXARRAY9_H_ 11 12 #include "libANGLE/Context.h" 13 #include "libANGLE/renderer/VertexArrayImpl.h" 14 #include "libANGLE/renderer/d3d/d3d9/Context9.h" 15 #include "libANGLE/renderer/d3d/d3d9/Renderer9.h" 16 17 namespace rx 18 { 19 class Renderer9; 20 21 class VertexArray9 : public VertexArrayImpl 22 { 23 public: 24 VertexArray9(const gl::VertexArrayState &data) : VertexArrayImpl(data) {} 25 26 angle::Result syncState(const gl::Context *context, 27 const gl::VertexArray::DirtyBits &dirtyBits, 28 gl::VertexArray::DirtyAttribBitsArray *attribBits, 29 gl::VertexArray::DirtyBindingBitsArray *bindingBits) override; 30 31 ~VertexArray9() override {} 32 33 Serial getCurrentStateSerial() const { return mCurrentStateSerial; } 34 35 private: 36 Serial mCurrentStateSerial; 37 }; 38 39 inline angle::Result VertexArray9::syncState(const gl::Context *context, 40 const gl::VertexArray::DirtyBits &dirtyBits, 41 gl::VertexArray::DirtyAttribBitsArray *attribBits, 42 gl::VertexArray::DirtyBindingBitsArray *bindingBits) 43 { 44 45 ASSERT(dirtyBits.any()); 46 Renderer9 *renderer = GetImplAs<Context9>(context)->getRenderer(); 47 mCurrentStateSerial = renderer->generateSerial(); 48 49 // Clear the dirty bits in the back-end here. 50 memset(attribBits, 0, sizeof(gl::VertexArray::DirtyAttribBitsArray)); 51 memset(bindingBits, 0, sizeof(gl::VertexArray::DirtyBindingBitsArray)); 52 53 return angle::Result::Continue; 54 } 55 } // namespace rx 56 57 #endif // LIBANGLE_RENDERER_D3D_D3D9_VERTEXARRAY9_H_