I'm trusting that not much changed other than what was explicitly called out. I didn't want to re-read in *that* much detail again. :-)
Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net> On Mon, Jun 11, 2018 at 10:39 PM, Keith Packard <kei...@keithp.com> wrote: > This adds support for the KHR_display extension support to the vulkan > WSI layer. Driver support will be added separately. > > v2: > * fix double ;; in wsi_common_display.c > > * Move mode list from wsi_display to wsi_display_connector > > * Fix scope for wsi_display_mode andwsi_display_connector > allocs > > * Switch all allocations to vk_zalloc instead of vk_alloc. > > * Fix DRM failure in > wsi_display_get_physical_device_display_properties > > When DRM fails, or when we don't have a master fd > (presumably due to application errors), just return 0 > properties from this function, which is at least a valid > response. > > * Use vk_outarray for all property queries > > This is a bit less error-prone than open-coding the same > stuff. > > * Remove VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR from surface caps > > Until we have multi-plane support, we shouldn't pretend to > have any multi-plane semantics, even if undefined. > > Suggested-by: Jason Ekstrand <ja...@jlekstrand.net> > > * Simplify addition of VK_USE_PLATFORM_DISPLAY_KHR to > vulkan_wsi_args > > Suggested-by: Eric Engestrom <eric.engest...@imgtec.com> > > v3: > Add separate 'display_fd' and 'render_fd' arguments to > wsi_device_init API. This allows drivers to use different FDs > for the different aspects of the device. > > Use largest mode as display size when no preferred mode. > > If the display doesn't provide a preferred mode, we'll assume > that the largest supported mode is the "physical size" of the > device and report that. > > v4: > Make wsi_image_state enumeration values uppercase. > Follow more common mesa conventions. > > Remove 'render_fd' from wsi_device_init API. The > wsi_common_display code doesn't use this fd at all, so stop > passing it in. This avoids any potential confusion over which > fd to use when creating display-relative object handles. > > Remove call to wsi_create_prime_image which would never have > been reached as the necessary condition (use_prime_blit) is > never set. > > whitespace cleanups in wsi_common_display.c > > Suggested-by: Jason Ekstrand <ja...@jlekstrand.net> > > Add depth/bpp info to available surface formats. Instead of > hard-coding depth 24 bpp 32 in the drmModeAddFB call, use the > requested format to find suitable values. > > Destroy kernel buffers and FBs when swapchain is destroyed. We > were leaking both of these kernel objects across swapchain > destruction. > > Note that wsi_display_wait_for_event waits for anything to > happen. wsi_display_wait_for_event is simply a yield so that > the caller can then check to see if the desired state change > has occurred. > > Record swapchain failures in chain for later return. If some > asynchronous swapchain activity fails, we need to tell the > application eventually. Record the failure in the swapchain > and report it at the next acquire_next_image or queue_present > call. > > Fix error returns from wsi_display_setup_connector. If a > malloc failed, then the result should be > VK_ERROR_OUT_OF_HOST_MEMORY. Otherwise, the associated ioctl > failed and we're either VT switched away, or our lease has > been revoked, in which case we should return > VK_ERROR_OUT_OF_DATE_KHR. > > Make sure both sides of if/else brace use matches > > Note that we assume drmModeSetCrtc is synchronous. Add a > comment explaining why we can idle any previous displayed > image as soon as the mode set returns. > > Note that EACCES from drmModePageFlip means VT inactive. When > vt switched away drmModePageFlip returns EACCES. Poll once a > second waiting until we get some other return value back. > > Clean up after alloc failure in > wsi_display_surface_create_swapchain. Destroy any created > images, free the swapchain. > > Remove physical_device from wsi_display_init_wsi. We never > need this value, so remove it from the API and from the > internal wsi_display structure. > > Use drmModeAddFB2 in wsi_display_image_init. This takes a drm > format instead of depth/bpp, which provides more control over > the format of the data. > > v5: > Set the 'currentStackIndex' member of the > VkDisplayPlanePropertiesKHR record to zero, instead of > indexing across all displays. This value is the stack depth of > the plane within an individual display, and as the current > code supports only a single plane per display, should be set > to zero for all elements > > Discovered-by: David Mao <david....@amd.com> > > v6: > Remove 'platform_display' bits from the build and use the > existing 'platform_drm' instead. > > v7: > Ensure VK_ICD_WSI_PLATFORM_MAX is large enough by > setting to VK_ICD_WSI_PLATFORM_DISPLAY + 1 > > v8: > Simplify wsi_device_init failure from wsi_display_init_wsi > by using the same pattern as the other wsi layers. > > Adopt Jason Ekstrand's white space and variable declaration > suggestions. Declare variables at first use, eliminate extra > whitespace between types and names, add list iterator helpers, > switch to lower-case list_ macros. > > Respond to Jason's April 8 review: > > * Create a function to convert relative to absolute timeouts > to catch overflow issues in one place > > * use VK_NULL_HANDLE to clear prop->currentDisplay > > * Get rid of available_present_modes array. > > * return OUT_OF_DATE_KHR when display_queue_next called after > display has been released. > > * Make errors from mode setting fatal in display_queue_next > > * Remove duplicate pthread_mutex_init call > > * Add wsi_init_pthread_cond_monotonic helper function to > isolate pthread error handling from wsi_display_init_wsi > > Suggested-by: Jason Ekstrand <jason.ekstr...@intel.com> > > Signed-off-by: Keith Packard <kei...@keithp.com> > --- > src/amd/vulkan/radv_device.c | 8 + > src/amd/vulkan/radv_private.h | 1 + > src/amd/vulkan/radv_wsi.c | 3 +- > src/intel/vulkan/anv_device.c | 4 + > src/intel/vulkan/anv_private.h | 1 + > src/intel/vulkan/anv_wsi.c | 3 +- > src/vulkan/Makefile.am | 7 + > src/vulkan/Makefile.sources | 4 + > src/vulkan/wsi/meson.build | 8 + > src/vulkan/wsi/wsi_common.c | 12 +- > src/vulkan/wsi/wsi_common.h | 5 +- > src/vulkan/wsi/wsi_common_display.c | 1432 +++++++++++++++++++++++++++ > src/vulkan/wsi/wsi_common_display.h | 77 ++ > src/vulkan/wsi/wsi_common_private.h | 9 + > 14 files changed, 1569 insertions(+), 5 deletions(-) > create mode 100644 src/vulkan/wsi/wsi_common_display.c > create mode 100644 src/vulkan/wsi/wsi_common_display.h >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev