Loading...
Searching...
No Matches
ops.h
1//
2// Copyright 2020 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7#ifndef PXR_IMAGING_HGIGL_OPS_H
8#define PXR_IMAGING_HGIGL_OPS_H
9
10#include "pxr/pxr.h"
11#include "pxr/base/gf/vec4i.h"
12
13#include "pxr/imaging/hgi/buffer.h"
14#include "pxr/imaging/hgi/blitCmdsOps.h"
15#include "pxr/imaging/hgi/graphicsCmdsDesc.h"
16#include "pxr/imaging/hgi/graphicsPipeline.h"
17#include "pxr/imaging/hgi/resourceBindings.h"
18
19#include "pxr/imaging/hgiGL/api.h"
20#include "pxr/imaging/hgiGL/device.h"
21
22#include <cstdint>
23#include <functional>
24#include <vector>
25
26PXR_NAMESPACE_OPEN_SCOPE
27
28using HgiGLOpsFn = std::function<void(void)>;
29
54{
55public:
56 HGIGL_API
57 static HgiGLOpsFn PushDebugGroup(const char* label,
58 const GfVec4f& color = GfVec4f(0.0));
59
60 HGIGL_API
61 static HgiGLOpsFn PopDebugGroup();
62
63 HGIGL_API
64 static HgiGLOpsFn InsertDebugMarker(const char* label);
65
66 HGIGL_API
67 static HgiGLOpsFn CopyTextureGpuToCpu(HgiTextureGpuToCpuOp const& copyOp);
68
69 HGIGL_API
70 static HgiGLOpsFn CopyTextureCpuToGpu(HgiTextureCpuToGpuOp const& copyOp);
71
72 HGIGL_API
73 static HgiGLOpsFn CopyBufferGpuToGpu(HgiBufferGpuToGpuOp const& copyOp);
74
75 HGIGL_API
76 static HgiGLOpsFn CopyBufferCpuToGpu(HgiBufferCpuToGpuOp const& copyOp);
77
78 HGIGL_API
79 static HgiGLOpsFn CopyBufferGpuToCpu(HgiBufferGpuToCpuOp const& copyOp);
80
81 HGIGL_API
82 static HgiGLOpsFn CopyTextureToBuffer(HgiTextureToBufferOp const& copyOp);
83
84 HGIGL_API
85 static HgiGLOpsFn CopyBufferToTexture(HgiBufferToTextureOp const& copyOp);
86
87 HGIGL_API
88 static HgiGLOpsFn ResolveFramebuffer(
89 HgiGLDevice* device,
90 HgiGraphicsCmdsDesc const &graphicsCmds);
91
92 HGIGL_API
93 static HgiGLOpsFn SetViewport(GfVec4i const& vp);
94
95 HGIGL_API
96 static HgiGLOpsFn SetScissor(GfVec4i const& sc);
97
98 HGIGL_API
99 static HgiGLOpsFn BindPipeline(HgiGraphicsPipelineHandle pipeline);
100
101 HGIGL_API
102 static HgiGLOpsFn BindPipeline(HgiComputePipelineHandle pipeline);
103
104 HGIGL_API
105 static HgiGLOpsFn BindResources(HgiResourceBindingsHandle resources);
106
107 HGIGL_API
108 static HgiGLOpsFn SetConstantValues(
110 HgiShaderStage stages,
111 uint32_t bindIndex,
112 uint32_t byteSize,
113 const void* data);
114
115 HGIGL_API
116 static HgiGLOpsFn SetConstantValues(
118 uint32_t bindIndex,
119 uint32_t byteSize,
120 const void* data);
121
122 HGIGL_API
123 static HgiGLOpsFn BindVertexBuffers(
124 HgiVertexBufferBindingVector const &bindings);
125
126 HGIGL_API
127 static HgiGLOpsFn Draw(
128 HgiPrimitiveType primitiveType,
129 uint32_t primitiveIndexSize,
130 uint32_t vertexCount,
131 uint32_t baseVertex,
132 uint32_t instanceCount,
133 uint32_t baseInstance);
134
135 HGIGL_API
136 static HgiGLOpsFn DrawIndirect(
137 HgiPrimitiveType primitiveType,
138 uint32_t primitiveIndexSize,
139 HgiBufferHandle const& drawParameterBuffer,
140 uint32_t drawBufferByteOffset,
141 uint32_t drawCount,
142 uint32_t stride);
143
144 HGIGL_API
145 static HgiGLOpsFn DrawIndexed(
146 HgiPrimitiveType primitiveType,
147 uint32_t primitiveIndexSize,
148 HgiBufferHandle const& indexBuffer,
149 uint32_t indexCount,
150 uint32_t indexBufferByteOffset,
151 uint32_t baseVertex,
152 uint32_t instanceCount,
153 uint32_t baseInstance);
154
155 HGIGL_API
156 static HgiGLOpsFn DrawIndexedIndirect(
157 HgiPrimitiveType primitiveType,
158 uint32_t primitiveIndexSize,
159 HgiBufferHandle const& indexBuffer,
160 HgiBufferHandle const& drawParameterBuffer,
161 uint32_t drawBufferByteOffset,
162 uint32_t drawCount,
163 uint32_t stride);
164
165 HGIGL_API
166 static HgiGLOpsFn BindFramebufferOp(
167 HgiGLDevice* device,
168 HgiGraphicsCmdsDesc const& desc);
169
170 HGIGL_API
171 static HgiGLOpsFn Dispatch(int dimX, int dimY);
172
173 HGIGL_API
174 static HgiGLOpsFn FillBuffer(HgiBufferHandle const& buffer, uint8_t value);
175
176 HGIGL_API
177 static HgiGLOpsFn GenerateMipMaps(HgiTextureHandle const& texture);
178
179 HGIGL_API
180 static HgiGLOpsFn InsertMemoryBarrier(HgiMemoryBarrier barrier);
181
182};
183
184PXR_NAMESPACE_CLOSE_SCOPE
185
186#endif
Basic type for a vector of 4 float components.
Definition: vec4f.h:46
Basic type for a vector of 4 int components.
Definition: vec4i.h:44
OpenGL implementation of GPU device.
Definition: device.h:29
A collection of functions used by cmds objects to do deferred cmd recording.
Definition: ops.h:54
Describes the properties needed to copy buffer data from CPU to GPU.
Definition: blitCmdsOps.h:174
Describes the properties needed to copy buffer data from GPU to CPU.
Definition: blitCmdsOps.h:214
Describes the properties needed to copy buffer data from GPU to GPU.
Definition: blitCmdsOps.h:134
Describes the properties needed to copy GPU buffer data into a GPU texture.
Definition: blitCmdsOps.h:298
Describes the properties to begin a HgiGraphicsCmds.
Describes the properties needed to copy texture data from CPU to GPU.
Definition: blitCmdsOps.h:94
Describes the properties needed to copy texture data from GPU to CPU.
Definition: blitCmdsOps.h:51
Describes the properties needed to copy GPU texture data into a GPU buffer.
Definition: blitCmdsOps.h:254