venus: init renderer_info at renderer creation (part 2)
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Chia-I Wu <olvaffe@gmail.com> Reviewed-by: Ryan Neph <ryanneph@google.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14658>
This commit is contained in:
parent
ddba7337c7
commit
a76d1e0e74
|
@ -104,7 +104,7 @@ vn_instance_init_renderer_versions(struct vn_instance *instance)
|
|||
|
||||
/* instance version for internal use is capped */
|
||||
instance_version = MIN3(instance_version, instance->renderer_api_version,
|
||||
instance->renderer_info.vk_xml_version);
|
||||
instance->renderer->info.vk_xml_version);
|
||||
assert(instance_version >= VN_MIN_RENDERER_VERSION);
|
||||
|
||||
instance->renderer_version = instance_version;
|
||||
|
@ -177,7 +177,7 @@ vn_instance_get_reply_shmem_locked(struct vn_instance *instance,
|
|||
static VkResult
|
||||
vn_instance_init_experimental_features(struct vn_instance *instance)
|
||||
{
|
||||
if (instance->renderer_info.vk_mesa_venus_protocol_spec_version !=
|
||||
if (instance->renderer->info.vk_mesa_venus_protocol_spec_version !=
|
||||
100000) {
|
||||
if (VN_DEBUG(INIT))
|
||||
vn_log(instance, "renderer supports no experimental features");
|
||||
|
@ -240,26 +240,25 @@ vn_instance_init_renderer(struct vn_instance *instance)
|
|||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
||||
vn_renderer_get_info(instance->renderer, &instance->renderer_info);
|
||||
|
||||
struct vn_renderer_info *renderer_info = &instance->renderer->info;
|
||||
uint32_t version = vn_info_wire_format_version();
|
||||
if (instance->renderer_info.wire_format_version != version) {
|
||||
if (renderer_info->wire_format_version != version) {
|
||||
if (VN_DEBUG(INIT)) {
|
||||
vn_log(instance, "wire format version %d != %d",
|
||||
instance->renderer_info.wire_format_version, version);
|
||||
renderer_info->wire_format_version, version);
|
||||
}
|
||||
return VK_ERROR_INITIALIZATION_FAILED;
|
||||
}
|
||||
|
||||
version = vn_info_vk_xml_version();
|
||||
if (instance->renderer_info.vk_xml_version > version)
|
||||
instance->renderer_info.vk_xml_version = version;
|
||||
if (instance->renderer_info.vk_xml_version < VN_MIN_RENDERER_VERSION) {
|
||||
if (renderer_info->vk_xml_version > version)
|
||||
renderer_info->vk_xml_version = version;
|
||||
if (renderer_info->vk_xml_version < VN_MIN_RENDERER_VERSION) {
|
||||
if (VN_DEBUG(INIT)) {
|
||||
vn_log(instance, "vk xml version %d.%d.%d < %d.%d.%d",
|
||||
VK_VERSION_MAJOR(instance->renderer_info.vk_xml_version),
|
||||
VK_VERSION_MINOR(instance->renderer_info.vk_xml_version),
|
||||
VK_VERSION_PATCH(instance->renderer_info.vk_xml_version),
|
||||
VK_VERSION_MAJOR(renderer_info->vk_xml_version),
|
||||
VK_VERSION_MINOR(renderer_info->vk_xml_version),
|
||||
VK_VERSION_PATCH(renderer_info->vk_xml_version),
|
||||
VK_VERSION_MAJOR(VN_MIN_RENDERER_VERSION),
|
||||
VK_VERSION_MINOR(VN_MIN_RENDERER_VERSION),
|
||||
VK_VERSION_PATCH(VN_MIN_RENDERER_VERSION));
|
||||
|
@ -269,34 +268,30 @@ vn_instance_init_renderer(struct vn_instance *instance)
|
|||
|
||||
const struct vn_info_extension *ext =
|
||||
vn_info_extension_get("VK_EXT_command_serialization");
|
||||
if (instance->renderer_info.vk_ext_command_serialization_spec_version >
|
||||
if (renderer_info->vk_ext_command_serialization_spec_version >
|
||||
ext->spec_version) {
|
||||
instance->renderer_info.vk_ext_command_serialization_spec_version =
|
||||
renderer_info->vk_ext_command_serialization_spec_version =
|
||||
ext->spec_version;
|
||||
}
|
||||
|
||||
ext = vn_info_extension_get("VK_MESA_venus_protocol");
|
||||
if (instance->renderer_info.vk_mesa_venus_protocol_spec_version >
|
||||
ext->spec_version) {
|
||||
instance->renderer_info.vk_mesa_venus_protocol_spec_version =
|
||||
ext->spec_version;
|
||||
}
|
||||
if (renderer_info->vk_mesa_venus_protocol_spec_version > ext->spec_version)
|
||||
renderer_info->vk_mesa_venus_protocol_spec_version = ext->spec_version;
|
||||
|
||||
if (VN_DEBUG(INIT)) {
|
||||
vn_log(instance, "connected to renderer");
|
||||
vn_log(instance, "wire format version %d",
|
||||
instance->renderer_info.wire_format_version);
|
||||
renderer_info->wire_format_version);
|
||||
vn_log(instance, "vk xml version %d.%d.%d",
|
||||
VK_VERSION_MAJOR(instance->renderer_info.vk_xml_version),
|
||||
VK_VERSION_MINOR(instance->renderer_info.vk_xml_version),
|
||||
VK_VERSION_PATCH(instance->renderer_info.vk_xml_version));
|
||||
vn_log(
|
||||
instance, "VK_EXT_command_serialization spec version %d",
|
||||
instance->renderer_info.vk_ext_command_serialization_spec_version);
|
||||
VK_VERSION_MAJOR(renderer_info->vk_xml_version),
|
||||
VK_VERSION_MINOR(renderer_info->vk_xml_version),
|
||||
VK_VERSION_PATCH(renderer_info->vk_xml_version));
|
||||
vn_log(instance, "VK_EXT_command_serialization spec version %d",
|
||||
renderer_info->vk_ext_command_serialization_spec_version);
|
||||
vn_log(instance, "VK_MESA_venus_protocol spec version %d",
|
||||
instance->renderer_info.vk_mesa_venus_protocol_spec_version);
|
||||
renderer_info->vk_mesa_venus_protocol_spec_version);
|
||||
vn_log(instance, "supports blob id 0: %d",
|
||||
instance->renderer_info.supports_blob_id_0);
|
||||
renderer_info->supports_blob_id_0);
|
||||
}
|
||||
|
||||
return VK_SUCCESS;
|
||||
|
|
|
@ -38,7 +38,6 @@ struct vn_instance {
|
|||
struct driOptionCache available_dri_options;
|
||||
|
||||
struct vn_renderer *renderer;
|
||||
struct vn_renderer_info renderer_info;
|
||||
|
||||
struct vn_renderer_shmem_pool reply_shmem_pool;
|
||||
|
||||
|
|
|
@ -669,7 +669,7 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev)
|
|||
} else {
|
||||
/* cap the advertised api version */
|
||||
uint32_t version = MIN3(props->apiVersion, VN_MAX_API_VERSION,
|
||||
instance->renderer_info.vk_xml_version);
|
||||
instance->renderer->info.vk_xml_version);
|
||||
if (VK_VERSION_PATCH(version) > VK_VERSION_PATCH(props->apiVersion)) {
|
||||
version = version - VK_VERSION_PATCH(version) +
|
||||
VK_VERSION_PATCH(props->apiVersion);
|
||||
|
@ -745,7 +745,7 @@ vn_physical_device_init_memory_properties(
|
|||
instance, vn_physical_device_to_handle(physical_dev),
|
||||
&physical_dev->memory_properties);
|
||||
|
||||
if (!instance->renderer_info.has_cache_management) {
|
||||
if (!instance->renderer->info.has_cache_management) {
|
||||
VkPhysicalDeviceMemoryProperties *props =
|
||||
&physical_dev->memory_properties.memoryProperties;
|
||||
const uint32_t host_flags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
|
||||
|
@ -781,7 +781,7 @@ vn_physical_device_init_external_memory(
|
|||
* the extension.
|
||||
*/
|
||||
|
||||
if (!physical_dev->instance->renderer_info.has_dma_buf_import)
|
||||
if (!physical_dev->instance->renderer->info.has_dma_buf_import)
|
||||
return;
|
||||
|
||||
/* TODO We assume the renderer uses dma-bufs here. This should be
|
||||
|
@ -870,7 +870,6 @@ vn_physical_device_get_native_extensions(
|
|||
struct vk_device_extension_table *exts)
|
||||
{
|
||||
const struct vn_instance *instance = physical_dev->instance;
|
||||
const struct vn_renderer_info *renderer_info = &instance->renderer_info;
|
||||
const struct vk_device_extension_table *renderer_exts =
|
||||
&physical_dev->renderer_extensions;
|
||||
|
||||
|
@ -878,7 +877,7 @@ vn_physical_device_get_native_extensions(
|
|||
|
||||
/* see vn_physical_device_init_external_memory */
|
||||
const bool can_external_mem = renderer_exts->EXT_external_memory_dma_buf &&
|
||||
renderer_info->has_dma_buf_import;
|
||||
instance->renderer->info.has_dma_buf_import;
|
||||
|
||||
#ifdef ANDROID
|
||||
if (can_external_mem && renderer_exts->EXT_image_drm_format_modifier &&
|
||||
|
@ -1102,7 +1101,7 @@ vn_physical_device_init_renderer_version(
|
|||
/* device version for internal use is capped */
|
||||
physical_dev->renderer_version =
|
||||
MIN3(props.apiVersion, instance->renderer_api_version,
|
||||
instance->renderer_info.vk_xml_version);
|
||||
instance->renderer->info.vk_xml_version);
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
@ -2027,15 +2026,15 @@ vn_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
|
|||
break;
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:
|
||||
/* this is used by WSI */
|
||||
if (physical_dev->instance->renderer_info.pci.has_bus_info) {
|
||||
if (physical_dev->instance->renderer->info.pci.has_bus_info) {
|
||||
u.pci_bus_info->pciDomain =
|
||||
physical_dev->instance->renderer_info.pci.domain;
|
||||
physical_dev->instance->renderer->info.pci.domain;
|
||||
u.pci_bus_info->pciBus =
|
||||
physical_dev->instance->renderer_info.pci.bus;
|
||||
physical_dev->instance->renderer->info.pci.bus;
|
||||
u.pci_bus_info->pciDevice =
|
||||
physical_dev->instance->renderer_info.pci.device;
|
||||
physical_dev->instance->renderer->info.pci.device;
|
||||
u.pci_bus_info->pciFunction =
|
||||
physical_dev->instance->renderer_info.pci.function;
|
||||
physical_dev->instance->renderer->info.pci.function;
|
||||
}
|
||||
break;
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT:
|
||||
|
|
|
@ -377,7 +377,7 @@ vn_QueueSubmit(VkQueue _queue,
|
|||
|
||||
if (wsi_mem) {
|
||||
/* XXX this is always false and kills the performance */
|
||||
if (dev->instance->renderer_info.has_implicit_fencing) {
|
||||
if (dev->instance->renderer->info.has_implicit_fencing) {
|
||||
vn_renderer_submit(dev->renderer, &(const struct vn_renderer_submit){
|
||||
.bos = &wsi_mem->base_bo,
|
||||
.bo_count = 1,
|
||||
|
|
|
@ -251,13 +251,6 @@ vn_renderer_destroy(struct vn_renderer *renderer,
|
|||
renderer->ops.destroy(renderer, alloc);
|
||||
}
|
||||
|
||||
static inline void
|
||||
vn_renderer_get_info(struct vn_renderer *renderer,
|
||||
struct vn_renderer_info *info)
|
||||
{
|
||||
*info = renderer->info;
|
||||
}
|
||||
|
||||
static inline VkResult
|
||||
vn_renderer_submit(struct vn_renderer *renderer,
|
||||
const struct vn_renderer_submit *submit)
|
||||
|
|
Loading…
Reference in New Issue