1. 09 Jul, 2018 1 commit
  2. 02 Jul, 2018 3 commits
  3. 29 Jun, 2018 1 commit
    • José María Casanova Crespo's avatar
      anv: finish the binding_table_pool on destroyDevice when use_softpin · a99c9e63
      José María Casanova Crespo authored
      Running VK-CTS in batch execution mode was raising the
      VK_ERROR_INITIALIZATION_FAILED error in multiple tests. But when the
      same failing tests were run isolated they always passed.
      
      createDevice and destroyDevice were called before and after every
      tests. Because the binding_table_pool was never closed, we reached the
      maximum number of open file descriptors (ulimit -n) and when that
      happened every call to createDevice implied a
      VK_ERROR_INITIALIZATION_FAILED error.
      
      Fixes: c7db0ed4
      
      
            ("anv: Use a separate pool for binding tables when soft pinning")
      Reviewed-by: Jason Ekstrand's avatarJason Ekstrand <jason@jlekstrand.net>
      a99c9e63
  4. 19 Jun, 2018 2 commits
    • Keith Packard's avatar
      anv: Add KHR_display extension to anv [v7] · 54d0daa4
      Keith Packard authored
      
      
      This adds support for the KHR_display extension to the anv Vulkan
      driver. The driver now attempts to open the master DRM node when the
      KHR_display extension is requested so that the common winsys code can
      perform the necessary operations.
      
      v2: Make sure primary fd is usable
      
      	When KHR_display is selected, we try to open the primary node
      	instead of the render node in case the user wants to use
      	KHR_display for presentation. However, if we're actually going
      	to end up using RandR leases, then we don't care if the
      	resulting fd can't be used for display, but the kernel also
      	prevents us from using it for drawing when someone else has
      	master.
      
      v3:
      	Simplify addition of VK_USE_PLATFORM_DISPLAY_KHR to vulkan_wsi_args
      Suggested-by: Eric Engestrom's avatarEric Engestrom <eric.engestrom@imgtec.com>
      
      v4:
      	Adapt primary node usage to new wsi_device_init API
      
      v5:
      	Adopt Jason Ekstrand's coding conventions
      
              Declare variables at first use, eliminate extra whitespace between
              types and names. Wrap lines to 80 columns.
      
      	Remove spurious MM_PER_PIXEL define
      Suggested-by: Jason Ekstrand's avatarJason Ekstrand <jason.ekstrand@intel.com>
      
      v6:
      	Open DRM master before initializing WSI layer.
      
      	The DRM master FD is passed to the WSI layer during
      	initialization, so we need to open the device slightly earlier
      	in the function.
      
      	Close DRM master in device_finish.
      
      	Use anv_gem_get_param to detect working master_fd instead of
      	directly using the ioctl.
      Suggested-by: Jason Ekstrand's avatarJason Ekstrand <jason.ekstrand@intel.com>
      
      v7:
      	Add vkCreateDisplayModeKHR. This doesn't actually create
      	new modes, it only looks to see if the requested parameters
      	matches an existing mode and returns that.
      Suggested-by: Jason Ekstrand's avatarJason Ekstrand <jason.ekstrand@intel.com>
      Signed-off-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
      Reviewed-by: Jason Ekstrand's avatarJason Ekstrand <jason@jlekstrand.net>
      54d0daa4
    • Keith Packard's avatar
      vulkan: Add KHR_display extension using DRM [v10] · da997ebe
      Keith Packard authored
      
      
      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's avatarJason Ekstrand <jason@jlekstrand.net>
      
      	* Simplify addition of VK_USE_PLATFORM_DISPLAY_KHR to
                vulkan_wsi_args
      Suggested-by: Eric Engestrom's avatarEric Engestrom <eric.engestrom@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's avatarJason Ekstrand <jason@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: default avatarDavid Mao <David.Mao@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's avatarJason Ekstrand <jason.ekstrand@intel.com>
      
      v9:
      	Fix vscan handling by using MAX2(vscan, 1) everywhere. Vscan
      	can be zero anywhere, which is treated the same as 1.
      Suggested-by: Jason Ekstrand's avatarJason Ekstrand <jason.ekstrand@intel.com>
      
      v10:
      	Respond to Vulkan CTS failures.
      
      	1. Initialize planeReorderPossible in display_properties code
      
      	2. Only report connected displays in
      	   get_display_plane_supported_displays
      
      	3. Return VK_ERROR_OUT_OF_HOST_MEMORY when pthread cond
      	   initialization fails.
      Signed-off-by: Jason Ekstrand's avatarJason Ekstrand <jason.ekstrand@intel.com>
      
      	4. Add vkCreateDisplayModeKHR. This doesn't actually create
      	   new modes, it only looks to see if the requested parameters
      	   matches an existing mode and returns that.
      Suggested-by: Jason Ekstrand's avatarJason Ekstrand <jason.ekstrand@intel.com>
      Reviewed-by: Jason Ekstrand's avatarJason Ekstrand <jason@jlekstrand.net>
      Signed-off-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
      da997ebe
  5. 18 Jun, 2018 2 commits
  6. 14 Jun, 2018 1 commit
  7. 01 Jun, 2018 6 commits
  8. 31 May, 2018 3 commits
  9. 07 May, 2018 1 commit
  10. 05 May, 2018 1 commit
  11. 03 May, 2018 2 commits
  12. 02 May, 2018 1 commit
  13. 01 May, 2018 2 commits
  14. 30 Apr, 2018 1 commit
    • Scott D Phillips's avatar
      intel: fix check for 48b ppgtt support · 8ffc6ee2
      Scott D Phillips authored and Kenneth Graunke's avatar Kenneth Graunke committed
      
      
      The previous logic of the supports_48b_addresses wasn't actually
      checking if i915.ko was running with full_48bit_ppgtt. The ENOENT
      it was checking for was actually coming from the invalid context
      id provided in the test execbuffer.  There is no path in the
      kernel driver where the presence of
      EXEC_OBJECT_SUPPORTS_48B_ADDRESS leads to an error.
      
      Instead, check the default context's GTT_SIZE param for a value
      greater than 4 GiB
      
      v2 (Ken): Fix in i965 as well.
      v3 Check GTT_SIZE instead of HAS_ALIASING_PPGTT (Chris Wilson)
      Reviewed-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      8ffc6ee2
  15. 26 Apr, 2018 1 commit
  16. 05 Apr, 2018 1 commit
  17. 24 Mar, 2018 1 commit
  18. 16 Mar, 2018 1 commit
  19. 15 Mar, 2018 1 commit
  20. 07 Mar, 2018 8 commits