mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-13 01:10:15 +01:00
panvk: add basic driconf infrastructure
This hooks up some driconfs for WSI, as well as the force_vk_vendor DRIconf. Nothing panvk specific for now. Reviewed-by: Benjamin Lee <benjamin.lee@collabora.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33895>
This commit is contained in:
parent
4fabd37a3c
commit
aa8fec638f
4 changed files with 41 additions and 2 deletions
|
|
@ -10,6 +10,7 @@
|
|||
*/
|
||||
|
||||
#include "util/build_id.h"
|
||||
#include "util/driconf.h"
|
||||
#include "util/mesa-sha1.h"
|
||||
|
||||
#include "vk_alloc.h"
|
||||
|
|
@ -146,6 +147,35 @@ panvk_kmod_free(const struct pan_kmod_allocator *allocator, void *data)
|
|||
return vk_free(vkalloc, data);
|
||||
}
|
||||
|
||||
static const driOptionDescription panvk_dri_options[] = {
|
||||
DRI_CONF_SECTION_PERFORMANCE
|
||||
DRI_CONF_ADAPTIVE_SYNC(true)
|
||||
DRI_CONF_VK_X11_OVERRIDE_MIN_IMAGE_COUNT(0)
|
||||
DRI_CONF_VK_X11_STRICT_IMAGE_COUNT(false)
|
||||
DRI_CONF_VK_X11_ENSURE_MIN_IMAGE_COUNT(false)
|
||||
DRI_CONF_VK_KHR_PRESENT_WAIT(false)
|
||||
DRI_CONF_VK_XWAYLAND_WAIT_READY(false)
|
||||
DRI_CONF_SECTION_END
|
||||
|
||||
DRI_CONF_SECTION_DEBUG
|
||||
DRI_CONF_FORCE_VK_VENDOR()
|
||||
DRI_CONF_VK_WSI_FORCE_SWAPCHAIN_TO_CURRENT_EXTENT(false)
|
||||
DRI_CONF_VK_X11_IGNORE_SUBOPTIMAL(false)
|
||||
DRI_CONF_SECTION_END
|
||||
};
|
||||
|
||||
static void
|
||||
panvk_init_dri_options(struct panvk_instance *instance)
|
||||
{
|
||||
driParseOptionInfo(&instance->available_dri_options, panvk_dri_options, ARRAY_SIZE(panvk_dri_options));
|
||||
driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, 0, "panvk", NULL, NULL,
|
||||
instance->vk.app_info.app_name, instance->vk.app_info.app_version,
|
||||
instance->vk.app_info.engine_name, instance->vk.app_info.engine_version);
|
||||
|
||||
instance->force_vk_vendor =
|
||||
driQueryOptioni(&instance->dri_options, "force_vk_vendor");
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
panvk_CreateInstance(const VkInstanceCreateInfo *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator,
|
||||
|
|
@ -188,6 +218,8 @@ panvk_CreateInstance(const VkInstanceCreateInfo *pCreateInfo,
|
|||
return panvk_error(NULL, result);
|
||||
}
|
||||
|
||||
panvk_init_dri_options(instance);
|
||||
|
||||
instance->kmod.allocator = (struct pan_kmod_allocator){
|
||||
.zalloc = panvk_kmod_zalloc,
|
||||
.free = panvk_kmod_free,
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
#include <stdint.h>
|
||||
|
||||
#include "vk_instance.h"
|
||||
#include "util/xmlconfig.h"
|
||||
|
||||
#include "lib/kmod/pan_kmod.h"
|
||||
|
||||
|
|
@ -41,7 +42,11 @@ struct panvk_instance {
|
|||
|
||||
enum panvk_debug_flags debug_flags;
|
||||
|
||||
struct driOptionCache dri_options;
|
||||
struct driOptionCache available_dri_options;
|
||||
|
||||
uint8_t driver_build_sha[20];
|
||||
uint32_t force_vk_vendor;
|
||||
|
||||
struct {
|
||||
struct pan_kmod_allocator allocator;
|
||||
|
|
|
|||
|
|
@ -508,7 +508,8 @@ get_device_properties(const struct panvk_instance *instance,
|
|||
*properties = (struct vk_properties){
|
||||
.apiVersion = get_api_version(arch),
|
||||
.driverVersion = vk_get_driver_version(),
|
||||
.vendorID = ARM_VENDOR_ID,
|
||||
.vendorID = instance->force_vk_vendor ? instance->force_vk_vendor :
|
||||
ARM_VENDOR_ID,
|
||||
|
||||
/* Collect arch_major, arch_minor, arch_rev and product_major,
|
||||
* as done by the Arm driver.
|
||||
|
|
|
|||
|
|
@ -50,7 +50,8 @@ panvk_wsi_init(struct panvk_physical_device *physical_device)
|
|||
|
||||
result = wsi_device_init(&physical_device->wsi_device,
|
||||
panvk_physical_device_to_handle(physical_device),
|
||||
panvk_wsi_proc_addr, &instance->vk.alloc, -1, NULL,
|
||||
panvk_wsi_proc_addr, &instance->vk.alloc, -1,
|
||||
&instance->dri_options,
|
||||
&(struct wsi_device_options){.sw_device = false});
|
||||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue