void ConstructPlatformDependentMembers()
        {
            m_Device = H1Global <H1ManagedRenderer> .Instance.Device;

            m_CurrentHeap       = null;
            m_CurrentHandle.Ptr = null;

            // set descriptor size
            m_DescriptorSize = m_Device.GetDescriptorHandleIncrementSize(H1RHIDefinitionHelper.ConvertToDescriptorHeapType(m_HeapType));
        }
        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);
        }