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 // TransformFeedback11.h: Implements the abstract rx::TransformFeedbackImpl class. 8 9 #ifndef LIBANGLE_RENDERER_D3D_D3D11_TRANSFORMFEEDBACK11_H_ 10 #define LIBANGLE_RENDERER_D3D_D3D11_TRANSFORMFEEDBACK11_H_ 11 12 #include "common/platform.h" 13 14 #include "libANGLE/Error.h" 15 #include "libANGLE/angletypes.h" 16 #include "libANGLE/renderer/TransformFeedbackImpl.h" 17 #include "libANGLE/renderer/renderer_utils.h" 18 19 namespace rx 20 { 21 22 class Renderer11; 23 24 class TransformFeedback11 : public TransformFeedbackImpl 25 { 26 public: 27 TransformFeedback11(const gl::TransformFeedbackState &state, Renderer11 *renderer); 28 ~TransformFeedback11() override; 29 30 void begin(GLenum primitiveMode) override; 31 void end() override; 32 void pause() override; 33 void resume() override; 34 35 void bindGenericBuffer(const gl::BindingPointer<gl::Buffer> &binding) override; 36 void bindIndexedBuffer(size_t index, 37 const gl::OffsetBindingPointer<gl::Buffer> &binding) override; 38 39 void onApply(); 40 41 bool isDirty() const; 42 43 UINT getNumSOBuffers() const; 44 gl::ErrorOrResult<const std::vector<ID3D11Buffer *> *> getSOBuffers(const gl::Context *context); 45 const std::vector<UINT> &getSOBufferOffsets() const; 46 47 Serial getSerial() const; 48 49 private: 50 Renderer11 *mRenderer; 51 52 bool mIsDirty; 53 std::vector<ID3D11Buffer *> mBuffers; 54 std::vector<UINT> mBufferOffsets; 55 56 Serial mSerial; 57 }; 58 } // namespace rx 59 60 #endif // LIBANGLE_RENDERER_D3D_D3D11_TRANSFORMFEEDBACK11_H_ 61