dc22507e6fd6659c886aa1218f7681fd43b74598 |
|
31-May-2016 |
Jesse Hall <jessehall@google.com> |
libvulkan: Slightly better handling of swapchain re-creation Previously we would fail vkCreateSwapchainKHR if VkSwapchainCreateInfo::oldSwapchain was used, because we were unable to dequeue all buffers for the new swapchain from an already-used native window. Now we disconnect and re-connect to the native window in order to fully reset state, and allow us to dequeue all buffers. Additionally, we tag the old swapchain as out-of-date, so future image acquires and presents will fail with VK_ERROR_OUT_OF_DATE_KHR on that swapchain. This is less than ideal, but better than what we had, and the best we have time to do for N. Bug: 26927424 Change-Id: Ifaa5048376f72a63ecb1dca3d1ff85dbee2c24d0
/frameworks/native/vulkan/libvulkan/driver.h
|
bc011fc4d78442d1f0167b04aea3484c62e0a92b |
|
02-May-2016 |
Chia-I Wu <olv@google.com> |
vulkan: add DebugReportLogger Add DebugReportLogger that can be used during vkCreateInstance and other commands. Add vulkan::driver::Logger to create a temporary DebugReportLogger from a dispatchable object. With them, we can log to debug report by, for example, Logger(instance).Warn(obj, "failed with %s", err); Bug: 28120066 Change-Id: If059d38d3cfcfe591031ca135695d08cad42e0a4
/frameworks/native/vulkan/libvulkan/driver.h
|
950d6e1102077d6a3905eb77268800002e792fb0 |
|
03-May-2016 |
Chia-I Wu <olv@google.com> |
vulkan: make debug report callbacks available in DeviceData This allows device commands to send messages to debug report. Bug: 28120066 Change-Id: I43d217fc23799b06fd3fda73e1876d8773c723fc
/frameworks/native/vulkan/libvulkan/driver.h
|
c3a28913b6a95d2faee0db537c48557e04267511 |
|
14-Apr-2016 |
Chia-I Wu <olv@google.com> |
vulkan: deprecate device layers Allow instance layers to intercept all commands and enumerate device extensions. Ignore application device layers. Enumerate all enabled instance layers in vkEnumerateDeviceLayerProperties. Bug: 27911856 Change-Id: I6e89439ab10835dd1a43732c2333a92201e52550
/frameworks/native/vulkan/libvulkan/driver.h
|
cbe07ef239121dc99a31a19b9593d76d76abb08b |
|
13-Apr-2016 |
Chia-I Wu <olv@google.com> |
vulkan: pass hal_extensions to InitDriverTable We only need hal_extensions to initialize the driver tables. There is no need to save it in driver::{Instance,Device}Data. Change-Id: I56ebc0ee9c5bc5e543e7a84412b03b842bd8ced5
/frameworks/native/vulkan/libvulkan/driver.h
|
94a2c0ecd4537c52e6b4a3ef9d119dce44627ca8 |
|
13-Apr-2016 |
Chia-I Wu <olv@google.com> |
vulkan: pass VK_LAYER_FUNCTION_DATA_CALLBACK to layers VK_LAYER_FUNCTION_DATA_CALLBACK effectively allows us to pass driver::SetDataInternal to layers. It will be called on handles of potentially unknown types. Add two internal types VK_DEFINE_HANDLE(InstanceDispatchable) VK_DEFINE_HANDLE(DeviceDispatchable) in driver namespace for type safety. Bug: 28015368 Change-Id: I7389829a7d8c374197cd7046973777b49e436961
/frameworks/native/vulkan/libvulkan/driver.h
|
4a6a91647c57abb5c06cde57c57afe944f8cefa4 |
|
26-Mar-2016 |
Chia-I Wu <olv@google.com> |
vulkan: use driver::GetData everywhere Move away from the one-liners defined in loader.cpp. Change-Id: I73c39cbe21aa3b2079f67590bb40f0cd55563f84
/frameworks/native/vulkan/libvulkan/driver.h
|
ff4a6c772aaf3ff0b71348647330031a059b1f51 |
|
24-Mar-2016 |
Chia-I Wu <olv@google.com> |
vulkan: rework CreateInstance_Bottom and related ones The reworked driver::CreateInstance will - call HAL's EnumerateInstanceExtensionProperties and filter out extensions unknown to HAL, if there is any extension enabled. We do not expect or enumerate any HAL layer yet as that requires some works to layers_extensions.cpp. The reworked driver::EnumerateInstanceExtensionProperties instead will return all extensions enumerated by HAL, after prepending VK_KHR_surface and VK_KHR_android_surface to them. This allows extensions unknown to the loader to be enumerated. Change-Id: I73b496582a773e06c7b79f0c5c166700737f2953
/frameworks/native/vulkan/libvulkan/driver.h
|
01cf305325f3789c573d7eff435e409f04677c66 |
|
24-Mar-2016 |
Chia-I Wu <olv@google.com> |
vulkan: rework EnumerateDeviceExtensionProperties_Bottom The reworked driver::EnumerateDeviceExtensionProperties will simply return all extensions enumerated by HAL, with VK_ANDROID_native_buffer replaced by VK_KHR_swapchain. This allows extensions unknown to the loader to be enumerated. Change-Id: Iceed8ee3f16a968d005ae3ba42f1bd1839c2ab9f
/frameworks/native/vulkan/libvulkan/driver.h
|
4901db70b12801cf1966937a58eb7566bfdeb4ce |
|
24-Mar-2016 |
Chia-I Wu <olv@google.com> |
vulkan: rework {Create,Destroy}Device_Bottom The reworked driver::CreateDevice will - use the providied pAllocator, - call HAL's EnumerateDeviceExtensionProperties and filter out extensions unknown to HAL, if there is any extension enabled. We do not expect or enumerate any HAL layer yet as that requires some works to layers_extensions.cpp. Change-Id: I3ba4019d18dfed994d7037d95825bf54096f2a5d
/frameworks/native/vulkan/libvulkan/driver.h
|
6a58a8a7813450038cb15575e3333b83f268c972 |
|
24-Mar-2016 |
Chia-I Wu <olv@google.com> |
vulkan: move AllocateCommandBuffers_Bottom Move it from loader.cpp to driver.cpp and rename it to driver::AllocateCommandBuffers. No functional change. Change-Id: I0abdca7dea128df0b313b90cfb5d5825566fc790
/frameworks/native/vulkan/libvulkan/driver.h
|
ba0be41afe39dcbed0a712a32d1ab6c341797007 |
|
24-Mar-2016 |
Chia-I Wu <olv@google.com> |
vulkan: move GetDeviceQueue_Bottom Move it from loader.cpp to driver.cpp and rename it to driver::GetDeviceQueue. No functional change. Change-Id: Ide8ebe044e62b8ef6fc64ac03dcc1d920f5bf9a6
/frameworks/native/vulkan/libvulkan/driver.h
|
cc5e2765a9d56b03b69d0c3f25b94721f82d034e |
|
24-Mar-2016 |
Chia-I Wu <olv@google.com> |
vulkan: rework DriverDispatchTable Generate {Instance,Device}DriverTable from code-generator.tmpl to replace dispatch.tmpl entirely. The new code avoids initializing VK_ANDROID_native_buffer entries when the extension is not enabled. The separation of instance and device driver tables also allows us to initialize the device driver table with vkGetDeviceProcAddr, which is expected to return more efficient function pointers on properly implemented HALs. CreateInstance_Bottom always has a potential resource leak when the HAL-created instance does not contain HWVULKAN_DISPATCH_MAGIC. CreateDevice_Bottom now has the same issue. Both of them will be fixed in following commits. Change-Id: If7800ef23098121f1fff643a2c5224c2c9be0711
/frameworks/native/vulkan/libvulkan/driver.h
|
eb7db124e46da9a9210cf868353f5ea79502ffec |
|
24-Mar-2016 |
Chia-I Wu <olv@google.com> |
vulkan: rework driver::Get*ProcAddr Introduce driver::ProcHook which is a struct to describe an intercepted function. Given a function name, GetProcHook returns a ProcHook if the function is intercepted. NULL otherwise. A ProcHook has three function pointers. ProcHook::proc points to the real intercepting function. ProcHook::disabled_proc points to a no-op function that logs an error. ProcHook::checked_proc points to a trampoline that calls either ProcHook::proc or ProcHook::disabled_proc. For core functions, driver::Get*ProcAddr simply return ProcHook::proc. For extension functions, driver::Get*ProcAddr return ProcHook::proc when the extension is known to be enabled. They return ProcHook::disabled_proc when the extension is known to be disabled. Finally, they return ProcHook::checked_proc when they do not know if the extension is enabled or not. All ProcHooks as well as their disabled_proc/checked_proc are generated in driver_gen.cpp. This allows us to get rid of all hand-written "_Disabled" functions, all no-op "_Bottom" functions, and special cases for VK_ANDROID_native_buffer. The reworked driver::Get*ProcAddr also detects more applications' errors and logs them. Change-Id: I8e6f476f450688b5547fd75243c66cb603c516b5
/frameworks/native/vulkan/libvulkan/driver.h
|
0c2032490b80178ec823bf22a7f5d08398851cc3 |
|
15-Mar-2016 |
Chia-I Wu <olv@google.com> |
vulkan: rewrite top of loader The top is responsible for layer discovery and chaining, and the bottom is like a regular layer that is always enabled and is inserted just before the driver. Make the separation clear by rewriting the top and stripping the layer managment code from loader.cpp. Change-Id: I64e525e27bd4c297bccd94a1eb9b88e28088e85d
/frameworks/native/vulkan/libvulkan/driver.h
|