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 Original line Diff line number Diff line
@@ -409,14 +409,16 @@ void FreeInstanceData(InstanceData* data,
    allocator.pfnFree(allocator.pUserData, 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(
    void* data_mem = allocator.pfnAllocation(
        allocator.pUserData, sizeof(DeviceData), alignof(DeviceData),
        allocator.pUserData, sizeof(DeviceData), alignof(DeviceData),
        VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
        VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
    if (!data_mem)
    if (!data_mem)
        return nullptr;
        return nullptr;


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


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


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


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


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


    api::DeviceData opaque_api_data;
    api::DeviceData opaque_api_data;


    const VkAllocationCallbacks allocator;
    const VkAllocationCallbacks allocator;
    const DebugReportCallbackList& debug_report_callbacks;


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