14 virtual bool Initialize(
const CreateInfo& createInfo)
override;
15 virtual void Clear(ClearMode mask,
float clear_color[4],
float clear_depth, uint32_t clear_stencil)
override;
16 virtual void AdjustPerspective(
float *perspective)
override;
17 virtual void RegisterWindow(
Window* window)
override;
19 virtual const char* GetVendorName()
const override;
20 virtual const char* GetAdapterName()
const override;
21 virtual const char* GetAPIName()
const override;
22 virtual const char* GetAPIVersion()
const override;
23 virtual const char* GetDefaultShaderExtension()
const override;
51 virtual void CopyDepthBufferFromReadToWrite(uint32_t srcWidth, uint32_t srcHeight, uint32_t dstWidth, uint32_t dstHeight)
override;
53 virtual bool ShouldUseImmediateMode()
const override;
54 virtual bool SupportsCommandBuffers()
const override;
55 virtual bool SupportsTesselation()
const override;
56 virtual bool SupportsGeometryShader()
const override;
57 virtual bool SupportsComputeShader()
const override;
58 virtual bool SupportsMultiDrawIndirect()
const override;
60 virtual void WaitUntilIdle()
override;
64 virtual void DrawImmediateIndexed(GeometryType geom_type,
bool largeBuffer, int32_t baseVertex, uint32_t indexOffsetPtr, uint32_t indexCount)
override;
65 virtual void DrawImmediateVertices(GeometryType geom_type, uint32_t base, uint32_t count)
override;
66 virtual void SetImmediateBlending(
67 BlendOperation colorOp, BlendFactor colorSrc, BlendFactor colorDst,
68 BlendOperation alphaOp, BlendFactor alphaSrc, BlendFactor alphaDst
70 virtual void EnableDepthWrite(
bool state)
override;
71 virtual void BindDefaultFramebuffer()
override;
72 virtual void BindDefaultFramebufferWrite()
override;
73 virtual void BindDefaultFramebufferRead()
override;
74 virtual void SetColorMask(ColorMask mask)
override;
75 virtual void ResizeViewport(uint32_t w, uint32_t h)
override;
77 std::string vendorName;
78 std::string adapterName;
79 std::string apiVersion;
83 using PipelineHash = size_t;
84 std::unordered_map<PipelineHash, Grindstone::GraphicsAPI::GraphicsPipeline*> graphicsPipelineCache;