mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
anv: Copy the appliation info into the instance
Cc: "18.2" <mesa-stable@lists.freedesktop.org> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> (cherry picked from commit8c048af589) Squashed with commit: anv: Free the app and engine name Fixes:8c048af589"anv: Copy the appliation info into the instance" Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> (cherry picked from commitcdea5d996e)
This commit is contained in:
parent
70e7336e66
commit
c9525a167b
2 changed files with 33 additions and 8 deletions
|
|
@ -610,20 +610,33 @@ VkResult anv_CreateInstance(
|
|||
else
|
||||
instance->alloc = default_alloc;
|
||||
|
||||
if (pCreateInfo->pApplicationInfo &&
|
||||
pCreateInfo->pApplicationInfo->apiVersion != 0) {
|
||||
instance->apiVersion = pCreateInfo->pApplicationInfo->apiVersion;
|
||||
} else {
|
||||
anv_EnumerateInstanceVersion(&instance->apiVersion);
|
||||
instance->app_info = (struct anv_app_info) { .api_version = 0 };
|
||||
if (pCreateInfo->pApplicationInfo) {
|
||||
const VkApplicationInfo *app = pCreateInfo->pApplicationInfo;
|
||||
|
||||
instance->app_info.app_name =
|
||||
vk_strdup(&instance->alloc, app->pApplicationName,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);
|
||||
instance->app_info.app_version = app->applicationVersion;
|
||||
|
||||
instance->app_info.engine_name =
|
||||
vk_strdup(&instance->alloc, app->pEngineName,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);
|
||||
instance->app_info.engine_version = app->engineVersion;
|
||||
|
||||
instance->app_info.api_version = app->apiVersion;
|
||||
}
|
||||
|
||||
if (instance->app_info.api_version == 0)
|
||||
anv_EnumerateInstanceVersion(&instance->app_info.api_version);
|
||||
|
||||
instance->enabled_extensions = enabled_extensions;
|
||||
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(instance->dispatch.entrypoints); i++) {
|
||||
/* Vulkan requires that entrypoints for extensions which have not been
|
||||
* enabled must not be advertised.
|
||||
*/
|
||||
if (!anv_entrypoint_is_enabled(i, instance->apiVersion,
|
||||
if (!anv_entrypoint_is_enabled(i, instance->app_info.api_version,
|
||||
&instance->enabled_extensions, NULL)) {
|
||||
instance->dispatch.entrypoints[i] = NULL;
|
||||
} else if (anv_dispatch_table.entrypoints[i] != NULL) {
|
||||
|
|
@ -669,6 +682,9 @@ void anv_DestroyInstance(
|
|||
anv_physical_device_finish(&instance->physicalDevice);
|
||||
}
|
||||
|
||||
vk_free(&instance->alloc, instance->app_info.app_name);
|
||||
vk_free(&instance->alloc, instance->app_info.engine_name);
|
||||
|
||||
VG(VALGRIND_DESTROY_MEMPOOL(instance));
|
||||
|
||||
vk_debug_report_instance_destroy(&instance->debug_report_callbacks);
|
||||
|
|
@ -1489,7 +1505,7 @@ anv_device_init_dispatch(struct anv_device *device)
|
|||
/* Vulkan requires that entrypoints for extensions which have not been
|
||||
* enabled must not be advertised.
|
||||
*/
|
||||
if (!anv_entrypoint_is_enabled(i, device->instance->apiVersion,
|
||||
if (!anv_entrypoint_is_enabled(i, device->instance->app_info.api_version,
|
||||
&device->instance->enabled_extensions,
|
||||
&device->enabled_extensions)) {
|
||||
device->dispatch.entrypoints[i] = NULL;
|
||||
|
|
|
|||
|
|
@ -882,12 +882,21 @@ struct anv_physical_device {
|
|||
int master_fd;
|
||||
};
|
||||
|
||||
struct anv_app_info {
|
||||
const char* app_name;
|
||||
uint32_t app_version;
|
||||
const char* engine_name;
|
||||
uint32_t engine_version;
|
||||
uint32_t api_version;
|
||||
};
|
||||
|
||||
struct anv_instance {
|
||||
VK_LOADER_DATA _loader_data;
|
||||
|
||||
VkAllocationCallbacks alloc;
|
||||
|
||||
uint32_t apiVersion;
|
||||
struct anv_app_info app_info;
|
||||
|
||||
struct anv_instance_extension_table enabled_extensions;
|
||||
struct anv_dispatch_table dispatch;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue