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
59 HGIGL_API
60 static HgiGLOpsFn PopDebugGroup();
61
62 HGIGL_API
63 static HgiGLOpsFn CopyTextureGpuToCpu(HgiTextureGpuToCpuOp const& copyOp);
64
65 HGIGL_API
66 static HgiGLOpsFn CopyTextureCpuToGpu(HgiTextureCpuToGpuOp const& copyOp);
67
68 HGIGL_API
69 static HgiGLOpsFn CopyBufferGpuToGpu(HgiBufferGpuToGpuOp const& copyOp);
70
71 HGIGL_API
72 static HgiGLOpsFn CopyBufferCpuToGpu(HgiBufferCpuToGpuOp const& copyOp);
73
74 HGIGL_API
75 static HgiGLOpsFn CopyBufferGpuToCpu(HgiBufferGpuToCpuOp const& copyOp);
76
77 HGIGL_API
78 static HgiGLOpsFn CopyTextureToBuffer(HgiTextureToBufferOp const& copyOp);
79
80 HGIGL_API
81 static HgiGLOpsFn CopyBufferToTexture(HgiBufferToTextureOp const& copyOp);
82
83 HGIGL_API
84 static HgiGLOpsFn ResolveFramebuffer(
85 HgiGLDevice* device,
86 HgiGraphicsCmdsDesc const &graphicsCmds);
87
88 HGIGL_API
89 static HgiGLOpsFn SetViewport(GfVec4i const& vp);
90
91 HGIGL_API
92 static HgiGLOpsFn SetScissor(GfVec4i const& sc);
93
94 HGIGL_API
95 static HgiGLOpsFn BindPipeline(HgiGraphicsPipelineHandle pipeline);
96
97 HGIGL_API
98 static HgiGLOpsFn BindPipeline(HgiComputePipelineHandle pipeline);
99
100 HGIGL_API
101 static HgiGLOpsFn BindResources(HgiResourceBindingsHandle resources);
102
103 HGIGL_API
104 static HgiGLOpsFn SetConstantValues(
106 HgiShaderStage stages,
107 uint32_t bindIndex,
108 uint32_t byteSize,
109 const void* data);
110
111 HGIGL_API
112 static HgiGLOpsFn SetConstantValues(
114 uint32_t bindIndex,
115 uint32_t byteSize,
116 const void* data);
117
118 HGIGL_API
119 static HgiGLOpsFn BindVertexBuffers(
120 HgiVertexBufferBindingVector const &bindings);
121
122 HGIGL_API
123 static HgiGLOpsFn Draw(
124 HgiPrimitiveType primitiveType,
125 uint32_t primitiveIndexSize,
126 uint32_t vertexCount,
127 uint32_t baseVertex,
128 uint32_t instanceCount,
129 uint32_t baseInstance);
130
131 HGIGL_API
132 static HgiGLOpsFn DrawIndirect(
133 HgiPrimitiveType primitiveType,
134 uint32_t primitiveIndexSize,
135 HgiBufferHandle const& drawParameterBuffer,
136 uint32_t drawBufferByteOffset,
137 uint32_t drawCount,
138 uint32_t stride);
139
140 HGIGL_API
141 static HgiGLOpsFn DrawIndexed(
142 HgiPrimitiveType primitiveType,
143 uint32_t primitiveIndexSize,
144 HgiBufferHandle const& indexBuffer,
145 uint32_t indexCount,
146 uint32_t indexBufferByteOffset,
147 uint32_t baseVertex,
148 uint32_t instanceCount,
149 uint32_t baseInstance);
150
151 HGIGL_API
152 static HgiGLOpsFn DrawIndexedIndirect(
153 HgiPrimitiveType primitiveType,
154 uint32_t primitiveIndexSize,
155 HgiBufferHandle const& indexBuffer,
156 HgiBufferHandle const& drawParameterBuffer,
157 uint32_t drawBufferByteOffset,
158 uint32_t drawCount,
159 uint32_t stride);
160
161 HGIGL_API
162 static HgiGLOpsFn BindFramebufferOp(
163 HgiGLDevice* device,
164 HgiGraphicsCmdsDesc const& desc);
165
166 HGIGL_API
167 static HgiGLOpsFn Dispatch(int dimX, int dimY);
168
169 HGIGL_API
170 static HgiGLOpsFn FillBuffer(HgiBufferHandle const& buffer, uint8_t value);
171
172 HGIGL_API
173 static HgiGLOpsFn GenerateMipMaps(HgiTextureHandle const& texture);
174
175 HGIGL_API
176 static HgiGLOpsFn InsertMemoryBarrier(HgiMemoryBarrier barrier);
177
178};
179
180PXR_NAMESPACE_CLOSE_SCOPE
181
182#endif
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