diff options
author | Greg Daniel <egdaniel@google.com> | 2018-05-25 17:25:17 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-05-25 17:25:23 +0000 |
commit | 98bddf930e4a8767bca60d84d585c386fabfc6b7 (patch) | |
tree | 138c8f9b079fd50538c250101c948c946757064b /include | |
parent | 3b526b05d652ad6c310d9c636187b20b51c7648c (diff) |
Revert "Create API for GrVkMemoryAllocator and impliment use of AMD VulkanMemoryAllocator on this API."
This reverts commit 26c0e4c1f54759249c2d61b50fb5430bd73793f2.
Reason for revert: breaks roll into fuchsia
Original change's description:
> Create API for GrVkMemoryAllocator and impliment use of AMD VulkanMemoryAllocator on this API.
>
> Bug: skia:
> Change-Id: I1e122e1b11ab308c2f83cb98c36c81511f4507d0
> Reviewed-on: https://skia-review.googlesource.com/129980
> Commit-Queue: Greg Daniel <egdaniel@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Jim Van Verth <jvanverth@google.com>
TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com,bungeman@google.com
Change-Id: I6c74978f778987c422e6162e7dd85ea9c6baa0e4
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/130182
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/gpu/vk/GrVkDefines.h | 76 | ||||
-rw-r--r-- | include/gpu/vk/GrVkMemoryAllocator.h | 89 | ||||
-rw-r--r-- | include/gpu/vk/GrVkTypes.h | 15 |
3 files changed, 4 insertions, 176 deletions
diff --git a/include/gpu/vk/GrVkDefines.h b/include/gpu/vk/GrVkDefines.h index 0fd405d55c..d17300a550 100644 --- a/include/gpu/vk/GrVkDefines.h +++ b/include/gpu/vk/GrVkDefines.h @@ -51,82 +51,6 @@ #error "Vulkan header version is too low" #endif -// The AMD VulkanMemoryAllocator needs the objects from this extension to be declared. -#ifndef VK_KHR_get_memory_requirements2 - -#define VK_KHR_get_memory_requirements2 1 -#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1 -#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2" - -typedef struct VkBufferMemoryRequirementsInfo2KHR { - VkStructureType sType; - const void* pNext; - VkBuffer buffer; -} VkBufferMemoryRequirementsInfo2KHR; - -typedef struct VkImageMemoryRequirementsInfo2KHR { - VkStructureType sType; - const void* pNext; - VkImage image; -} VkImageMemoryRequirementsInfo2KHR; - -typedef struct VkImageSparseMemoryRequirementsInfo2KHR { - VkStructureType sType; - const void* pNext; - VkImage image; -} VkImageSparseMemoryRequirementsInfo2KHR; - -typedef struct VkMemoryRequirements2KHR { - VkStructureType sType; - void* pNext; - VkMemoryRequirements memoryRequirements; -} VkMemoryRequirements2KHR; - -typedef struct VkSparseImageMemoryRequirements2KHR { - VkStructureType sType; - void* pNext; - VkSparseImageMemoryRequirements memoryRequirements; -} VkSparseImageMemoryRequirements2KHR; - - -typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements); - -static constexpr VkStructureType VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = (VkStructureType) 1000146000; -static constexpr VkStructureType VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = (VkStructureType) 1000146001; -static constexpr VkStructureType VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = (VkStructureType) 1000146002; -static constexpr VkStructureType VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = (VkStructureType) 1000146003; -static constexpr VkStructureType VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = (VkStructureType) 1000146004; - -#endif // VK_KHR_get_memory_requirements2 - -// Also needed for VulkanMemoryAllocator -#ifndef VK_KHR_dedicated_allocation - -#define VK_KHR_dedicated_allocation 1 -#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3 -#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation" - -typedef struct VkMemoryDedicatedRequirementsKHR { - VkStructureType sType; - void* pNext; - VkBool32 prefersDedicatedAllocation; - VkBool32 requiresDedicatedAllocation; -} VkMemoryDedicatedRequirementsKHR; - -typedef struct VkMemoryDedicatedAllocateInfoKHR { - VkStructureType sType; - const void* pNext; - VkImage image; - VkBuffer buffer; -} VkMemoryDedicatedAllocateInfoKHR; - -static constexpr VkStructureType VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = (VkStructureType) 1000127000; -static constexpr VkStructureType VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = (VkStructureType) 1000127001; - -#endif // VK_KHR_dedicated_allocation - #endif #endif diff --git a/include/gpu/vk/GrVkMemoryAllocator.h b/include/gpu/vk/GrVkMemoryAllocator.h deleted file mode 100644 index 0e73586c3b..0000000000 --- a/include/gpu/vk/GrVkMemoryAllocator.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrVkMemoryAllocator_DEFINED -#define GrVkMemoryAllocator_DEFINED - -#include "SkRefCnt.h" -#include "GrTypes.h" -#include "GrVkDefines.h" -#include "GrVkTypes.h" - -class GrVkMemoryAllocator : public SkRefCnt { -public: - enum class AllocationPropertyFlags { - kNone = 0, - // Allocation will be placed in its own VkDeviceMemory and not suballocated from some larger - // block. - kDedicatedAllocation = 0x1, - // Says that the backing memory can only be accessed by the device. Additionally the device - // may lazily allocate the memory. This cannot be used with buffers that will be host - // visible. Setting this flag does not guarantee that we will allocate memory that respects - // it, but we will try to prefer memory that can respect it. - kLazyAllocation = 0x2, - // The allocation will be mapped immediately and stay mapped until it is destroyed. This - // flag is only valid for buffers which are host visible (i.e. must have a usage other than - // BufferUsage::kGpuOnly). - kPersistentlyMapped = 0x3, - }; - - GR_DECL_BITFIELD_CLASS_OPS_FRIENDS(AllocationPropertyFlags); - - enum class BufferUsage { - // Buffers that will only be accessed from the device (large const buffers). Will always be - // in device local memory. - kGpuOnly, - // Buffers that will be accessed on the host and copied to and from a GPU resource (transfer - // buffers). Will always be mappable and coherent memory. - kCpuOnly, - // Buffers that typically will be updated multiple times by the host and read on the gpu - // (e.g. uniform or vertex buffers). Will always be mappable memory, and will prefer to be - // in device local memory. - kCpuWritesGpuReads, - // Buffers which are typically writted to by the GPU and then read on the host. Will always - // be mappable memory, and will prefer coherent and cached memory. - kGpuWritesCpuReads, - }; - - virtual bool allocateMemoryForImage(VkImage image, AllocationPropertyFlags flags, - GrVkBackendMemory*) = 0; - - virtual bool allocateMemoryForBuffer(VkBuffer buffer, BufferUsage usage, - AllocationPropertyFlags flags, GrVkBackendMemory*) = 0; - - // Fills out the passed in GrVkAlloc struct for the passed in GrVkBackendMemory. - virtual void getAllocInfo(const GrVkBackendMemory&, GrVkAlloc*) const = 0; - - // Maps the entire allocation and returns a pointer to the start of the allocation. The - // implementation may map more memory than just the allocation, but the returned pointer must - // point at the start of the memory for the requested allocation. - virtual void* mapMemory(const GrVkBackendMemory&) = 0; - virtual void unmapMemory(const GrVkBackendMemory&) = 0; - - // The following two calls are used for managing non-coherent memory. The offset is relative to - // the start of the allocation and not the underlying VkDeviceMemory. Additionaly the client - // must make sure that the offset + size passed in is less that or equal to the allocation size. - // It is the responsibility of the implementation to make sure all alignment requirements are - // followed. The client should not have to deal with any sort of alignment issues. - virtual void flushMappedMemory(const GrVkBackendMemory&, VkDeviceSize offset, - VkDeviceSize size) = 0; - virtual void invalidateMappedMemory(const GrVkBackendMemory&, VkDeviceSize offset, - VkDeviceSize size)= 0; - - virtual void freeMemory(const GrVkBackendMemory&) = 0; - - // Returns the total amount of memory that is allocated and in use by an allocation for this - // allocator. - virtual uint64_t totalUsedMemory() const = 0; - - // Returns the total amount of memory that is allocated by this allocator. - virtual uint64_t totalAllocatedMemory() const = 0; -}; - -GR_MAKE_BITFIELD_CLASS_OPS(GrVkMemoryAllocator::AllocationPropertyFlags); - -#endif diff --git a/include/gpu/vk/GrVkTypes.h b/include/gpu/vk/GrVkTypes.h index 2e31250324..0f7ff71d2e 100644 --- a/include/gpu/vk/GrVkTypes.h +++ b/include/gpu/vk/GrVkTypes.h @@ -26,9 +26,6 @@ /////////////////////////////////////////////////////////////////////////////// - -typedef intptr_t GrVkBackendMemory; - /** * Types for interacting with Vulkan resources created externally to Skia. GrBackendObjects for * Vulkan textures are really const GrVkImageInfo* @@ -39,7 +36,6 @@ struct GrVkAlloc { , fOffset(0) , fSize(0) , fFlags(0) - , fBackendMemory(0) , fUsesSystemHeap(false) {} GrVkAlloc(VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, uint32_t flags) @@ -47,18 +43,15 @@ struct GrVkAlloc { , fOffset(offset) , fSize(size) , fFlags(flags) - , fBackendMemory(0) , fUsesSystemHeap(false) {} - VkDeviceMemory fMemory; // can be VK_NULL_HANDLE iff is an RT and is borrowed - VkDeviceSize fOffset; - VkDeviceSize fSize; // this can be indeterminate iff Tex uses borrow semantics - uint32_t fFlags; - GrVkBackendMemory fBackendMemory; // handle to memory allocated via GrVkMemoryAllocator. + VkDeviceMemory fMemory; // can be VK_NULL_HANDLE iff is an RT and is borrowed + VkDeviceSize fOffset; + VkDeviceSize fSize; // this can be indeterminate iff Tex uses borrow semantics + uint32_t fFlags; enum Flag { kNoncoherent_Flag = 0x1, // memory must be flushed to device after mapping - kMappable_Flag = 0x2, // memory is able to be mapped. }; bool operator==(const GrVkAlloc& that) const { |