60 unsigned int mostDetailedMip = 0,
61 unsigned int mipLevels = -1);
63 unsigned int mipSlice);
69 const std::vector<D3D12_CPU_DESCRIPTOR_HANDLE>& shaderViews);
71 const std::vector<D3D12_CPU_DESCRIPTOR_HANDLE>& samplers);
73 return &fDescriptorTableManager;
86#if defined(GR_TEST_UTILS)
87 void resetShaderCacheForTesting()
const { fPipelineStateCache->release(); }
92#define GR_PIPELINE_STATE_CACHE_STATS
98 ~PipelineStateCache();
103 void markPipelineStateUniformsDirty();
118#ifdef GR_PIPELINE_STATE_CACHE_STATS
126 DescriptorTableCache(
GrD3DGpu* gpu) : fGpu(gpu), fMap(64) {
130 for (
int i = 0; i < kRangeSizesCount; ++i) {
134 ~DescriptorTableCache() =
default;
137 typedef std::function<sk_sp<GrD3DDescriptorTable>(
GrD3DGpu*,
unsigned int)> CreateFunc;
139 const std::vector<D3D12_CPU_DESCRIPTOR_HANDLE>&, CreateFunc);
144 typedef std::vector<D3D12_CPU_DESCRIPTOR_HANDLE> DescTableKey;
146 struct DescTableHash {
147 uint32_t operator()(DescTableKey
key)
const {
149 key.size() *
sizeof(D3D12_CPU_DESCRIPTOR_HANDLE));
153 inline static constexpr int kRangeSizesCount = 8;
154 unsigned int fRangeSizes[kRangeSizesCount];
166 std::unique_ptr<PipelineStateCache> fPipelineStateCache;
171 DescriptorTableCache fShaderResourceDescriptorTableCache;
172 DescriptorTableCache fSamplerDescriptorTableCache;