FCT
载入中...
搜索中...
未找到
CommandBuffer.h
浏览该文件的文档.
1//
2// Created by Administrator on 2025/3/31.
3//
4#ifndef COMMANDBUFFER_H
5#define COMMANDBUFFER_H
6
8#include "../Base/Flags.h"
10#include "./PipelineStage.h"
11#include "./ImageAspect.h"
12#include "./ImageLayout.h"
13#include "./AccessFlags.h"
14
15namespace FCT
16{
17 class Image;
18 namespace RHI
19 {
21 class Semaphore;
22 class Fence;
29 {
31 PipelineStages stages;
32 };
33 class CommandBuffer : public RefCount
34 {
35 public:
42
47 virtual void reset() = 0;
48 virtual void create() = 0;
49 virtual void begin() = 0;
50 virtual void viewport(Vec2 lt,Vec2 rb) = 0;
51 virtual void scissor(Vec2 lt,Vec2 rb) = 0;
52 virtual void draw(size_t vertexBegin,size_t instanceBegin,size_t vertexSize,size_t instanceSize) = 0;
53 virtual void drawIndex(size_t indexBegin, size_t instanceBegin, size_t indexCount, size_t instanceCount, size_t firstVertex = 0) = 0;
54 virtual void bindPipieline(RasterizationPipeline* pipeline) = 0;
55 virtual void end() = 0;
56 virtual void submit() = 0;
57 virtual void nextPass() = 0;
58 virtual void barrier(FCT::Image* image, ImageLayout oldLayout, ImageLayout newLayout,
59 PipelineStages srcStage, PipelineStages dstStage,
60 AccessFlags srcAccess, AccessFlags dstAccess,
61 ImageAspects aspectMask = ImageAspect::color) = 0;
62 Fence* fence() const { return m_fence; }
63 void fence(Fence* fence);
64 std::vector<WaitSemaphoreDescription>& waitSemaphores() { return m_waitSemaphores; }
65 std::vector<Semaphore*>& signalSemaphores() { return m_signalSemaphores; }
67 void addWaitSemaphore(Semaphore* semaphore,PipelineStages stage = PipelineStage::colorAttachmentOutput);
68 void addSignalSemaphore(Semaphore* semaphore);
69 protected:
72 std::vector<WaitSemaphoreDescription> m_waitSemaphores;
73 std::vector<Semaphore*> m_signalSemaphores;
74 //std::vector<Fence*> m_submitFence;
75 };
76
77 }
78}
79#endif //COMMANDBUFFER_H
virtual void draw(size_t vertexBegin, size_t instanceBegin, size_t vertexSize, size_t instanceSize)=0
virtual void begin()=0
virtual void reset()=0
virtual void drawIndex(size_t indexBegin, size_t instanceBegin, size_t indexCount, size_t instanceCount, size_t firstVertex=0)=0
virtual void nextPass()=0
std::vector< WaitSemaphoreDescription > & waitSemaphores()
virtual void scissor(Vec2 lt, Vec2 rb)=0
std::vector< Semaphore * > & signalSemaphores()
virtual void bindPipieline(RasterizationPipeline *pipeline)=0
std::vector< Semaphore * > m_signalSemaphores
virtual void end()=0
void addSignalSemaphore(Semaphore *semaphore)
virtual void viewport(Vec2 lt, Vec2 rb)=0
std::vector< WaitSemaphoreDescription > m_waitSemaphores
virtual void submit()=0
void addWaitSemaphore(Semaphore *semaphore, PipelineStages stage=PipelineStage::colorAttachmentOutput)
virtual void barrier(FCT::Image *image, ImageLayout oldLayout, ImageLayout newLayout, PipelineStages srcStage, PipelineStages dstStage, AccessFlags srcAccess, AccessFlags dstAccess, ImageAspects aspectMask=ImageAspect::color)=0
void level(CommandBufferLevel level)
virtual void create()=0