A lot of files were missing copyright field in the header and
the Blender Foundation contributed to them in a sense of bug
fixing and general maintenance.
This change makes it explicit that those files are at least
partially copyrighted by the Blender Foundation.
Note that this does not make it so the Blender Foundation is
the only holder of the copyright in those files, and developers
who do not have a signed contract with the foundation still
hold the copyright as well.
Another aspect of this change is using SPDX format for the
header. We already used it for the license specification,
and now we state it for the copyright as well, following the
FAQ:
https://reuse.software/faq/
63 lines
2.1 KiB
C++
63 lines
2.1 KiB
C++
/* SPDX-FileCopyrightText: 2023 Blender Foundation
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup gpu
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "vk_common.hh"
|
|
|
|
namespace blender::gpu {
|
|
|
|
/**
|
|
* `VK_ALLOCATION_CALLBACKS` initializes allocation callbacks for host allocations.
|
|
* The macro creates a local static variable with the name `vk_allocation_callbacks`
|
|
* that can be passed to VULKAN API functions that expect
|
|
* `const VkAllocationCallbacks *pAllocator`.
|
|
*
|
|
* When Blender is compiled with `WITH_VULKAN_GUARDEDALLOC` this will use
|
|
* `MEM_guardedalloc` for host allocations that the driver does on behalf
|
|
* of blender. More internal allocations are still being allocated via the
|
|
* implementation inside the VULKAN device driver.
|
|
*
|
|
* When `WITH_VULKAN_GUARDEDALLOC=Off` the memory allocation implemented
|
|
* in the vulkan device driver is used for both internal and application
|
|
* focused memory operations.
|
|
*/
|
|
|
|
#ifdef WITH_VULKAN_GUARDEDALLOC
|
|
void *vk_memory_allocation(void *user_data,
|
|
size_t size,
|
|
size_t alignment,
|
|
VkSystemAllocationScope scope);
|
|
void *vk_memory_reallocation(
|
|
void *user_data, void *original, size_t size, size_t alignment, VkSystemAllocationScope scope);
|
|
void vk_memory_free(void *user_data, void *memory);
|
|
|
|
constexpr VkAllocationCallbacks vk_allocation_callbacks_init(const char *name)
|
|
{
|
|
VkAllocationCallbacks callbacks = {};
|
|
callbacks.pUserData = const_cast<char *>(name);
|
|
callbacks.pfnAllocation = vk_memory_allocation;
|
|
callbacks.pfnReallocation = vk_memory_reallocation;
|
|
callbacks.pfnFree = vk_memory_free;
|
|
callbacks.pfnInternalAllocation = nullptr;
|
|
callbacks.pfnInternalFree = nullptr;
|
|
return callbacks;
|
|
}
|
|
|
|
# define VK_ALLOCATION_CALLBACKS \
|
|
static constexpr const VkAllocationCallbacks vk_allocation_callbacks_ = \
|
|
vk_allocation_callbacks_init(__func__); \
|
|
static constexpr const VkAllocationCallbacks *vk_allocation_callbacks = \
|
|
&vk_allocation_callbacks_;
|
|
#else
|
|
# define VK_ALLOCATION_CALLBACKS \
|
|
static constexpr const VkAllocationCallbacks *vk_allocation_callbacks = nullptr;
|
|
#endif
|
|
|
|
} // namespace blender::gpu
|