Hello community, here is the log from the commit of package vulkan-tools for openSUSE:Factory checked in at 2020-08-29 20:40:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/vulkan-tools (Old) and /work/SRC/openSUSE:Factory/.vulkan-tools.new.3399 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vulkan-tools" Sat Aug 29 20:40:23 2020 rev:22 rq:830117 version:1.2.151 Changes: -------- --- /work/SRC/openSUSE:Factory/vulkan-tools/vulkan-tools.changes 2020-08-12 12:29:42.888189965 +0200 +++ /work/SRC/openSUSE:Factory/.vulkan-tools.new.3399/vulkan-tools.changes 2020-08-29 20:40:45.705425365 +0200 @@ -1,0 +2,8 @@ +Wed Aug 19 07:32:08 UTC 2020 - Jan Engelhardt <[email protected]> + +- Update to release 1.2.151 + * vulkaninfo: fix device ext list having bad items + * vulkaninfo: add `--summary` option that shows basic system info + * Add support for VK_EXT_directfb_surface extension + +------------------------------------------------------------------- Old: ---- v1.2.148.tar.gz New: ---- v1.2.151.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ vulkan-tools.spec ++++++ --- /var/tmp/diff_new_pack.p8AJae/_old 2020-08-29 20:40:46.593425735 +0200 +++ /var/tmp/diff_new_pack.p8AJae/_new 2020-08-29 20:40:46.593425735 +0200 @@ -17,7 +17,7 @@ Name: vulkan-tools -Version: 1.2.148 +Version: 1.2.151 Release: 0 Summary: Diagnostic utilities for Vulkan License: Apache-2.0 ++++++ v1.2.148.tar.gz -> v1.2.151.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/BUILD.md new/Vulkan-Tools-1.2.151/BUILD.md --- old/Vulkan-Tools-1.2.148/BUILD.md 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/BUILD.md 2020-08-18 05:43:44.000000000 +0200 @@ -205,6 +205,7 @@ | BUILD_WSI_XCB_SUPPORT | Linux | `ON` | Build the components with XCB support. | | BUILD_WSI_XLIB_SUPPORT | Linux | `ON` | Build the components with Xlib support. | | BUILD_WSI_WAYLAND_SUPPORT | Linux | `ON` | Build the components with Wayland support. | +| BUILD_WSI_DIRECTFB_SUPPORT | Linux | `OFF` | Build the components with DirectFB support. | | USE_CCACHE | Linux | `OFF` | Enable caching with the CCache program. | The following is a table of all string options currently supported by this repository: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/build-android/vulkan-headers_revision_android new/Vulkan-Tools-1.2.151/build-android/vulkan-headers_revision_android --- old/Vulkan-Tools-1.2.148/build-android/vulkan-headers_revision_android 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/build-android/vulkan-headers_revision_android 2020-08-18 05:43:44.000000000 +0200 @@ -1 +1 @@ -v1.2.148 +v1.2.151 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/cmake/FindDirectFB.cmake new/Vulkan-Tools-1.2.151/cmake/FindDirectFB.cmake --- old/Vulkan-Tools-1.2.148/cmake/FindDirectFB.cmake 1970-01-01 01:00:00.000000000 +0100 +++ new/Vulkan-Tools-1.2.151/cmake/FindDirectFB.cmake 2020-08-18 05:43:44.000000000 +0200 @@ -0,0 +1,28 @@ +# Try to find DirectFB +# +# This will define: +# +# DIRECTFB_FOUND - True if DirectFB is found +# DIRECTFB_LIBRARIES - Link these to use DirectFB +# DIRECTFB_INCLUDE_DIR - Include directory for DirectFB +# DIRECTFB_DEFINITIONS - Compiler flags for using DirectFB +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +IF (NOT WIN32) + FIND_PACKAGE(PkgConfig) + PKG_CHECK_MODULES(PKG_DIRECTFB QUIET directfb) + + SET(DIRECTFB_DEFINITIONS ${PKG_DIRECTFB_CFLAGS}) + + FIND_PATH(DIRECTFB_INCLUDE_DIR NAMES directfb.h HINTS ${PKG_DIRECTFB_INCLUDE_DIRS}) + + FIND_LIBRARY(DIRECTFB_LIBRARIES NAMES directfb HINTS ${PKG_DIRECTFB_LIBRARY_DIRS}) + + include(FindPackageHandleStandardArgs) + + FIND_PACKAGE_HANDLE_STANDARD_ARGS(DIRECTFB DEFAULT_MSG DIRECTFB_LIBRARIES DIRECTFB_INCLUDE_DIR) + + MARK_AS_ADVANCED(DIRECTFB_INCLUDE_DIR DIRECTFB_LIBRARIES) +ENDIF () diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/cube/CMakeLists.txt new/Vulkan-Tools-1.2.151/cube/CMakeLists.txt --- old/Vulkan-Tools-1.2.148/cube/CMakeLists.txt 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/cube/CMakeLists.txt 2020-08-18 05:43:44.000000000 +0200 @@ -46,7 +46,8 @@ option(BUILD_WSI_XCB_SUPPORT "Build XCB WSI support" ON) option(BUILD_WSI_XLIB_SUPPORT "Build Xlib WSI support" ON) option(BUILD_WSI_WAYLAND_SUPPORT "Build Wayland WSI support" ON) - set(CUBE_WSI_SELECTION "XCB" CACHE STRING "Select WSI target for vkcube (XCB, XLIB, WAYLAND, DISPLAY)") + option(BUILD_WSI_DIRECTFB_SUPPORT "Build DirectFB WSI support" OFF) + set(CUBE_WSI_SELECTION "XCB" CACHE STRING "Select WSI target for vkcube (XCB, XLIB, WAYLAND, DIRECTFB, DISPLAY)") if(BUILD_WSI_XCB_SUPPORT) find_package(XCB REQUIRED) @@ -60,6 +61,11 @@ find_package(Wayland REQUIRED) include_directories(${WAYLAND_CLIENT_INCLUDE_DIR}) endif() + + if(BUILD_WSI_DIRECTFB_SUPPORT) + find_package(DirectFB REQUIRED) + include_directories(${DIRECTFB_INCLUDE_DIR}) + endif() endif() if(WIN32) @@ -101,6 +107,13 @@ set(CUBE_INCLUDE_DIRS ${WAYLAND_CLIENT_INCLUDE_DIR} ${CUBE_INCLUDE_DIRS}) link_libraries(${WAYLAND_CLIENT_LIBRARIES}) add_definitions(-DVK_USE_PLATFORM_WAYLAND_KHR) + elseif(CUBE_WSI_SELECTION STREQUAL "DIRECTFB") + if(NOT BUILD_WSI_DIRECTFB_SUPPORT) + message(FATAL_ERROR "Selected DIRECTFB for vkcube build but not building DirectFB support") + endif() + set(CUBE_INCLUDE_DIRS ${DIRECTFB_INCLUDE_DIR} ${CUBE_INCLUDE_DIRS}) + link_libraries(${DIRECTFB_LIBRARIES}) + add_definitions(-DVK_USE_PLATFORM_DIRECTFB_EXT) elseif(CUBE_WSI_SELECTION STREQUAL "DISPLAY") add_definitions(-DVK_USE_PLATFORM_DISPLAY_KHR) else() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/cube/cube.c new/Vulkan-Tools-1.2.151/cube/cube.c --- old/Vulkan-Tools-1.2.148/cube/cube.c 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/cube/cube.c 2020-08-18 05:43:44.000000000 +0200 @@ -327,6 +327,10 @@ struct wl_seat *seat; struct wl_pointer *pointer; struct wl_keyboard *keyboard; +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + IDirectFB *dfb; + IDirectFBSurface *window; + IDirectFBEventBuffer *event_buffer; #elif defined(VK_USE_PLATFORM_ANDROID_KHR) struct ANativeWindow *window; #elif defined(VK_USE_PLATFORM_METAL_EXT) @@ -2367,6 +2371,10 @@ wl_compositor_destroy(demo->compositor); wl_registry_destroy(demo->registry); wl_display_disconnect(demo->display); +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + demo->event_buffer->Release(demo->event_buffer); + demo->window->Release(demo->window); + demo->dfb->Release(demo->dfb); #endif vkDestroyInstance(demo->inst, NULL); @@ -2769,6 +2777,80 @@ wl_shell_surface_set_toplevel(demo->shell_surface); wl_shell_surface_set_title(demo->shell_surface, APP_SHORT_NAME); } +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) +static void demo_create_directfb_window(struct demo *demo) { + DFBResult ret; + + ret = DirectFBInit(NULL, NULL); + if (ret) { + printf("DirectFBInit failed to initialize DirectFB!\n"); + fflush(stdout); + exit(1); + } + + ret = DirectFBCreate(&demo->dfb); + if (ret) { + printf("DirectFBCreate failed to create main interface of DirectFB!\n"); + fflush(stdout); + exit(1); + } + + DFBSurfaceDescription desc; + desc.flags = DSDESC_CAPS | DSDESC_WIDTH | DSDESC_HEIGHT; + desc.caps = DSCAPS_PRIMARY; + desc.width = demo->width; + desc.height = demo->height; + ret = demo->dfb->CreateSurface(demo->dfb, &desc, &demo->window); + if (ret) { + printf("CreateSurface failed to create DirectFB surface interface!\n"); + fflush(stdout); + exit(1); + } + + ret = demo->dfb->CreateInputEventBuffer(demo->dfb, DICAPS_KEYS, DFB_FALSE, &demo->event_buffer); + if (ret) { + printf("CreateInputEventBuffer failed to create DirectFB event buffer interface!\n"); + fflush(stdout); + exit(1); + } +} + +static void demo_handle_directfb_event(struct demo *demo, const DFBInputEvent *event) { + if (event->type != DIET_KEYPRESS) return; + switch (event->key_symbol) { + case DIKS_ESCAPE: // Escape + demo->quit = true; + break; + case DIKS_CURSOR_LEFT: // left arrow key + demo->spin_angle -= demo->spin_increment; + break; + case DIKS_CURSOR_RIGHT: // right arrow key + demo->spin_angle += demo->spin_increment; + break; + case DIKS_SPACE: // space bar + demo->pause = !demo->pause; + break; + default: + break; + } +} + +static void demo_run_directfb(struct demo *demo) { + while (!demo->quit) { + DFBInputEvent event; + + if (demo->pause) { + demo->event_buffer->WaitForEvent(demo->event_buffer); + if (!demo->event_buffer->GetEvent(demo->event_buffer, DFB_EVENT(&event))) demo_handle_directfb_event(demo, &event); + } else { + if (!demo->event_buffer->GetEvent(demo->event_buffer, DFB_EVENT(&event))) demo_handle_directfb_event(demo, &event); + + demo_draw(demo); + demo->curFrame++; + if (demo->frameCount != INT32_MAX && demo->curFrame == demo->frameCount) demo->quit = true; + } + } +} #elif defined(VK_USE_PLATFORM_ANDROID_KHR) static void demo_run(struct demo *demo) { if (!demo->prepared) return; @@ -3031,6 +3113,11 @@ platformSurfaceExtFound = 1; demo->extension_names[demo->enabled_extension_count++] = VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME; } +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + if (!strcmp(VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME, instance_extensions[i].extensionName)) { + platformSurfaceExtFound = 1; + demo->extension_names[demo->enabled_extension_count++] = VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME; + } #elif defined(VK_USE_PLATFORM_DISPLAY_KHR) if (!strcmp(VK_KHR_DISPLAY_EXTENSION_NAME, instance_extensions[i].extensionName)) { platformSurfaceExtFound = 1; @@ -3108,6 +3195,12 @@ "Do you have a compatible Vulkan installable client driver (ICD) installed?\n" "Please look at the Getting Started guide for additional information.\n", "vkCreateInstance Failure"); +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + ERR_EXIT("vkEnumerateInstanceExtensionProperties failed to find the " VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME + " extension.\n\n" + "Do you have a compatible Vulkan installable client driver (ICD) installed?\n" + "Please look at the Getting Started guide for additional information.\n", + "vkCreateInstance Failure"); #endif } const VkApplicationInfo app = { @@ -3405,6 +3498,15 @@ createInfo.window = demo->xcb_window; err = vkCreateXcbSurfaceKHR(demo->inst, &createInfo, NULL, &demo->surface); +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + VkDirectFBSurfaceCreateInfoEXT createInfo; + createInfo.sType = VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT; + createInfo.pNext = NULL; + createInfo.flags = 0; + createInfo.dfb = demo->dfb; + createInfo.surface = demo->window; + + err = vkCreateDirectFBSurfaceEXT(demo->inst, &createInfo, NULL, &demo->surface); #elif defined(VK_USE_PLATFORM_DISPLAY_KHR) err = demo_create_display_surface(demo); #elif defined(VK_USE_PLATFORM_METAL_EXT) @@ -4014,6 +4116,8 @@ demo_create_xlib_window(&demo); #elif defined(VK_USE_PLATFORM_WAYLAND_KHR) demo_create_window(&demo); +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + demo_create_directfb_window(&demo); #endif demo_init_vk_swapchain(&demo); @@ -4026,6 +4130,8 @@ demo_run_xlib(&demo); #elif defined(VK_USE_PLATFORM_WAYLAND_KHR) demo_run(&demo); +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + demo_run_directfb(&demo); #elif defined(VK_USE_PLATFORM_DISPLAY_KHR) demo_run_display(&demo); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/cube/cube.cpp new/Vulkan-Tools-1.2.151/cube/cube.cpp --- old/Vulkan-Tools-1.2.148/cube/cube.cpp 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/cube/cube.cpp 2020-08-18 05:43:44.000000000 +0200 @@ -263,6 +263,10 @@ #elif defined(VK_USE_PLATFORM_WAYLAND_KHR) void run(); void create_window(); +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + void handle_directfb_event(const DFBInputEvent *); + void run_directfb(); + void create_directfb_window(); #elif defined(VK_USE_PLATFORM_METAL_EXT) void run(); #elif defined(VK_USE_PLATFORM_DISPLAY_KHR) @@ -294,6 +298,10 @@ wl_seat *seat; wl_pointer *pointer; wl_keyboard *keyboard; +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + IDirectFB *dfb; + IDirectFBSurface *window; + IDirectFBEventBuffer *event_buffer; #elif defined(VK_USE_PLATFORM_METAL_EXT) void *caMetalLayer; #endif @@ -531,6 +539,10 @@ seat{nullptr}, pointer{nullptr}, keyboard{nullptr}, +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + dfb{nullptr}, + window{nullptr}, + event_buffer{nullptr}, #endif prepared{false}, use_staging_buffer{false}, @@ -677,6 +689,10 @@ wl_compositor_destroy(compositor); wl_registry_destroy(registry); wl_display_disconnect(display); +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + event_buffer->Release(event_buffer); + window->Release(window); + dfb->Release(dfb); #endif inst.destroy(nullptr); @@ -1118,6 +1134,11 @@ platformSurfaceExtFound = 1; extension_names[enabled_extension_count++] = VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME; } +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + if (!strcmp(VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME, instance_extensions[i].extensionName)) { + platformSurfaceExtFound = 1; + extension_names[enabled_extension_count++] = VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME; + } #elif defined(VK_USE_PLATFORM_DISPLAY_KHR) if (!strcmp(VK_KHR_DISPLAY_EXTENSION_NAME, instance_extensions[i].extensionName)) { platformSurfaceExtFound = 1; @@ -1167,6 +1188,12 @@ "Do you have a compatible Vulkan installable client driver (ICD) installed?\n" "Please look at the Getting Started guide for additional information.\n", "vkCreateInstance Failure"); +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + ERR_EXIT("vkEnumerateInstanceExtensionProperties failed to find the " VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME + " extension.\n\n" + "Do you have a compatible Vulkan installable client driver (ICD) installed?\n" + "Please look at the Getting Started guide for additional information.\n", + "vkCreateInstance Failure"); #elif defined(VK_USE_PLATFORM_DISPLAY_KHR) ERR_EXIT("vkEnumerateInstanceExtensionProperties failed to find the " VK_KHR_DISPLAY_EXTENSION_NAME " extension.\n\n" @@ -1315,6 +1342,13 @@ auto result = inst.createXcbSurfaceKHR(&createInfo, nullptr, &surface); VERIFY(result == vk::Result::eSuccess); } +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + { + auto const createInfo = vk::DirectFBSurfaceCreateInfoEXT().setDfb(dfb).setSurface(window); + + auto result = inst.createDirectFBSurfaceEXT(&createInfo, nullptr, &surface); + VERIFY(result == vk::Result::eSuccess); + } #elif defined(VK_USE_PLATFORM_METAL_EXT) { auto const createInfo = vk::MetalSurfaceCreateInfoEXT().setPLayer(static_cast<CAMetalLayer *>(caMetalLayer)); @@ -2711,6 +2745,83 @@ wl_shell_surface_set_toplevel(shell_surface); wl_shell_surface_set_title(shell_surface, APP_SHORT_NAME); } +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + +void Demo::handle_directfb_event(const DFBInputEvent *event) { + if (event->type != DIET_KEYPRESS) return; + switch (event->key_symbol) { + case DIKS_ESCAPE: // Escape + quit = true; + break; + case DIKS_CURSOR_LEFT: // left arrow key + spin_angle -= spin_increment; + break; + case DIKS_CURSOR_RIGHT: // right arrow key + spin_angle += spin_increment; + break; + case DIKS_SPACE: // space bar + pause = !pause; + break; + default: + break; + } +} + +void Demo::run_directfb() { + while (!quit) { + DFBInputEvent event; + + if (pause) { + event_buffer->WaitForEvent(event_buffer); + if (!event_buffer->GetEvent(event_buffer, DFB_EVENT(&event))) handle_directfb_event(&event); + } else { + if (!event_buffer->GetEvent(event_buffer, DFB_EVENT(&event))) handle_directfb_event(&event); + + draw(); + curFrame++; + if (frameCount != UINT32_MAX && curFrame == frameCount) { + quit = true; + } + } + } +} + +void Demo::create_directfb_window() { + DFBResult ret; + + ret = DirectFBInit(NULL, NULL); + if (ret) { + printf("DirectFBInit failed to initialize DirectFB!\n"); + fflush(stdout); + exit(1); + } + + ret = DirectFBCreate(&dfb); + if (ret) { + printf("DirectFBCreate failed to create main interface of DirectFB!\n"); + fflush(stdout); + exit(1); + } + + DFBSurfaceDescription desc; + desc.flags = (DFBSurfaceDescriptionFlags)(DSDESC_CAPS | DSDESC_WIDTH | DSDESC_HEIGHT); + desc.caps = DSCAPS_PRIMARY; + desc.width = width; + desc.height = height; + ret = dfb->CreateSurface(dfb, &desc, &window); + if (ret) { + printf("CreateSurface failed to create DirectFB surface interface!\n"); + fflush(stdout); + exit(1); + } + + ret = dfb->CreateInputEventBuffer(dfb, DICAPS_KEYS, DFB_FALSE, &event_buffer); + if (ret) { + printf("CreateInputEventBuffer failed to create DirectFB event buffer interface!\n"); + fflush(stdout); + exit(1); + } +} #elif defined(VK_USE_PLATFORM_METAL_EXT) void Demo::run() { draw(); @@ -3024,6 +3135,8 @@ demo.create_xlib_window(); #elif defined(VK_USE_PLATFORM_WAYLAND_KHR) demo.create_window(); +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + demo.create_directfb_window(); #endif demo.init_vk_swapchain(); @@ -3036,6 +3149,8 @@ demo.run_xlib(); #elif defined(VK_USE_PLATFORM_WAYLAND_KHR) demo.run(); +#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) + demo.run_directfb(); #elif defined(VK_USE_PLATFORM_DISPLAY_KHR) demo.run_display(); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/icd/generated/mock_icd.cpp new/Vulkan-Tools-1.2.151/icd/generated/mock_icd.cpp --- old/Vulkan-Tools-1.2.148/icd/generated/mock_icd.cpp 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/icd/generated/mock_icd.cpp 2020-08-18 05:43:44.000000000 +0200 @@ -4643,6 +4643,7 @@ + #ifdef VK_USE_PLATFORM_DIRECTFB_EXT static VKAPI_ATTR VkResult VKAPI_CALL CreateDirectFBSurfaceEXT( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/icd/generated/mock_icd.h new/Vulkan-Tools-1.2.151/icd/generated/mock_icd.h --- old/Vulkan-Tools-1.2.148/icd/generated/mock_icd.h 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/icd/generated/mock_icd.h 2020-08-18 05:43:44.000000000 +0200 @@ -73,13 +73,13 @@ {"VK_KHR_external_fence_capabilities", 1}, {"VK_KHR_get_surface_capabilities2", 1}, {"VK_KHR_get_display_properties2", 1}, - {"VK_MVK_ios_surface", 2}, - {"VK_MVK_macos_surface", 2}, + {"VK_MVK_ios_surface", 3}, + {"VK_MVK_macos_surface", 3}, {"VK_EXT_debug_utils", 2}, {"VK_FUCHSIA_imagepipe_surface", 1}, {"VK_EXT_metal_surface", 1}, {"VK_KHR_surface_protected_capabilities", 1}, - {"VK_EXT_validation_features", 3}, + {"VK_EXT_validation_features", 4}, {"VK_EXT_headless_surface", 1}, {"VK_EXT_directfb_surface", 1}, }; @@ -262,6 +262,7 @@ {"VK_QCOM_render_pass_store_ops", 2}, {"VK_EXT_fragment_density_map2", 1}, {"VK_EXT_image_robustness", 1}, + {"VK_EXT_4444_formats", 1}, }; @@ -2826,6 +2827,7 @@ + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/icd/generated/vk_typemap_helper.h new/Vulkan-Tools-1.2.151/icd/generated/vk_typemap_helper.h --- old/Vulkan-Tools-1.2.148/icd/generated/vk_typemap_helper.h 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/icd/generated/vk_typemap_helper.h 2020-08-18 05:43:44.000000000 +0200 @@ -3895,6 +3895,15 @@ typedef VkPhysicalDeviceImageRobustnessFeaturesEXT Type; }; +// Map type VkPhysicalDevice4444FormatsFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT +template <> struct LvlTypeMap<VkPhysicalDevice4444FormatsFeaturesEXT> { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT; +}; + +template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT> { + typedef VkPhysicalDevice4444FormatsFeaturesEXT Type; +}; + #ifdef VK_USE_PLATFORM_DIRECTFB_EXT // Map type VkDirectFBSurfaceCreateInfoEXT to id VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT template <> struct LvlTypeMap<VkDirectFBSurfaceCreateInfoEXT> { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/scripts/known_good.json new/Vulkan-Tools-1.2.151/scripts/known_good.json --- old/Vulkan-Tools-1.2.148/scripts/known_good.json 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/scripts/known_good.json 2020-08-18 05:43:44.000000000 +0200 @@ -6,7 +6,7 @@ "sub_dir" : "Vulkan-Headers", "build_dir" : "Vulkan-Headers/build", "install_dir" : "Vulkan-Headers/build/install", - "commit" : "v1.2.148" + "commit" : "v1.2.151" }, { "name" : "MoltenVK", @@ -14,10 +14,10 @@ "sub_dir" : "MoltenVK", "build_dir" : "MoltenVK", "install_dir" : "MoltenVK", - "commit" : "v.1.0.43", + "commit" : "v1.0.44", "custom_build" : [ - "./fetchDependencies", - "xcodebuild -project MoltenVKPackaging.xcodeproj GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS MVK_CONFIG_LOG_LEVEL=1' -scheme \"MoltenVK Package\" build" + "./fetchDependencies --macos --no-parallel-build", + "xcodebuild -project MoltenVKPackaging.xcodeproj GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS MVK_CONFIG_LOG_LEVEL=1' -scheme \"MoltenVK Package (macOS only)\" build" ], "build_step" : "custom", "build_platforms" : [ @@ -30,7 +30,7 @@ "sub_dir" : "Vulkan-Loader", "build_dir" : "Vulkan-Loader/build", "install_dir" : "Vulkan-Loader/build/install", - "commit" : "v1.2.148", + "commit" : "v1.2.151", "deps" : [ { "var_name" : "VULKAN_HEADERS_INSTALL_DIR", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/vulkaninfo/CMakeLists.txt new/Vulkan-Tools-1.2.151/vulkaninfo/CMakeLists.txt --- old/Vulkan-Tools-1.2.148/vulkaninfo/CMakeLists.txt 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/vulkaninfo/CMakeLists.txt 2020-08-18 05:43:44.000000000 +0200 @@ -40,6 +40,7 @@ option(BUILD_WSI_XCB_SUPPORT "Build XCB WSI support" ON) option(BUILD_WSI_XLIB_SUPPORT "Build Xlib WSI support" ON) option(BUILD_WSI_WAYLAND_SUPPORT "Build Wayland WSI support" ON) + option(BUILD_WSI_DIRECTFB_SUPPORT "Build DirectFB WSI support" OFF) if(BUILD_WSI_XCB_SUPPORT) find_package(XCB REQUIRED) @@ -61,6 +62,13 @@ target_link_libraries(vulkaninfo ${WAYLAND_CLIENT_LIBRARIES}) target_compile_definitions(vulkaninfo PRIVATE -DVK_USE_PLATFORM_WAYLAND_KHR -DVK_NO_PROTOTYPES) endif() + + if(BUILD_WSI_DIRECTFB_SUPPORT) + find_package(DirectFB REQUIRED) + target_include_directories(vulkaninfo PRIVATE ${DIRECTFB_INCLUDE_DIR}) + target_link_libraries(vulkaninfo ${DIRECTFB_LIBRARIES}) + target_compile_definitions(vulkaninfo PRIVATE -DVK_USE_PLATFORM_DIRECTFB_EXT -DVK_NO_PROTOTYPES) + endif() endif() if(APPLE) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/vulkaninfo/generated/vulkaninfo.hpp new/Vulkan-Tools-1.2.151/vulkaninfo/generated/vulkaninfo.hpp --- old/Vulkan-Tools-1.2.148/vulkaninfo/generated/vulkaninfo.hpp 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/vulkaninfo/generated/vulkaninfo.hpp 2020-08-18 05:43:44.000000000 +0200 @@ -346,6 +346,8 @@ case (1000066011): return "FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT"; case (1000066012): return "FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT"; case (1000066013): return "FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT"; + case (1000340000): return "FORMAT_A4R4G4B4_UNORM_PACK16_EXT"; + case (1000340001): return "FORMAT_A4B4G4R4_UNORM_PACK16_EXT"; default: return "UNKNOWN_VkFormat"; } } @@ -960,6 +962,11 @@ p.PrintKeyBool("storagePushConstant16", static_cast<bool>(obj.storagePushConstant16), 34); p.PrintKeyBool("storageInputOutput16", static_cast<bool>(obj.storageInputOutput16), 34); } +void DumpVkPhysicalDevice4444FormatsFeaturesEXT(Printer &p, std::string name, VkPhysicalDevice4444FormatsFeaturesEXT &obj) { + ObjectWrapper object{p, name}; + p.PrintKeyBool("formatA4R4G4B4", static_cast<bool>(obj.formatA4R4G4B4), 14); + p.PrintKeyBool("formatA4B4G4R4", static_cast<bool>(obj.formatA4B4G4R4), 14); +} void DumpVkPhysicalDevice8BitStorageFeatures(Printer &p, std::string name, VkPhysicalDevice8BitStorageFeatures &obj) { ObjectWrapper object{p, name}; p.PrintKeyBool("storageBuffer8BitAccess", static_cast<bool>(obj.storageBuffer8BitAccess), 33); @@ -1924,6 +1931,7 @@ }; infos.phys_device_features2 = { {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, sizeof(VkPhysicalDevice16BitStorageFeatures)}, + {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT, sizeof(VkPhysicalDevice4444FormatsFeaturesEXT)}, {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, sizeof(VkPhysicalDevice8BitStorageFeatures)}, {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, sizeof(VkPhysicalDeviceASTCDecodeFeaturesEXT)}, {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, sizeof(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT)}, @@ -2230,6 +2238,12 @@ DumpVkPhysicalDevice16BitStorageFeatures(p, version.minor >= 1 ?"VkPhysicalDevice16BitStorageFeatures":"VkPhysicalDevice16BitStorageFeaturesKHR", *props); p.AddNewline(); } + if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT && + (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_4444_FORMATS_EXTENSION_NAME))) { + VkPhysicalDevice4444FormatsFeaturesEXT* props = (VkPhysicalDevice4444FormatsFeaturesEXT*)structure; + DumpVkPhysicalDevice4444FormatsFeaturesEXT(p, "VkPhysicalDevice4444FormatsFeaturesEXT", *props); + p.AddNewline(); + } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES && (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_8BIT_STORAGE_EXTENSION_NAME) || version.minor >= 2)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/vulkaninfo/vulkaninfo.cpp new/Vulkan-Tools-1.2.151/vulkaninfo/vulkaninfo.cpp --- old/Vulkan-Tools-1.2.148/vulkaninfo/vulkaninfo.cpp 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/vulkaninfo/vulkaninfo.cpp 2020-08-18 05:43:44.000000000 +0200 @@ -43,31 +43,29 @@ // =========== Dump Functions ========= // -void DumpExtensions(Printer &p, std::string layer_name, std::vector<VkExtensionProperties> extensions) { +void DumpExtensions(Printer &p, std::string layer_name, std::vector<VkExtensionProperties> extensions, bool do_indent) { std::sort(extensions.begin(), extensions.end(), [](VkExtensionProperties &a, VkExtensionProperties &b) -> int { return std::string(a.extensionName) < std::string(b.extensionName); }); - int max_length = 0; - if (extensions.size() > 0) { - max_length = static_cast<int>(strlen(extensions.at(0).extensionName)); - for (auto &ext : extensions) { - int len = static_cast<int>(strlen(ext.extensionName)); - if (len > max_length) max_length = len; - } + size_t max_length = 0; + for (const auto &ext : extensions) { + max_length = std::max(max_length, std::strlen(ext.extensionName)); } ObjectWrapper obj(p, layer_name + " Extensions", extensions.size()); + if (do_indent) p.IndentDecrease(); for (auto &ext : extensions) { p.PrintExtension(ext.extensionName, ext.specVersion, max_length); } + if (do_indent) p.IndentIncrease(); +} +void DumpExtensions(Printer &p, std::string layer_name, std::vector<VkExtensionProperties> extensions) { + DumpExtensions(p, layer_name, extensions, false); } - void DumpLayers(Printer &p, std::vector<LayerExtensionList> layers, const std::vector<std::unique_ptr<AppGpu>> &gpus) { std::sort(layers.begin(), layers.end(), [](LayerExtensionList &left, LayerExtensionList &right) -> int { - const char *a = left.layer_properties.layerName; - const char *b = right.layer_properties.layerName; - return a && (!b || std::strcmp(a, b) < 0); + return std::strncmp(left.layer_properties.layerName, right.layer_properties.layerName, VK_MAX_DESCRIPTION_SIZE) < 0; }); switch (p.Type()) { case OutputType::text: @@ -705,6 +703,69 @@ GpuDevDumpJson(p, gpu); } +// Print summary of system +void DumpSummaryInstance(Printer &p, AppInstance &inst) { + p.SetSubHeader(); + DumpExtensions(p, "Instance", inst.global_extensions, true); + p.AddNewline(); + + p.SetSubHeader(); + ArrayWrapper arr(p, "Instance Layers", inst.global_layers.size()); + IndentWrapper indent(p); + std::sort(inst.global_layers.begin(), inst.global_layers.end(), [](LayerExtensionList &left, LayerExtensionList &right) -> int { + return std::strncmp(left.layer_properties.layerName, right.layer_properties.layerName, VK_MAX_DESCRIPTION_SIZE) < 0; + }); + size_t layer_name_max = 0; + size_t layer_desc_max = 0; + size_t layer_version_max = 0; + + // find max of each type to align everything in columns + for (auto &layer : inst.global_layers) { + auto props = layer.layer_properties; + layer_name_max = std::max(layer_name_max, strlen(props.layerName)); + layer_desc_max = std::max(layer_desc_max, strlen(props.description)); + layer_version_max = std::max(layer_version_max, VkVersionString(layer.layer_properties.specVersion).size()); + } + for (auto &layer : inst.global_layers) { + auto v_str = VkVersionString(layer.layer_properties.specVersion); + auto props = layer.layer_properties; + + auto name_padding = std::string(layer_name_max - strlen(props.layerName), ' '); + auto desc_padding = std::string(layer_desc_max - strlen(props.description), ' '); + auto version_padding = std::string(layer_version_max - v_str.size(), ' '); + p.PrintString(std::string(props.layerName) + name_padding + " " + props.description + desc_padding + " " + v_str + " " + + version_padding + " version " + std::to_string(props.implementationVersion)); + } + p.AddNewline(); +} + +void DumpSummaryGPU(Printer &p, AppGpu &gpu) { + ObjectWrapper obj(p, "GPU" + std::to_string(gpu.id)); + auto props = gpu.GetDeviceProperties(); + p.PrintKeyValue("apiVersion", props.apiVersion, 18, VkVersionString(props.apiVersion)); + p.PrintKeyValue("driverVersion", props.driverVersion, 18, to_hex_str(props.driverVersion)); + p.PrintKeyString("vendorID", to_hex_str(props.vendorID), 18); + p.PrintKeyString("deviceID", to_hex_str(props.deviceID), 18); + p.PrintKeyString("deviceType", VkPhysicalDeviceTypeString(props.deviceType), 18); + p.PrintKeyString("deviceName", props.deviceName, 18); + + if (gpu.inst.CheckExtensionEnabled(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME) && + (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME) || gpu.api_version.minor >= 2)) { + void *place = gpu.props2.pNext; + while (place) { + struct VkStructureHeader *structure = (struct VkStructureHeader *)place; + if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES) { + VkPhysicalDeviceDriverProperties *props = (VkPhysicalDeviceDriverProperties *)structure; + DumpVkDriverId(p, "driverID", props->driverID, 18); + p.PrintKeyString("driverName", props->driverName, 18); + p.PrintKeyString("driverInfo", props->driverInfo, 18); + DumpVkConformanceVersion(p, "conformanceVersion", props->conformanceVersion, 18); + } + place = structure->pNext; + } + } +} + // ============ Printing Logic ============= // #ifdef _WIN32 @@ -749,6 +810,7 @@ std::cout << "--show-formats Display the format properties of each physical device.\n"; std::cout << " Note: This option does not affect html or json output;\n"; std::cout << " they will always print format properties.\n\n"; + std::cout << "--summary Show a summary of the instance and GPU's on a system.\n\n"; } int main(int argc, char **argv) { @@ -780,6 +842,8 @@ } human_readable_output = false; json_output = true; + } else if (strcmp(argv[i], "--summary") == 0) { + summary = true; } else if (strcmp(argv[i], "--html") == 0) { human_readable_output = false; html_output = true; @@ -808,8 +872,9 @@ auto phys_devices = instance.FindPhysicalDevices(); std::vector<std::unique_ptr<AppSurface>> surfaces; -#if defined(VK_USE_PLATFORM_XCB_KHR) || defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_WIN32_KHR) || \ - defined(VK_USE_PLATFORM_MACOS_MVK) || defined(VK_USE_PLATFORM_METAL_EXT) || defined(VK_USE_PLATFORM_WAYLAND_KHR) +#if defined(VK_USE_PLATFORM_XCB_KHR) || defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_WIN32_KHR) || \ + defined(VK_USE_PLATFORM_MACOS_MVK) || defined(VK_USE_PLATFORM_METAL_EXT) || defined(VK_USE_PLATFORM_WAYLAND_KHR) || \ + defined(VK_USE_PLATFORM_DIRECTFB_EXT) for (auto &surface_extension : instance.surface_extensions) { surface_extension.create_window(instance); surface_extension.surface = surface_extension.create_surface(instance); @@ -854,7 +919,15 @@ } for (auto &p : printers) { - if (p->Type() == OutputType::json) { + if (summary) { + DumpSummaryInstance(*p.get(), instance); + p->SetHeader(); + ObjectWrapper obj(*p, "Devices"); + IndentWrapper indent(*p); + for (auto &gpu : gpus) { + DumpSummaryGPU(*p.get(), *gpu.get()); + } + } else if (p->Type() == OutputType::json) { DumpLayers(*p.get(), instance.global_layers, gpus); DumpGpuJson(*p.get(), *gpus.at(selected_gpu).get()); @@ -865,8 +938,9 @@ DumpLayers(*p.get(), instance.global_layers, gpus); -#if defined(VK_USE_PLATFORM_XCB_KHR) || defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_WIN32_KHR) || \ - defined(VK_USE_PLATFORM_MACOS_MVK) || defined(VK_USE_PLATFORM_METAL_EXT) || defined(VK_USE_PLATFORM_WAYLAND_KHR) +#if defined(VK_USE_PLATFORM_XCB_KHR) || defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_WIN32_KHR) || \ + defined(VK_USE_PLATFORM_MACOS_MVK) || defined(VK_USE_PLATFORM_METAL_EXT) || defined(VK_USE_PLATFORM_WAYLAND_KHR) || \ + defined(VK_USE_PLATFORM_DIRECTFB_EXT) DumpPresentableSurfaces(*p.get(), instance, gpus, surfaces); #endif DumpGroups(*p.get(), instance); @@ -881,8 +955,9 @@ } } -#if defined(VK_USE_PLATFORM_XCB_KHR) || defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_WIN32_KHR) || \ - defined(VK_USE_PLATFORM_MACOS_MVK) || defined(VK_USE_PLATFORM_METAL_EXT) || defined(VK_USE_PLATFORM_WAYLAND_KHR) +#if defined(VK_USE_PLATFORM_XCB_KHR) || defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_WIN32_KHR) || \ + defined(VK_USE_PLATFORM_MACOS_MVK) || defined(VK_USE_PLATFORM_METAL_EXT) || defined(VK_USE_PLATFORM_WAYLAND_KHR) || \ + defined(VK_USE_PLATFORM_DIRECTFB_EXT) for (auto &surface_extension : instance.surface_extensions) { AppDestroySurface(instance, surface_extension.surface); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/vulkaninfo/vulkaninfo.h new/Vulkan-Tools-1.2.151/vulkaninfo/vulkaninfo.h --- old/Vulkan-Tools-1.2.148/vulkaninfo/vulkaninfo.h 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/vulkaninfo/vulkaninfo.h 2020-08-18 05:43:44.000000000 +0200 @@ -57,7 +57,11 @@ #if defined(_WIN32) #include <fcntl.h> #include <io.h> +#define NOMINMAX #include <windows.h> +#if _MSC_VER == 1900 +#pragma warning(disable : 4800) +#endif #endif // _WIN32 #if defined(__linux__) || defined(__APPLE__) @@ -107,6 +111,7 @@ bool html_output = false; bool json_output = false; bool vkconfig_output = false; +bool summary = false; #ifdef _WIN32 @@ -240,6 +245,7 @@ if (err) THROW_VK_ERR(func_name, err); results.resize(count, init); err = f(ts..., &count, results.data()); + results.resize(count); } while (err == VK_INCOMPLETE); if (err) THROW_VK_ERR(func_name, err); return results; @@ -341,6 +347,13 @@ PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR fp_vkGetPhysicalDeviceWaylandPresentationSupportKHR = APPLE_FP(vkGetPhysicalDeviceWaylandPresentationSupportKHR); #endif // VK_USE_PLATFORM_WAYLAND_KHR +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT + PFN_vkCreateDirectFBSurfaceEXT fp_vkCreateDirectFBSurfaceEXT = APPLE_FP(vkCreateDirectFBSurfaceEXT); +#endif // VK_USE_PLATFORM_DIRECTFB_EXT +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT + PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT fp_vkGetPhysicalDeviceDirectFBPresentationSupportEXT = + APPLE_FP(vkGetPhysicalDeviceDirectFBPresentationSupportEXT); +#endif // VK_USE_PLATFORM_DIRECTFB_EXT #ifdef VK_USE_PLATFORM_ANDROID_KHR PFN_vkCreateAndroidSurfaceKHR fp_vkCreateAndroidSurfaceKHR = APPLE_FP(vkCreateAndroidSurfaceKHR); #endif // VK_USE_PLATFORM_ANDROID_KHR @@ -407,6 +420,12 @@ #ifdef VK_USE_PLATFORM_WAYLAND_KHR Load(fp_vkGetPhysicalDeviceWaylandPresentationSupportKHR, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"); #endif // VK_USE_PLATFORM_WAYLAND_KHR +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT + Load(fp_vkCreateDirectFBSurfaceEXT, "vkCreateDirectFBSurfaceEXT"); +#endif // VK_USE_PLATFORM_DIRECTFB_EXT +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT + Load(fp_vkGetPhysicalDeviceDirectFBPresentationSupportEXT, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"); +#endif // VK_USE_PLATFORM_DIRECTFB_EXT #ifdef VK_USE_PLATFORM_ANDROID_KHR Load(fp_vkCreateAndroidSurfaceKHR, "vkCreateAndroidSurfaceKHR"); #endif // VK_USE_PLATFORM_ANDROID_KHR @@ -593,6 +612,10 @@ wl_display *wayland_display; wl_surface *wayland_surface; #endif +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT + IDirectFB *dfb; + IDirectFBSurface *directfb_surface; +#endif #ifdef VK_USE_PLATFORM_ANDROID_KHR // TODO ANativeWindow *window; #endif @@ -772,7 +795,7 @@ #if defined(VK_USE_PLATFORM_XCB_KHR) || defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_WIN32_KHR) || \ defined(VK_USE_PLATFORM_MACOS_MVK) || defined(VK_USE_PLATFORM_METAL_EXT) || defined(VK_USE_PLATFORM_WAYLAND_KHR) || \ - defined(VK_USE_PLATFORM_ANDROID_KHR) + defined(VK_USE_PLATFORM_DIRECTFB_EXT) || defined(VK_USE_PLATFORM_ANDROID_KHR) static void AppDestroySurface(AppInstance &inst, VkSurfaceKHR surface) { // same for all platforms inst.dll.fp_vkDestroySurfaceKHR(inst.instance, surface, nullptr); } @@ -978,6 +1001,53 @@ #endif // VK_USE_PLATFORM_WAYLAND_KHR //----------------------------------------------------------- +//-------------------------DIRECTFB-------------------------- +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT +static void AppCreateDirectFBWindow(AppInstance &inst) { + DFBResult ret; + + ret = DirectFBInit(NULL, NULL); + if (ret) { + THROW_ERR("DirectFBInit failed to initialize DirectFB.\nExiting..."); + } + + ret = DirectFBCreate(&inst.dfb); + if (ret) { + THROW_ERR("DirectFBCreate failed to create main interface of DirectFB.\nExiting..."); + } + + DFBSurfaceDescription desc; + desc.flags = (DFBSurfaceDescriptionFlags)(DSDESC_CAPS | DSDESC_WIDTH | DSDESC_HEIGHT); + desc.caps = DSCAPS_PRIMARY; + desc.width = inst.width; + desc.height = inst.height; + ret = inst.dfb->CreateSurface(inst.dfb, &desc, &inst.directfb_surface); + if (ret) { + THROW_ERR("CreateSurface failed to create DirectFB surface interface.\nExiting..."); + } +} + +static VkSurfaceKHR AppCreateDirectFBSurface(AppInstance &inst) { + VkDirectFBSurfaceCreateInfoEXT createInfo; + createInfo.sType = VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT; + createInfo.pNext = nullptr; + createInfo.flags = 0; + createInfo.dfb = inst.dfb; + createInfo.surface = inst.directfb_surface; + + VkSurfaceKHR surface; + VkResult err = inst.dll.fp_vkCreateDirectFBSurfaceEXT(inst.instance, &createInfo, nullptr, &surface); + if (err) THROW_VK_ERR("vkCreateDirectFBSurfaceEXT", err); + return surface; +} + +static void AppDestroyDirectFBWindow(AppInstance &inst) { + inst.directfb_surface->Release(inst.directfb_surface); + inst.dfb->Release(inst.dfb); +} +#endif // VK_USE_PLATFORM_DIRECTFB_EXT +//----------------------------------------------------------- + //-------------------------ANDROID--------------------------- #ifdef VK_USE_PLATFORM_ANDROID_KHR static void AppCreateAndroidWindow(AppInstance &inst) {} @@ -1091,6 +1161,18 @@ } } #endif +//--DIRECTFB-- +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT + SurfaceExtension surface_ext_directfb; + if (inst.CheckExtensionEnabled(VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME)) { + surface_ext_directfb.name = VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME; + surface_ext_directfb.create_window = AppCreateDirectFBWindow; + surface_ext_directfb.create_surface = AppCreateDirectFBSurface; + surface_ext_directfb.destroy_window = AppDestroyDirectFBWindow; + + inst.AddSurfaceExtension(surface_ext_directfb); + } +#endif //--ANDROID-- #ifdef VK_USE_PLATFORM_ANDROID_KHR SurfaceExtension surface_ext_android; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vulkan-Tools-1.2.148/vulkaninfo/vulkaninfo.md new/Vulkan-Tools-1.2.151/vulkaninfo/vulkaninfo.md --- old/Vulkan-Tools-1.2.148/vulkaninfo/vulkaninfo.md 2020-07-20 22:47:26.000000000 +0200 +++ new/Vulkan-Tools-1.2.151/vulkaninfo/vulkaninfo.md 2020-08-18 05:43:44.000000000 +0200 @@ -66,7 +66,7 @@ --show-formats Display the format properties of each physical device. Note: This option does not affect html or json output; they will always print format properties. - +--summary Show a summary of the instance and GPU's on a system. ``` ### Windows
