Пример #1
0
 public static uint GetVulkanBufferUsageKind(GraphicsBufferKind kind, GraphicsResourceCpuAccess cpuAccess)
 {
     var vulkanBufferUsageKind = kind switch {
         GraphicsBufferKind.Vertex => VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
         GraphicsBufferKind.Index => VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
         GraphicsBufferKind.Constant => VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
         _ => default,
Пример #2
0
        /// <inheritdoc />
        public override D3D12GraphicsBuffer CreateBuffer(GraphicsBufferKind kind, GraphicsResourceCpuAccess cpuAccess, ulong size, ulong alignment = 0, GraphicsMemoryAllocationFlags allocationFlags = GraphicsMemoryAllocationFlags.None)
        {
            var index = GetBlockCollectionIndex(cpuAccess, 0);

            var resourceDesc                 = D3D12_RESOURCE_DESC.Buffer(size, D3D12_RESOURCE_FLAG_NONE, alignment);
            var resourceAllocationInfo       = Device.D3D12Device->GetResourceAllocationInfo(visibleMask: 0, numResourceDescs: 1, &resourceDesc);
            ref readonly var blockCollection = ref _blockCollections[index];
        /// <inheritdoc />
        public override VulkanGraphicsBuffer CreateBuffer(GraphicsBufferKind kind, GraphicsResourceCpuAccess cpuAccess, ulong size, ulong alignment = 0, GraphicsMemoryAllocationFlags allocationFlags = GraphicsMemoryAllocationFlags.None)
        {
            var vulkanDevice = Device.VulkanDevice;

            var bufferCreateInfo = new VkBufferCreateInfo {
                sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
                size  = size,
                usage = GetVulkanBufferUsageKind(kind, cpuAccess)
            };

            VkBuffer vulkanBuffer;

            ThrowExternalExceptionIfNotSuccess(nameof(vkCreateBuffer), vkCreateBuffer(vulkanDevice, &bufferCreateInfo, pAllocator: null, (ulong *)&vulkanBuffer));

            VkMemoryRequirements memoryRequirements;

            vkGetBufferMemoryRequirements(vulkanDevice, vulkanBuffer, &memoryRequirements);

            var index = GetBlockCollectionIndex(cpuAccess, memoryRequirements.memoryTypeBits);
            ref readonly var blockCollection = ref _blockCollections[index];
Пример #4
0
 internal D3D12GraphicsBuffer(GraphicsBufferKind kind, GraphicsResourceCpuAccess cpuAccess, in GraphicsMemoryBlockRegion memoryBlockRegion)
Пример #5
0
 /// <summary>Initializes a new instance of the <see cref="GraphicsBuffer" /> class.</summary>
 /// <param name="kind">The buffer kind.</param>
 /// <param name="cpuAccess">The CPU access capabilities of the resource.</param>
 /// <param name="memoryBlockRegion">The memory block region in which the resource exists.</param>
 /// <inheritdoc cref="GraphicsResource(GraphicsResourceCpuAccess, in GraphicsMemoryBlockRegion)" />
 protected GraphicsBuffer(GraphicsBufferKind kind, GraphicsResourceCpuAccess cpuAccess, in GraphicsMemoryBlockRegion memoryBlockRegion)
Пример #6
0
 internal VulkanGraphicsBuffer(GraphicsBufferKind kind, GraphicsResourceCpuAccess cpuAccess, in GraphicsMemoryBlockRegion memoryBlockRegion, VkBuffer vulkanBuffer)
Пример #7
0
 /// <summary>Initializes a new instance of the <see cref="GraphicsTexture" /> class.</summary>
 /// <param name="kind">The texture kind.</param>
 /// <param name="cpuAccess">The CPU access capabilities of the resource.</param>
 /// <param name="memoryBlockRegion">The memory block region in which the resource exists.</param>
 /// <param name="width">The width, in pixels, of the graphics texture.</param>
 /// <param name="height">The height, in pixels, of the graphics texture.</param>
 /// <param name="depth">The depth, in pixels, of the graphics texture.</param>
 /// <inheritdoc cref="GraphicsResource(GraphicsResourceCpuAccess, in GraphicsMemoryBlockRegion)" />
 protected GraphicsTexture(GraphicsTextureKind kind, GraphicsResourceCpuAccess cpuAccess, in GraphicsMemoryBlockRegion memoryBlockRegion, uint width, uint height, ushort depth)
Пример #8
0
 /// <summary>Initializes a new instance of the <see cref="GraphicsResource" /> class.</summary>
 /// <param name="cpuAccess">The CPU access capabilities of the resource.</param>
 /// <param name="memoryBlockRegion">The memory block region in which the resource exists.</param>
 /// <exception cref="ArgumentOutOfRangeException"><paramref name="memoryBlockRegion" />.<see cref="GraphicsMemoryBlockRegion.Block" /> is <c>null</c>.</exception>
 /// <exception cref="ArgumentOutOfRangeException"><paramref name="memoryBlockRegion" />.<see cref="GraphicsMemoryBlockRegion.IsAllocated" /> is <c>false</c>.</exception>
 private protected GraphicsResource(GraphicsResourceCpuAccess cpuAccess, in GraphicsMemoryBlockRegion memoryBlockRegion)
Пример #9
0
 internal VulkanGraphicsTexture(GraphicsTextureKind kind, GraphicsResourceCpuAccess cpuAccess, in GraphicsMemoryBlockRegion memoryBlockRegion, uint width, uint height, ushort depth, VkImage vulkanImage)