mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 03:08:05 +02:00
wsi: add minImageCount override
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> (v1)
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
(cherry picked from commit a72cdd00ab)
This commit is contained in:
parent
2977a3e0e1
commit
4d5bcb4c33
5 changed files with 27 additions and 3 deletions
|
|
@ -215,6 +215,11 @@ DRI_CONF_OPT_BEGIN_B(adaptive_sync,def) \
|
|||
DRI_CONF_DESC(en,gettext("Adapt the monitor sync to the application performance (when possible)")) \
|
||||
DRI_CONF_OPT_END
|
||||
|
||||
#define DRI_CONF_VK_X11_OVERRIDE_MIN_IMAGE_COUNT(def) \
|
||||
DRI_CONF_OPT_BEGIN_V(vk_x11_override_min_image_count, int, def, "0:999") \
|
||||
DRI_CONF_DESC(en,gettext("Override the VkSurfaceCapabilitiesKHR::minImageCount (0 = no override)")) \
|
||||
DRI_CONF_OPT_END
|
||||
|
||||
#define DRI_CONF_MESA_GLTHREAD(def) \
|
||||
DRI_CONF_OPT_BEGIN_B(mesa_glthread, def) \
|
||||
DRI_CONF_DESC(en,gettext("Enable offloading GL driver work to a separate thread")) \
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ wsi_device_init(struct wsi_device *wsi,
|
|||
#undef WSI_GET_CB
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
result = wsi_x11_init_wsi(wsi, alloc);
|
||||
result = wsi_x11_init_wsi(wsi, alloc, dri_options);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -109,6 +109,12 @@ struct wsi_device {
|
|||
* available. Not all window systems might support this. */
|
||||
bool enable_adaptive_sync;
|
||||
|
||||
struct {
|
||||
/* Override the minimum number of images on the swapchain.
|
||||
* 0 = no override */
|
||||
uint32_t override_minImageCount;
|
||||
} x11;
|
||||
|
||||
uint64_t (*image_get_modifier)(VkImage image);
|
||||
|
||||
#define WSI_CB(cb) PFN_vk##cb cb
|
||||
|
|
|
|||
|
|
@ -138,7 +138,8 @@ struct wsi_interface {
|
|||
};
|
||||
|
||||
VkResult wsi_x11_init_wsi(struct wsi_device *wsi_device,
|
||||
const VkAllocationCallbacks *alloc);
|
||||
const VkAllocationCallbacks *alloc,
|
||||
const struct driOptionCache *dri_options);
|
||||
void wsi_x11_finish_wsi(struct wsi_device *wsi_device,
|
||||
const VkAllocationCallbacks *alloc);
|
||||
VkResult wsi_wl_init_wsi(struct wsi_device *wsi_device,
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
#include <xf86drm.h>
|
||||
#include "drm-uapi/drm_fourcc.h"
|
||||
#include "util/hash_table.h"
|
||||
#include "util/xmlconfig.h"
|
||||
|
||||
#include "vk_util.h"
|
||||
#include "wsi_common_private.h"
|
||||
|
|
@ -511,6 +512,9 @@ x11_surface_get_capabilities(VkIcdSurfaceBase *icd_surface,
|
|||
/* There is no real maximum */
|
||||
caps->maxImageCount = 0;
|
||||
|
||||
if (wsi_device->x11.override_minImageCount)
|
||||
caps->minImageCount = wsi_device->x11.override_minImageCount;
|
||||
|
||||
caps->supportedTransforms = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
|
||||
caps->currentTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
|
||||
caps->maxImageArrayLayers = 1;
|
||||
|
|
@ -1546,7 +1550,8 @@ fail_alloc:
|
|||
|
||||
VkResult
|
||||
wsi_x11_init_wsi(struct wsi_device *wsi_device,
|
||||
const VkAllocationCallbacks *alloc)
|
||||
const VkAllocationCallbacks *alloc,
|
||||
const struct driOptionCache *dri_options)
|
||||
{
|
||||
struct wsi_x11 *wsi;
|
||||
VkResult result;
|
||||
|
|
@ -1577,6 +1582,13 @@ wsi_x11_init_wsi(struct wsi_device *wsi_device,
|
|||
goto fail_mutex;
|
||||
}
|
||||
|
||||
if (dri_options) {
|
||||
if (driCheckOption(dri_options, "vk_x11_override_min_image_count", DRI_INT)) {
|
||||
wsi_device->x11.override_minImageCount =
|
||||
driQueryOptioni(dri_options, "vk_x11_override_min_image_count");
|
||||
}
|
||||
}
|
||||
|
||||
wsi->base.get_support = x11_surface_get_support;
|
||||
wsi->base.get_capabilities2 = x11_surface_get_capabilities2;
|
||||
wsi->base.get_formats = x11_surface_get_formats;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue