OSDN Git Service

vulkan: make debug report callbacks available in DeviceData
authorChia-I Wu <olv@google.com>
Tue, 3 May 2016 01:12:35 +0000 (09:12 +0800)
committerChia-I Wu <olv@google.com>
Fri, 6 May 2016 01:31:36 +0000 (09:31 +0800)
This allows device commands to send messages to debug report.

Bug: 28120066
Change-Id: I43d217fc23799b06fd3fda73e1876d8773c723fc

vulkan/libvulkan/driver.cpp
vulkan/libvulkan/driver.h

index b02f5b4..7238fde 100644 (file)
@@ -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;
 
index 2b1f545..9a3c141 100644 (file)
@@ -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;