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>
This commit is contained in:
@@ -610,20 +610,33 @@ VkResult anv_CreateInstance(
|
|||||||
else
|
else
|
||||||
instance->alloc = default_alloc;
|
instance->alloc = default_alloc;
|
||||||
|
|
||||||
if (pCreateInfo->pApplicationInfo &&
|
instance->app_info = (struct anv_app_info) { .api_version = 0 };
|
||||||
pCreateInfo->pApplicationInfo->apiVersion != 0) {
|
if (pCreateInfo->pApplicationInfo) {
|
||||||
instance->apiVersion = pCreateInfo->pApplicationInfo->apiVersion;
|
const VkApplicationInfo *app = pCreateInfo->pApplicationInfo;
|
||||||
} else {
|
|
||||||
anv_EnumerateInstanceVersion(&instance->apiVersion);
|
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;
|
instance->enabled_extensions = enabled_extensions;
|
||||||
|
|
||||||
for (unsigned i = 0; i < ARRAY_SIZE(instance->dispatch.entrypoints); i++) {
|
for (unsigned i = 0; i < ARRAY_SIZE(instance->dispatch.entrypoints); i++) {
|
||||||
/* Vulkan requires that entrypoints for extensions which have not been
|
/* Vulkan requires that entrypoints for extensions which have not been
|
||||||
* enabled must not be advertised.
|
* 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->enabled_extensions, NULL)) {
|
||||||
instance->dispatch.entrypoints[i] = NULL;
|
instance->dispatch.entrypoints[i] = NULL;
|
||||||
} else if (anv_dispatch_table.entrypoints[i] != NULL) {
|
} else if (anv_dispatch_table.entrypoints[i] != NULL) {
|
||||||
@@ -1503,7 +1516,7 @@ anv_device_init_dispatch(struct anv_device *device)
|
|||||||
/* Vulkan requires that entrypoints for extensions which have not been
|
/* Vulkan requires that entrypoints for extensions which have not been
|
||||||
* enabled must not be advertised.
|
* 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->instance->enabled_extensions,
|
||||||
&device->enabled_extensions)) {
|
&device->enabled_extensions)) {
|
||||||
device->dispatch.entrypoints[i] = NULL;
|
device->dispatch.entrypoints[i] = NULL;
|
||||||
|
@@ -882,12 +882,21 @@ struct anv_physical_device {
|
|||||||
int master_fd;
|
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 {
|
struct anv_instance {
|
||||||
VK_LOADER_DATA _loader_data;
|
VK_LOADER_DATA _loader_data;
|
||||||
|
|
||||||
VkAllocationCallbacks alloc;
|
VkAllocationCallbacks alloc;
|
||||||
|
|
||||||
uint32_t apiVersion;
|
struct anv_app_info app_info;
|
||||||
|
|
||||||
struct anv_instance_extension_table enabled_extensions;
|
struct anv_instance_extension_table enabled_extensions;
|
||||||
struct anv_dispatch_table dispatch;
|
struct anv_dispatch_table dispatch;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user