public H1DescriptorAllocator(H1DescriptorHeapType type) { m_HeapType = type; m_RemainingFreeHandles = 0; ConstructPlatformDependentMembers(); }
protected DescriptorHeap RequestNewHeap(H1DescriptorHeapType type) { DescriptorHeapType typeInDX12 = H1RHIDefinitionHelper.ConvertToDescriptorHeapType(type); // @TODO - need to be thread-safe DescriptorHeapDescription desc = new DescriptorHeapDescription(); desc.Type = typeInDX12; desc.DescriptorCount = NumDescriptorsPerHeap; // this part is none, but for usage in command context, you need to create new descriptor for shader-visible by UserDescriptorHeap or DynamicDescriptorHeap desc.Flags = DescriptorHeapFlags.None; desc.NodeMask = 1; DescriptorHeap newHeap = m_Device.CreateDescriptorHeap(desc); m_DescriptorHeapPool.Add(newHeap); return(newHeap); }
public static SharpDX.Direct3D12.DescriptorHeapType ConvertToDescriptorHeapType(H1DescriptorHeapType descriptorHeapType) { SharpDX.Direct3D12.DescriptorHeapType result = new SharpDX.Direct3D12.DescriptorHeapType(); switch (descriptorHeapType) { case H1DescriptorHeapType.ConstantBufferView_ShaderResourceView_UnorderedAccessView: result = SharpDX.Direct3D12.DescriptorHeapType.ConstantBufferViewShaderResourceViewUnorderedAccessView; break; case H1DescriptorHeapType.Sampler: result = SharpDX.Direct3D12.DescriptorHeapType.Sampler; break; case H1DescriptorHeapType.RenderTargetView: result = SharpDX.Direct3D12.DescriptorHeapType.RenderTargetView; break; case H1DescriptorHeapType.DepthStencilView: result = SharpDX.Direct3D12.DescriptorHeapType.DepthStencilView; break; } return(result); }
public CpuDescriptorHandle AllocateDescriptor(H1DescriptorHeapType type, Int32 count = 1) { return(m_DescriptorAllocators[Convert.ToInt32(type)].Allocate(count)); }