1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef DEVICE_GPU_RESOURCE_DESC_FLAG_VALIDATION_H
17 #define DEVICE_GPU_RESOURCE_DESC_FLAG_VALIDATION_H
18 
19 #include <base/util/formats.h>
20 #include <render/device/gpu_resource_desc.h>
21 #include <render/namespace.h>
22 
23 RENDER_BEGIN_NAMESPACE()
24 /** GPU resource desc flag validation
25  */
26 struct GpuResourceDescFlagValidation {
27     static constexpr uint32_t ALL_GPU_BUFFER_USAGE_FLAGS = {
28         CORE_BUFFER_USAGE_TRANSFER_SRC_BIT | CORE_BUFFER_USAGE_TRANSFER_DST_BIT | CORE_BUFFER_USAGE_UNIFORM_BUFFER_BIT |
29         CORE_BUFFER_USAGE_STORAGE_BUFFER_BIT | CORE_BUFFER_USAGE_INDEX_BUFFER_BIT |
30         CORE_BUFFER_USAGE_VERTEX_BUFFER_BIT | CORE_BUFFER_USAGE_INDIRECT_BUFFER_BIT |
31         CORE_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT | CORE_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT |
32         CORE_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT |
33         CORE_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT
34     };
35 
36     static constexpr uint32_t ALL_GPU_IMAGE_USAGE_FLAGS = {
37         CORE_IMAGE_USAGE_TRANSFER_SRC_BIT | CORE_IMAGE_USAGE_TRANSFER_DST_BIT | CORE_IMAGE_USAGE_SAMPLED_BIT |
38         CORE_IMAGE_USAGE_STORAGE_BIT | CORE_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
39         CORE_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | CORE_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT |
40         CORE_IMAGE_USAGE_INPUT_ATTACHMENT_BIT | CORE_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT
41     };
42 
43     static constexpr uint32_t ALL_MEMORY_PROPERTY_FLAGS = {
44         CORE_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | CORE_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
45         CORE_MEMORY_PROPERTY_HOST_COHERENT_BIT | CORE_MEMORY_PROPERTY_HOST_CACHED_BIT |
46         CORE_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT | CORE_MEMORY_PROPERTY_PROTECTED_BIT
47     };
48 
49     static constexpr uint32_t ALL_IMAGE_CREATE_FLAGS = { CORE_IMAGE_CREATE_CUBE_COMPATIBLE_BIT |
50                                                          CORE_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT };
51 };
52 RENDER_END_NAMESPACE()
53 
54 #endif // DEVICE_GPU_RESOURCE_DESC_FLAG_VALIDATION_H
55