blob: 6ffe80bcb74f4345633c31ad0ab9dae1e12cf3b3 [file] [log] [blame]
/*
* Copyright 2023 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef skgpu_graphite_DescriptorTypes_DEFINED
#define skgpu_graphite_DescriptorTypes_DEFINED
#include "include/private/base/SkTArray.h"
#include "src/base/SkEnumBitMask.h"
#include "src/gpu/graphite/Sampler.h"
namespace skgpu::graphite {
/**
* Types of descriptors supported within graphite
*/
enum class DescriptorType : uint8_t {
kUniformBuffer = 0,
kTextureSampler,
kTexture,
kCombinedTextureSampler,
kStorageBuffer,
kInputAttachment,
kLast = kInputAttachment,
};
static constexpr int kDescriptorTypeCount = (int)(DescriptorType::kLast) + 1;
enum class PipelineStageFlags : uint8_t {
kVertexShader = 0b001,
kFragmentShader = 0b010,
kCompute = 0b100,
};
SK_MAKE_BITMASK_OPS(PipelineStageFlags);
struct DescriptorData {
DescriptorData(DescriptorType type,
uint32_t count,
int bindingIdx,
SkEnumBitMask<PipelineStageFlags> stageFlags,
const Sampler* immutableSampler = nullptr)
: fType (type)
, fCount (count)
, fBindingIndex (bindingIdx)
, fPipelineStageFlags(stageFlags)
, fImmutableSampler(immutableSampler) {}
DescriptorType fType;
uint32_t fCount;
int fBindingIndex;
SkEnumBitMask<PipelineStageFlags> fPipelineStageFlags;
const Sampler* fImmutableSampler;
};
}; // namespace skgpu::graphite
#endif // skgpu_graphite_DescriptorTypes_DEFINED