1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2023 Google LLC 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef skgpu_graphite_DescriptorTypes_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define skgpu_graphite_DescriptorTypes_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/base/SkTArray.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "src/base/SkEnumBitMask.h" 13*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/graphite/Sampler.h" 14*c8dee2aaSAndroid Build Coastguard Worker 15*c8dee2aaSAndroid Build Coastguard Worker namespace skgpu::graphite { 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Worker /** 18*c8dee2aaSAndroid Build Coastguard Worker * Types of descriptors supported within graphite 19*c8dee2aaSAndroid Build Coastguard Worker */ 20*c8dee2aaSAndroid Build Coastguard Worker enum class DescriptorType : uint8_t { 21*c8dee2aaSAndroid Build Coastguard Worker kUniformBuffer = 0, 22*c8dee2aaSAndroid Build Coastguard Worker kTextureSampler, 23*c8dee2aaSAndroid Build Coastguard Worker kTexture, 24*c8dee2aaSAndroid Build Coastguard Worker kCombinedTextureSampler, 25*c8dee2aaSAndroid Build Coastguard Worker kStorageBuffer, 26*c8dee2aaSAndroid Build Coastguard Worker kInputAttachment, 27*c8dee2aaSAndroid Build Coastguard Worker 28*c8dee2aaSAndroid Build Coastguard Worker kLast = kInputAttachment, 29*c8dee2aaSAndroid Build Coastguard Worker }; 30*c8dee2aaSAndroid Build Coastguard Worker static constexpr int kDescriptorTypeCount = (int)(DescriptorType::kLast) + 1; 31*c8dee2aaSAndroid Build Coastguard Worker 32*c8dee2aaSAndroid Build Coastguard Worker enum class PipelineStageFlags : uint8_t { 33*c8dee2aaSAndroid Build Coastguard Worker kVertexShader = 0b001, 34*c8dee2aaSAndroid Build Coastguard Worker kFragmentShader = 0b010, 35*c8dee2aaSAndroid Build Coastguard Worker kCompute = 0b100, 36*c8dee2aaSAndroid Build Coastguard Worker }; 37*c8dee2aaSAndroid Build Coastguard Worker SK_MAKE_BITMASK_OPS(PipelineStageFlags); 38*c8dee2aaSAndroid Build Coastguard Worker 39*c8dee2aaSAndroid Build Coastguard Worker struct DescriptorData { 40*c8dee2aaSAndroid Build Coastguard Worker DescriptorData(DescriptorType type, 41*c8dee2aaSAndroid Build Coastguard Worker uint32_t count, 42*c8dee2aaSAndroid Build Coastguard Worker int bindingIdx, 43*c8dee2aaSAndroid Build Coastguard Worker SkEnumBitMask<PipelineStageFlags> stageFlags, 44*c8dee2aaSAndroid Build Coastguard Worker const Sampler* immutableSampler = nullptr) fTypeDescriptorData45*c8dee2aaSAndroid Build Coastguard Worker : fType (type) 46*c8dee2aaSAndroid Build Coastguard Worker , fCount (count) 47*c8dee2aaSAndroid Build Coastguard Worker , fBindingIndex (bindingIdx) 48*c8dee2aaSAndroid Build Coastguard Worker , fPipelineStageFlags(stageFlags) 49*c8dee2aaSAndroid Build Coastguard Worker , fImmutableSampler(immutableSampler) {} 50*c8dee2aaSAndroid Build Coastguard Worker 51*c8dee2aaSAndroid Build Coastguard Worker DescriptorType fType; 52*c8dee2aaSAndroid Build Coastguard Worker uint32_t fCount; 53*c8dee2aaSAndroid Build Coastguard Worker int fBindingIndex; 54*c8dee2aaSAndroid Build Coastguard Worker SkEnumBitMask<PipelineStageFlags> fPipelineStageFlags; 55*c8dee2aaSAndroid Build Coastguard Worker const Sampler* fImmutableSampler; 56*c8dee2aaSAndroid Build Coastguard Worker }; 57*c8dee2aaSAndroid Build Coastguard Worker 58*c8dee2aaSAndroid Build Coastguard Worker }; // namespace skgpu::graphite 59*c8dee2aaSAndroid Build Coastguard Worker 60*c8dee2aaSAndroid Build Coastguard Worker #endif // skgpu_graphite_DescriptorTypes_DEFINED 61