Berserk
RHICommandList.hpp
Go to the documentation of this file.
1 /**********************************************************************************/
2 /* This file is part of Berserk Engine project */
3 /* https://github.com/EgorOrachyov/Berserk */
4 /**********************************************************************************/
5 /* MIT License */
6 /* */
7 /* Copyright (c) 2018 - 2021 Egor Orachyov */
8 /* */
9 /* Permission is hereby granted, free of charge, to any person obtaining a copy */
10 /* of this software and associated documentation files (the "Software"), to deal */
11 /* in the Software without restriction, including without limitation the rights */
12 /* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell */
13 /* copies of the Software, and to permit persons to whom the Software is */
14 /* furnished to do so, subject to the following conditions: */
15 /* */
16 /* The above copyright notice and this permission notice shall be included in all */
17 /* copies or substantial portions of the Software. */
18 /* */
19 /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR */
20 /* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, */
21 /* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE */
22 /* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER */
23 /* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, */
24 /* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE */
25 /* SOFTWARE. */
26 /**********************************************************************************/
27 
28 #ifndef BERSERK_RHICOMMANDLIST_HPP
29 #define BERSERK_RHICOMMANDLIST_HPP
30 
31 #include <core/Config.hpp>
32 #include <core/Data.hpp>
33 #include <core/Typedefs.hpp>
34 #include <rhi/RHIBuffer.hpp>
36 #include <rhi/RHIRenderPass.hpp>
37 #include <rhi/RHIResource.hpp>
38 #include <rhi/RHIResourceSet.hpp>
39 #include <rhi/RHITexture.hpp>
40 
42 
54 class RHICommandList : public RHIResource {
55 public:
56  BRK_API ~RHICommandList() override = default;
57 
59  BRK_API virtual void UpdateVertexBuffer(const Ref<RHIVertexBuffer> &buffer, uint32 byteOffset, uint32 byteSize, const Ref<Data> &data) = 0;
60 
62  BRK_API virtual void UpdateIndexBuffer(const Ref<RHIIndexBuffer> &buffer, uint32 byteOffset, uint32 byteSize, const Ref<Data> &data) = 0;
63 
65  BRK_API virtual void UpdateUniformBuffer(const Ref<RHIUniformBuffer> &buffer, uint32 byteOffset, uint32 byteSize, const Ref<Data> &data) = 0;
66 
68  BRK_API virtual void UpdateTexture2D(const Ref<RHITexture> &texture, uint32 mipLevel, const Rect2u &region, const Ref<Data> &data) = 0;
69 
71  BRK_API virtual void UpdateTexture2DArray(const Ref<RHITexture> &texture, uint32 arrayIndex, uint32 mipLevel, const Rect2u &region, const Ref<Data> &data) = 0;
72 
74  BRK_API virtual void UpdateTextureCube(const Ref<RHITexture> &texture, RHITextureCubemapFace face, uint32 mipLevel, const Rect2u &region, const Ref<Data> &data) = 0;
75 
77  BRK_API virtual void GenerateMipMaps(const Ref<RHITexture> &texture) = 0;
78 
80  BRK_API virtual void BeginRenderPass(const Ref<RHIRenderPass> &renderPass, const RHIRenderPassBeginInfo &beginInfo) = 0;
81 
83  BRK_API virtual void BindGraphicsPipeline(const Ref<RHIGraphicsPipeline> &pipeline) = 0;
84 
86  BRK_API virtual void BindVertexBuffers(const std::vector<Ref<RHIVertexBuffer>> &buffers) = 0;
87 
89  BRK_API virtual void BindIndexBuffer(const Ref<RHIIndexBuffer> &buffer, RHIIndexType indexType) = 0;
90 
92  BRK_API virtual void BindResourceSet(const Ref<RHIResourceSet> &resourceSet, uint32 set) = 0;
93 
95  BRK_API virtual void Draw(uint32 verticesCount, uint32 baseVertex, uint32 instancesCount) = 0;
96 
98  BRK_API virtual void DrawIndexed(uint32 indexCount, uint32 baseVertex, uint32 instanceCount) = 0;
99 
101  BRK_API virtual void EndRenderPass() = 0;
102 
104  BRK_API virtual void SwapBuffers(const Ref<Window> &window) = 0;
105 
107  BRK_API virtual void Submit() = 0;
108 };
109 
115 
116 #endif//BERSERK_RHICOMMANDLIST_HPP
#define BRK_NS_END
Definition: Config.hpp:48
#define BRK_API
Definition: Config.hpp:32
std::uint32_t uint32
Definition: Typedefs.hpp:44
Command list for commands capturing and submission.
Definition: RHICommandList.hpp:54
virtual BRK_API void Draw(uint32 verticesCount, uint32 baseVertex, uint32 instancesCount)=0
virtual BRK_API void SwapBuffers(const Ref< Window > &window)=0
virtual BRK_API void UpdateTexture2DArray(const Ref< RHITexture > &texture, uint32 arrayIndex, uint32 mipLevel, const Rect2u &region, const Ref< Data > &data)=0
virtual BRK_API void DrawIndexed(uint32 indexCount, uint32 baseVertex, uint32 instanceCount)=0
virtual BRK_API void BindGraphicsPipeline(const Ref< RHIGraphicsPipeline > &pipeline)=0
BRK_API ~RHICommandList() override=default
virtual BRK_API void UpdateVertexBuffer(const Ref< RHIVertexBuffer > &buffer, uint32 byteOffset, uint32 byteSize, const Ref< Data > &data)=0
virtual BRK_API void UpdateTexture2D(const Ref< RHITexture > &texture, uint32 mipLevel, const Rect2u &region, const Ref< Data > &data)=0
virtual BRK_API void GenerateMipMaps(const Ref< RHITexture > &texture)=0
virtual BRK_API void UpdateIndexBuffer(const Ref< RHIIndexBuffer > &buffer, uint32 byteOffset, uint32 byteSize, const Ref< Data > &data)=0
virtual BRK_API void BindVertexBuffers(const std::vector< Ref< RHIVertexBuffer >> &buffers)=0
virtual BRK_API void Submit()=0
virtual BRK_API void UpdateTextureCube(const Ref< RHITexture > &texture, RHITextureCubemapFace face, uint32 mipLevel, const Rect2u &region, const Ref< Data > &data)=0
virtual BRK_API void BindIndexBuffer(const Ref< RHIIndexBuffer > &buffer, RHIIndexType indexType)=0
virtual BRK_API void BindResourceSet(const Ref< RHIResourceSet > &resourceSet, uint32 set)=0
virtual BRK_API void UpdateUniformBuffer(const Ref< RHIUniformBuffer > &buffer, uint32 byteOffset, uint32 byteSize, const Ref< Data > &data)=0
virtual BRK_API void BeginRenderPass(const Ref< RHIRenderPass > &renderPass, const RHIRenderPassBeginInfo &beginInfo)=0
virtual BRK_API void EndRenderPass()=0
RHI pass info to begin (initial targets clear values)
Definition: RHIRenderPass.hpp:100
Base class for RHI resource.
Definition: RHIResource.hpp:55
Generic vector class for an N dimensional space base on type T.
Definition: TVecN.hpp:55
RHITextureCubemapFace
Definition: RHIDefs.hpp:177
RHIIndexType
Definition: RHIDefs.hpp:57
Definition: GLDevice.cpp:46