7 #ifndef PXR_IMAGING_HGI_HGI_H 8 #define PXR_IMAGING_HGI_HGI_H 12 #include "pxr/base/tf/type.h" 14 #include "pxr/imaging/hgi/api.h" 15 #include "pxr/imaging/hgi/blitCmds.h" 16 #include "pxr/imaging/hgi/buffer.h" 17 #include "pxr/imaging/hgi/computeCmds.h" 18 #include "pxr/imaging/hgi/computeCmdsDesc.h" 19 #include "pxr/imaging/hgi/graphicsCmds.h" 20 #include "pxr/imaging/hgi/graphicsCmdsDesc.h" 21 #include "pxr/imaging/hgi/graphicsPipeline.h" 22 #include "pxr/imaging/hgi/resourceBindings.h" 23 #include "pxr/imaging/hgi/sampler.h" 24 #include "pxr/imaging/hgi/shaderFunction.h" 25 #include "pxr/imaging/hgi/shaderProgram.h" 26 #include "pxr/imaging/hgi/texture.h" 27 #include "pxr/imaging/hgi/types.h" 28 #include "pxr/imaging/hgi/version.h" 33 PXR_NAMESPACE_OPEN_SCOPE
38 using HgiUniquePtr = std::unique_ptr<class Hgi>;
114 HgiSubmitWaitType wait = HgiSubmitWaitTypeNoWait);
340 uint64_t GetUniqueId();
346 virtual bool _SubmitCmds(
347 HgiCmds* cmds, HgiSubmitWaitType wait);
350 virtual HgiTextureHandle _CreateTexture(
HgiTextureDesc const & desc) = 0;
364 Hgi & operator=(
const Hgi&) =
delete;
367 std::atomic<uint64_t> _uniqueIdCounter;
376 virtual Hgi* New()
const = 0;
388 PXR_NAMESPACE_CLOSE_SCOPE
virtual HGI_API void DestroyBuffer(HgiBufferHandle *bufHandle)=0
Destroy a buffer in rendering backend.
virtual HGI_API void EndFrame()=0
Optionally called at the end of a rendering frame.
virtual HGI_API HgiComputePipelineHandle CreateComputePipeline(HgiComputePipelineDesc const &pipeDesc)=0
Create a new compute pipeline state object.
virtual HGI_API void DestroyShaderFunction(HgiShaderFunctionHandle *shaderFunctionHandle)=0
Destroy a shader function.
static HGI_API bool IsSupported(const TfToken &hgiToken=TfToken())
Constructs a temporary Hgi object and calls the object's IsBackendSupported() function.
virtual HGI_API HgiShaderFunctionHandle CreateShaderFunction(HgiShaderFunctionDesc const &desc)=0
Create a new shader function.
virtual HGI_API void DestroyComputePipeline(HgiComputePipelineHandle *pipeHandle)=0
Destroy a compute pipeline state object.
Describes the properties needed to create a GPU texture view from an existing GPU texture object.
virtual HGI_API void GarbageCollect()=0
Perform any necessary garbage collection, if applicable.
HGI_API HgiTextureViewHandle CreateTextureView(HgiTextureViewDesc const &desc)
Create a texture view in rendering backend.
The indirect command encoder is used to record the drawing primitives for a batch and capture the res...
virtual HGI_API HgiGraphicsCmdsUniquePtr CreateGraphicsCmds(HgiGraphicsCmdsDesc const &desc)=0
Returns a GraphicsCmds object (for temporary use) that is ready to record draw commands.
HGI_API void SubmitCmds(HgiCmds *cmds, HgiSubmitWaitType wait=HgiSubmitWaitTypeNoWait)
Submit one HgiCmds objects.
Describes the properties needed to create a GPU sampler.
Describes the properties needed to create a GPU texture.
Base class of all factory types.
static HGI_API HgiUniquePtr CreateNamedHgi(const TfToken &hgiToken)
Helper function to return a Hgi object of choice supported by current platform and build configuratio...
Token for efficient comparison, assignment, and hashing of known strings.
virtual HGI_API void DestroyResourceBindings(HgiResourceBindingsHandle *resHandle)=0
Destroy a resource binding object.
virtual HGI_API HgiGraphicsPipelineHandle CreateGraphicsPipeline(HgiGraphicsPipelineDesc const &pipeDesc)=0
Create a new graphics pipeline state object.
HGI_API HgiBufferHandle CreateBuffer(HgiBufferDesc const &desc)
Create a buffer in rendering backend.
Reports the capabilities of the Hgi device.
Describes the properties needed to create a GPU compute pipeline.
Describes the properties needed to create a GPU buffer.
Describes the properties to begin a HgiGraphicsCmds.
virtual HGI_API bool IsBackendSupported() const =0
Determine if Hgi instance can run on current hardware.
Hgi factory for plugin system.
virtual HGI_API void DestroyTextureView(HgiTextureViewHandle *viewHandle)=0
Destroy a texture view in rendering backend.
Describes the properties needed to create a GPU shader program.
Describes a set of resources that are bound to the GPU during encoding.
Hydra Graphics Interface.
virtual HGI_API void DestroyTexture(HgiTextureHandle *texHandle)=0
Destroy a texture in rendering backend.
static HGI_API HgiUniquePtr CreatePlatformDefaultHgi()
Helper function to return a Hgi object for the current platform.
virtual HGI_API HgiShaderProgramHandle CreateShaderProgram(HgiShaderProgramDesc const &desc)=0
Create a new shader program.
static HGI_API Hgi * GetPlatformDefaultHgi()
*** DEPRECATED *** Please use: CreatePlatformDefaultHgi
HGI_API HgiResourceBindingsHandle CreateResourceBindings(HgiResourceBindingsDesc const &desc)
Create a new resource binding object.
virtual HGI_API HgiIndirectCommandEncoder * GetIndirectCommandEncoder() const =0
Returns the device-specific indirect command buffer encoder or nullptr if not supported.
Describes the properties needed to create a GPU shader function.
virtual HGI_API HgiSamplerHandle CreateSampler(HgiSamplerDesc const &desc)=0
Create a sampler in rendering backend.
Describes the properties to construct a HgiComputeCmds.
virtual HGI_API HgiCapabilities const * GetCapabilities() const =0
Returns the device-specific capabilities structure.
virtual HGI_API void DestroySampler(HgiSamplerHandle *smpHandle)=0
Destroy a sampler in rendering backend.
virtual HGI_API void StartFrame()=0
Optionally called by client app at the start of a new rendering frame.
virtual HGI_API HgiComputeCmdsUniquePtr CreateComputeCmds(HgiComputeCmdsDesc const &desc)=0
Returns a ComputeCmds object (for temporary use) that is ready to record dispatch commands.
Describes the properties needed to create a GPU pipeline.
HGI_API HgiTextureHandle CreateTexture(HgiTextureDesc const &desc)
Create a texture in rendering backend.
Graphics commands are recorded in 'cmds' objects which are later submitted to hgi.
virtual HGI_API void DestroyShaderProgram(HgiShaderProgramHandle *shaderProgramHandle)=0
Destroy a shader program.
virtual HGI_API HgiBlitCmdsUniquePtr CreateBlitCmds()=0
Returns a BlitCmds object (for temporary use) that is ready to execute resource copy commands.
virtual HGI_API TfToken const & GetAPIName() const =0
Return the name of the api (e.g.
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...
virtual HGI_API void DestroyGraphicsPipeline(HgiGraphicsPipelineHandle *pipeHandle)=0
Destroy a graphics pipeline state object.