37 virtual bool Initialize(
const CreateInfo& createInfo) = 0;
38 virtual void RegisterWindow(
Window* window) = 0;
43 virtual const char* GetVendorName()
const = 0;
44 virtual const char* GetAdapterName()
const = 0;
45 virtual const char* GetAPIName()
const = 0;
46 virtual const char* GetAPIVersion()
const = 0;
47 virtual const char* GetDefaultShaderExtension()
const = 0;
49 virtual void Clear(ClearMode mask,
float clearColor[4] =
nullptr,
float clearDepth = 0, uint32_t clearStencil = 0) = 0;
51 virtual void AdjustPerspective(
float *perspective) = 0;
53 virtual void DeleteImage(Image* ptr) = 0;
54 virtual void DeleteSampler(Sampler* ptr) = 0;
55 virtual void DeleteFramebuffer(Framebuffer* ptr) = 0;
56 virtual void DeleteBuffer(
Buffer* ptr) = 0;
57 virtual void DeleteGraphicsPipeline(GraphicsPipeline* ptr) = 0;
58 virtual void DeleteComputePipeline(ComputePipeline* ptr) = 0;
59 virtual void DeleteRenderPass(RenderPass* ptr) = 0;
60 virtual void DeleteDescriptorSet(DescriptorSet* ptr) = 0;
61 virtual void DeleteDescriptorSetLayout(DescriptorSetLayout* ptr) = 0;
62 virtual void DeleteCommandBuffer(CommandBuffer* ptr) = 0;
63 virtual void DeleteVertexArrayObject(VertexArrayObject* ptr) = 0;
65 virtual Framebuffer* CreateFramebuffer(
const Framebuffer::CreateInfo& ci) = 0;
66 virtual RenderPass* CreateRenderPass(
const RenderPass::CreateInfo& ci) = 0;
67 virtual GraphicsPipeline* CreateGraphicsPipeline(
const GraphicsPipeline::CreateInfo& ci) = 0;
68 virtual ComputePipeline* CreateComputePipeline(
const ComputePipeline::CreateInfo& ci) = 0;
69 virtual CommandBuffer* CreateCommandBuffer(
const CommandBuffer::CreateInfo& ci) = 0;
70 virtual VertexArrayObject* CreateVertexArrayObject(
const VertexArrayObject::CreateInfo& ci) = 0;
71 virtual Buffer* CreateBuffer(
const Buffer::CreateInfo& ci) = 0;
72 virtual Sampler* CreateSampler(
const Sampler::CreateInfo& createInfo) = 0;
73 virtual Image* CreateImage(
const Image::CreateInfo& createInfo) = 0;
74 virtual DescriptorSet* CreateDescriptorSet(
const DescriptorSet::CreateInfo& ci) = 0;
75 virtual DescriptorSetLayout* CreateDescriptorSetLayout(
const DescriptorSetLayout::CreateInfo& ci) = 0;
77 virtual GraphicsPipeline* GetOrCreateGraphicsPipelineFromCache(
const GraphicsPipeline::PipelineData& pipelineData,
const VertexInputLayout* vertexInputLayout) = 0;
79 virtual void CopyDepthBufferFromReadToWrite(uint32_t srcWidth, uint32_t srcHeight, uint32_t dstWidth, uint32_t dstHeight) = 0;
81 virtual bool ShouldUseImmediateMode()
const = 0;
82 virtual bool SupportsCommandBuffers()
const = 0;
83 virtual bool SupportsTesselation()
const = 0;
84 virtual bool SupportsGeometryShader()
const = 0;
85 virtual bool SupportsComputeShader()
const = 0;
86 virtual bool SupportsMultiDrawIndirect()
const = 0;
88 virtual void BindDefaultFramebuffer() = 0;
89 virtual void BindDefaultFramebufferWrite() = 0;
90 virtual void BindDefaultFramebufferRead() = 0;
92 virtual void WaitUntilIdle() = 0;
94 virtual void BindGraphicsPipeline(GraphicsPipeline* pipeline) = 0;
95 virtual void BindVertexArrayObject(VertexArrayObject*) = 0;
96 virtual void DrawImmediateIndexed(GeometryType geom_type,
bool largeBuffer, int32_t baseVertex, uint32_t indexOffsetPtr, uint32_t indexCount) = 0;
97 virtual void DrawImmediateVertices(GeometryType geom_type, uint32_t base, uint32_t count) = 0;
98 virtual void SetImmediateBlending(
99 BlendOperation colorOp, BlendFactor colorSrc, BlendFactor colorDst,
100 BlendOperation alphaOp, BlendFactor alphaSrc, BlendFactor alphaDst
102 virtual void EnableDepthWrite(
bool isDepthEnabled) = 0;
103 virtual void SetColorMask(ColorMask mask) = 0;
104 virtual void ResizeViewport(uint32_t w, uint32_t h) = 0;
106 const char* GetVendorNameFromID(uint32_t vendorID) {
109 return "Advanced Micro Devices (AMD)";
112 return "Imagination Technologies";
115 return "NVIDIA Corporation";
118 return "Arm Limited";
121 return "Qualcomm Technologies, Inc.";
126 return "Intel Corporation";