CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
NLCommandBuffer.hpp
Go to the documentation of this file.
1//
2// CeresEngine - A game development framework
3//
4// Created by Rogiel Sulzbach.
5// Copyright (c) 2018-2022 Rogiel Sulzbach. All rights reserved.
6//
7
8#pragma once
9
10#include "NLCommon.hpp"
11
14
16
17namespace CeresEngine {
18
19 class NLDevice;
20 class NLCommandQueue;
21
22 class NLGraphicsPipeline;
23
25 class NLCommandBuffer final : public GPUCommandBuffer, public NLDeviceObject<NLCommandBuffer, GPUCommandBuffer> {
26 friend class NLCommandQueue;
27
28 private:
31
32 public:
35
36 public:
39
41 void bindVertexBuffer(GPUBuffer& vertexBuffer, UInt32 offset = 0, UInt32 slot = 0) final;
42
45
47 void draw(UInt32 vertexCount, UInt32 instanceCount = 1, UInt32 firstVertex = 0, UInt32 firstInstance = 0) final;
48
51
53 void drawIndexed(UInt32 indexCount, UInt32 instanceCount = 1, UInt32 firstVertex = 0, Int32 vertexOffset = 0, UInt32 firstInstance = 0) final;
54
57
60
61 public: // Dynamic States
64
67
69 void setScissor(const Scissor& scissor) final;
70
73
74 public: // Mesh-shaders
77
80
83
84 public: // Buffer read, write & copy.
87
90
93
94 public: // Image read, write & copy.
98
101 const TExtent3<UInt32>& extent) final;
102
106
109 const TExtent3<UInt32>& extent) final;
110
112 void clear(GPUImage& image) final;
113
116
119
120 public: // Synchronization
122 void barrier(GPUImage& image, GPUImageLayout layout) final;
123
124 public:
126 void begin() final;
127
129 void end() final;
130
132 void wait() final;
133 };
134
135} // namespace CeresEngine
A retain-release type of smart pointer.
Definition SmartPtr.hpp:132
Definition GPUBuffer.hpp:124
Definition GPUCommandBuffer.hpp:77
GPUDevice & device
The owning device this object was created from.
Definition Common.hpp:55
Definition GPUImage.hpp:331
A RenderAPI object that holds a set of resources that can be bound into shader.
Definition GPUResourceSet.hpp:735
Null RenderAPI command buffer object.
Definition NLCommandBuffer.hpp:25
const GPUCommandBufferDescriptor mDescriptor
A structure that describes the command buffer and it's properties.
Definition NLCommandBuffer.hpp:30
void resolveImage(GPUImage &dstImage, const GPUImageLocation &dstLocation, GPUImage &srcImage, const GPUImageLocation &srcLocation, const TExtent3< UInt32 > &extent) final
void setScissors(const SmallVector< Scissor, 16 > &scissors) final
void bindVertexBuffer(GPUBuffer &vertexBuffer, UInt32 offset=0, UInt32 slot=0) final
NLCommandBuffer(NLDevicePtr device, const GPUCommandBufferDescriptor &descriptor)
void updateBuffer(GPUBuffer &dstBuffer, std::uint64_t dstOffset, const void *data, std::uint16_t dataSize) final
void copyBuffer(GPUBuffer &dstBuffer, std::uint64_t dstOffset, GPUBuffer &srcBuffer, std::uint64_t srcOffset, std::uint64_t size) final
void setScissor(const Scissor &scissor) final
void setViewports(const SmallVector< Viewport, 16 > &viewports) final
void bindIndexBuffer(GPUBuffer &indexBuffer, UInt32 offset=0, IndexType indexType=IndexType::UInt32) final
void draw(UInt32 vertexCount, UInt32 instanceCount=1, UInt32 firstVertex=0, UInt32 firstInstance=0) final
void setViewport(const Viewport &viewport) final
void barrier(GPUImage &image, GPUImageLayout layout) final
void generateMips(GPUImage &image) final
void drawMeshTasksIndirect(GPUBuffer &buffer, UInt64 offset, UInt32 drawCount, UInt32 stride) final
Issue an indirect mesh tasks draw into a command buffer.
void copyImageFromBuffer(GPUImage &dstImage, const GPUImageRegion &dstRegion, GPUBuffer &srcBuffer, std::uint64_t srcOffset, std::uint32_t rowStride=0, std::uint32_t layerStride=0) final
void drawIndexed(UInt32 indexCount, UInt32 instanceCount=1, UInt32 firstVertex=0, Int32 vertexOffset=0, UInt32 firstInstance=0) final
void copyBufferFromImage(GPUBuffer &dstBuffer, std::uint64_t dstOffset, GPUImage &srcImage, const GPUImageRegion &srcImageRegion, std::uint32_t rowStride=0, std::uint32_t layerStride=0) final
void drawMeshTasks(UInt32 groupCountX, UInt32 groupCountY, UInt32 groupCountZ) final
Draw mesh task work items.
void clear(GPUImage &image) final
void fillBuffer(GPUBuffer &dstBuffer, std::uint64_t dstOffset, std::uint32_t value, std::uint64_t fillSize=~0u) final
void bindResourceSet(GPUResourceSet &resourceSet, UInt32 firstSet=0, Int32 offset=-1) final
void copyImage(GPUImage &dstImage, const GPUImageLocation &dstLocation, GPUImage &srcImage, const GPUImageLocation &srcLocation, const TExtent3< UInt32 > &extent) final
Null RenderAPI command queue object.
Definition NLCommandQueue.hpp:23
Definition NLCommon.hpp:117
const Descriptor & descriptor
A structure that describes the object and it's properties.
Definition Common.hpp:69
Definition Application.hpp:19
std::uint64_t UInt64
Definition DataTypes.hpp:26
GPUImageLayout
Definition GPUImage.hpp:65
std::int32_t Int32
Definition DataTypes.hpp:21
sfl::small_vector< T, N, ScopedAllocatorAdaptor< StdAllocator< T, RawAllocator > > > SmallVector
SmallVector is a sequence container similar to Vector.
Definition SmallVector.hpp:31
std::uint32_t UInt32
Definition DataTypes.hpp:23
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Definition Span.hpp:668
Command buffer descriptor structure.
Definition GPUCommandBuffer.hpp:32
Structure specifying a draw indirect command.
Definition GPUCommandBuffer.hpp:59
Structure specifying a draw indirect command.
Definition GPUCommandBuffer.hpp:44
Image location structure: MIP-map level and offset.
Definition GPUImage.hpp:120
Image region structure: Subresource (MIP-map level and array layer range), offset,...
Definition GPUImage.hpp:156
Image subresource descriptor which specifies the array layer and MIP-map level range of a image resou...
Definition GPUImage.hpp:77
Definition IndexType.hpp:20
Definition GPUGraphicsPipeline.hpp:281
Definition GPUGraphicsPipeline.hpp:214