1 // 2 // Copyright 2016 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 // ContextVk.h: 7 // Defines the class interface for ContextVk, implementing ContextImpl. 8 // 9 10 #ifndef LIBANGLE_RENDERER_VULKAN_CONTEXTVK_H_ 11 #define LIBANGLE_RENDERER_VULKAN_CONTEXTVK_H_ 12 13 #include "libANGLE/renderer/ContextImpl.h" 14 15 namespace rx 16 { 17 class RendererVk; 18 19 class ContextVk : public ContextImpl 20 { 21 public: 22 ContextVk(const gl::ContextState &state, RendererVk *renderer); 23 ~ContextVk() override; 24 25 gl::Error initialize() override; 26 27 // Flush and finish. 28 gl::Error flush() override; 29 gl::Error finish() override; 30 31 // Drawing methods. 32 gl::Error drawArrays(GLenum mode, GLint first, GLsizei count) override; 33 gl::Error drawArraysInstanced(GLenum mode, 34 GLint first, 35 GLsizei count, 36 GLsizei instanceCount) override; 37 38 gl::Error drawElements(GLenum mode, 39 GLsizei count, 40 GLenum type, 41 const GLvoid *indices, 42 const gl::IndexRange &indexRange) override; 43 gl::Error drawElementsInstanced(GLenum mode, 44 GLsizei count, 45 GLenum type, 46 const GLvoid *indices, 47 GLsizei instances, 48 const gl::IndexRange &indexRange) override; 49 gl::Error drawRangeElements(GLenum mode, 50 GLuint start, 51 GLuint end, 52 GLsizei count, 53 GLenum type, 54 const GLvoid *indices, 55 const gl::IndexRange &indexRange) override; 56 57 // Device loss 58 GLenum getResetStatus() override; 59 60 // Vendor and description strings. 61 std::string getVendorString() const override; 62 std::string getRendererDescription() const override; 63 64 // Debug markers. 65 void insertEventMarker(GLsizei length, const char *marker) override; 66 void pushGroupMarker(GLsizei length, const char *marker) override; 67 void popGroupMarker() override; 68 69 // State sync with dirty bits. 70 void syncState(const gl::State &state, const gl::State::DirtyBits &dirtyBits) override; 71 72 // Disjoint timer queries 73 GLint getGPUDisjoint() override; 74 GLint64 getTimestamp() override; 75 76 // Context switching 77 void onMakeCurrent(const gl::ContextState &data) override; 78 79 // Native capabilities, unmodified by gl::Context. 80 const gl::Caps &getNativeCaps() const override; 81 const gl::TextureCapsMap &getNativeTextureCaps() const override; 82 const gl::Extensions &getNativeExtensions() const override; 83 const gl::Limitations &getNativeLimitations() const override; 84 85 // Shader creation 86 CompilerImpl *createCompiler() override; 87 ShaderImpl *createShader(const gl::ShaderState &state) override; 88 ProgramImpl *createProgram(const gl::ProgramState &state) override; 89 90 // Framebuffer creation 91 FramebufferImpl *createFramebuffer(const gl::FramebufferState &state) override; 92 93 // Texture creation 94 TextureImpl *createTexture(const gl::TextureState &state) override; 95 96 // Renderbuffer creation 97 RenderbufferImpl *createRenderbuffer() override; 98 99 // Buffer creation 100 BufferImpl *createBuffer(const gl::BufferState &state) override; 101 102 // Vertex Array creation 103 VertexArrayImpl *createVertexArray(const gl::VertexArrayState &state) override; 104 105 // Query and Fence creation 106 QueryImpl *createQuery(GLenum type) override; 107 FenceNVImpl *createFenceNV() override; 108 FenceSyncImpl *createFenceSync() override; 109 110 // Transform Feedback creation 111 TransformFeedbackImpl *createTransformFeedback( 112 const gl::TransformFeedbackState &state) override; 113 114 // Sampler object creation 115 SamplerImpl *createSampler() override; 116 117 // Path object creation 118 std::vector<PathImpl *> createPaths(GLsizei) override; 119 120 private: 121 RendererVk *mRenderer; 122 }; 123 124 } // namespace rx 125 126 #endif // LIBANGLE_RENDERER_VULKAN_CONTEXTVK_H_ 127