Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 950d6e11 authored by Chia-I Wu's avatar Chia-I Wu
Browse files

vulkan: make debug report callbacks available in DeviceData

This allows device commands to send messages to debug report.

Bug: 28120066
Change-Id: I43d217fc23799b06fd3fda73e1876d8773c723fc
parent 2e673669
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -409,14 +409,16 @@ void FreeInstanceData(InstanceData* data,
    allocator.pfnFree(allocator.pUserData, data);
}

DeviceData* AllocateDeviceData(const VkAllocationCallbacks& allocator) {
DeviceData* AllocateDeviceData(
    const VkAllocationCallbacks& allocator,
    const DebugReportCallbackList& debug_report_callbacks) {
    void* data_mem = allocator.pfnAllocation(
        allocator.pUserData, sizeof(DeviceData), alignof(DeviceData),
        VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
    if (!data_mem)
        return nullptr;

    return new (data_mem) DeviceData(allocator);
    return new (data_mem) DeviceData(allocator, debug_report_callbacks);
}

void FreeDeviceData(DeviceData* data, const VkAllocationCallbacks& allocator) {
@@ -684,7 +686,8 @@ VkResult CreateDevice(VkPhysicalDevice physicalDevice,
    if (result != VK_SUCCESS)
        return result;

    DeviceData* data = AllocateDeviceData(data_allocator);
    DeviceData* data = AllocateDeviceData(data_allocator,
                                          instance_data.debug_report_callbacks);
    if (!data)
        return VK_ERROR_OUT_OF_HOST_MEMORY;

+7 −2
Original line number Diff line number Diff line
@@ -82,14 +82,19 @@ struct InstanceData {
};

struct DeviceData {
    DeviceData(const VkAllocationCallbacks& alloc)
        : opaque_api_data(), allocator(alloc), driver() {
    DeviceData(const VkAllocationCallbacks& alloc,
               const DebugReportCallbackList& debug_report_callbacks_)
        : opaque_api_data(),
          allocator(alloc),
          debug_report_callbacks(debug_report_callbacks_),
          driver() {
        hook_extensions.set(ProcHook::EXTENSION_CORE);
    }

    api::DeviceData opaque_api_data;

    const VkAllocationCallbacks allocator;
    const DebugReportCallbackList& debug_report_callbacks;

    std::bitset<ProcHook::EXTENSION_COUNT> hook_extensions;