Loading...
Searching...
No Matches
unitTestHelper.h
1//
2// Copyright 2023 Pixar
3//
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
5// with the following modification; you may not use this file except in
6// compliance with the Apache License and the following modification to it:
7// Section 6. Trademarks. is deleted and replaced with:
8//
9// 6. Trademarks. This License does not grant permission to use the trade
10// names, trademarks, service marks, or product names of the Licensor
11// and its affiliates, except as required to comply with Section 4(c) of
12// the License and to reproduce the content of the NOTICE file.
13//
14// You may obtain a copy of the Apache License at
15//
16// http://www.apache.org/licenses/LICENSE-2.0
17//
18// Unless required by applicable law or agreed to in writing, software
19// distributed under the Apache License with the above modification is
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21// KIND, either express or implied. See the Apache License for the specific
22// language governing permissions and limitations under the Apache License.
23//
24#ifndef PXR_IMAGING_HGI_UNIT_TEST_HELPER_H
25#define PXR_IMAGING_HGI_UNIT_TEST_HELPER_H
26
27#include "pxr/pxr.h"
28
29#include "pxr/imaging/hgi/hgi.h"
30
31PXR_NAMESPACE_OPEN_SCOPE
32
33using HgiUniquePtr = std::unique_ptr<class Hgi>;
34
35class HgiInitializationTestDriver
36{
37public:
38 HGI_API
39 HgiInitializationTestDriver();
40
41 HGI_API
42 ~HgiInitializationTestDriver();
43
44 HGI_API
45 Hgi* GetHgi() { return _hgi.get(); }
46
47private:
48 HgiUniquePtr _hgi;
49};
50
51class HgiPipelineCreationTestDriver
52{
53public:
54 HGI_API
55 HgiPipelineCreationTestDriver();
56
57 HGI_API
58 ~HgiPipelineCreationTestDriver();
59
60 HGI_API
61 bool CreateTestPipeline();
62
63 HGI_API
64 Hgi* GetHgi() { return _hgi.get(); }
65
66protected:
67 bool _CreateShaderProgram();
68 void _DestroyShaderProgram();
69 void _CreateVertexBufferDescriptor();
70 bool _CreatePipeline();
71 void _PrintCompileErrors();
72
73 HgiUniquePtr _hgi;
74 HgiShaderProgramHandle _shaderProgram;
76 HgiVertexBufferDesc _vboDesc;
77 HgiAttachmentDesc _colorAtt;
78 HgiAttachmentDesc _depthAtt;
79};
80
81class HgiGfxCmdBfrExecutionTestDriver : public HgiPipelineCreationTestDriver
82{
83public:
84 HGI_API
85 HgiGfxCmdBfrExecutionTestDriver();
86
87 HGI_API
88 ~HgiGfxCmdBfrExecutionTestDriver();
89
90 HGI_API
91 bool ExecuteTestGfxCmdBfr();
92
93 HGI_API
94 bool WriteToFile(const std::string& filePath);
95
96private:
97 GfVec3i _renderDim;
98
99 bool _CreateResourceBuffers();
100 bool _CreateRenderTargets();
101
102 HgiBufferHandle _indexBuffer;
103 HgiBufferHandle _vertexBuffer;
104
105 HgiTextureHandle _colorTarget;
106 HgiTextureViewHandle _colorTargetView;
107
108 HgiTextureHandle _depthTarget;
109 HgiTextureViewHandle _depthTargetView;
110};
111
112PXR_NAMESPACE_CLOSE_SCOPE
113
114#endif // PXR_IMAGING_HGI_UNIT_TEST_HELPER_H
Basic type for a vector of 3 int components.
Definition: vec3i.h:61
Hydra Graphics Interface.
Definition: hgi.h:111
Describes the properties of a framebuffer attachment.
Describes the attributes of a vertex buffer.