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.
Describes the properties needed to copy buffer data from GPU to CPU.
Describes the properties needed to copy buffer data from GPU to GPU.
Describes the properties needed to copy GPU buffer data into a GPU texture.
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.