| /* |
| * Copyright 2020 Google LLC |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef GrD3DCommandSignature_DEFINED |
| #define GrD3DCommandSignature_DEFINED |
| |
| #include "include/gpu/d3d/GrD3DTypes.h" |
| #include "src/gpu/GrManagedResource.h" |
| |
| class GrD3DGpu; |
| |
| class GrD3DCommandSignature : public GrManagedResource { |
| public: |
| enum class ForIndexed : bool { |
| kYes = true, |
| kNo = false |
| }; |
| static sk_sp<GrD3DCommandSignature> Make(GrD3DGpu* gpu, ForIndexed indexed, unsigned int slot); |
| |
| bool isCompatible(ForIndexed indexed, unsigned int slot) const { |
| return (fIndexed == indexed && fSlot == slot); |
| } |
| |
| ID3D12CommandSignature* commandSignature() const { return fCommandSignature.get(); } |
| |
| #ifdef SK_TRACE_MANAGED_RESOURCES |
| /** Output a human-readable dump of this resource's information |
| */ |
| void dumpInfo() const override { |
| SkDebugf("GrD3DCommandSignature: %p, (%d refs)\n", |
| fCommandSignature.get(), this->getRefCnt()); |
| } |
| #endif |
| |
| private: |
| GrD3DCommandSignature(gr_cp<ID3D12CommandSignature> commandSignature, ForIndexed indexed, |
| unsigned int slot) |
| : fCommandSignature(commandSignature) |
| , fIndexed(indexed) |
| , fSlot(slot) {} |
| |
| // This will be called right before this class is destroyed and there is no reason to explicitly |
| // release the fCommandSignature cause the gr_cp will handle that in the dtor. |
| void freeGPUData() const override {} |
| |
| gr_cp<ID3D12CommandSignature> fCommandSignature; |
| ForIndexed fIndexed; |
| unsigned int fSlot; |
| }; |
| |
| #endif |