anv: Move extension tables to anv_device.c

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tested-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8792>
This commit is contained in:
Jason Ekstrand 2021-01-29 22:40:39 -06:00 committed by Marge Bot
parent 2d6de5d227
commit 27d496706e
6 changed files with 192 additions and 135 deletions

View File

@ -24,8 +24,6 @@ include $(CLEAR_VARS)
include $(LOCAL_PATH)/Makefile.sources
VK_ENTRYPOINTS_GEN_SCRIPT := $(MESA_TOP)/src/vulkan/util/vk_entrypoints_gen.py
ANV_EXTENSIONS_GEN_SCRIPT := $(LOCAL_PATH)/vulkan/anv_extensions_gen.py
ANV_EXTENSIONS_SCRIPT := $(LOCAL_PATH)/vulkan/anv_extensions.py
VULKAN_API_XML := $(MESA_TOP)/src/vulkan/registry/vk.xml
VULKAN_COMMON_INCLUDES := \
@ -256,22 +254,6 @@ $(intermediates)/vulkan/anv_entrypoints.c: $(VK_ENTRYPOINTS_GEN_SCRIPT) \
$(intermediates)/vulkan/anv_entrypoints.h: $(intermediates)/vulkan/anv_entrypoints.c
$(intermediates)/vulkan/anv_extensions.c: $(ANV_EXTENSIONS_GEN_SCRIPT) \
$(ANV_EXTENSIONS_SCRIPT) \
$(VULKAN_API_XML)
@mkdir -p $(dir $@)
$(MESA_PYTHON2) $(ANV_EXTENSIONS_GEN_SCRIPT) \
--xml $(VULKAN_API_XML) \
--out-c $@
$(intermediates)/vulkan/anv_extensions.h: $(ANV_EXTENSIONS_GEN_SCRIPT) \
$(ANV_EXTENSIONS_SCRIPT) \
$(VULKAN_API_XML)
@mkdir -p $(dir $@)
$(MESA_PYTHON2) $(ANV_EXTENSIONS_GEN_SCRIPT) \
--xml $(VULKAN_API_XML) \
--out-h $@
LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES)
LOCAL_HEADER_LIBRARIES += $(VULKAN_COMMON_HEADER_LIBRARIES)

View File

@ -307,9 +307,7 @@ VULKAN_GEM_STUB_FILES := \
VULKAN_GENERATED_FILES := \
vulkan/anv_entrypoints.c \
vulkan/anv_entrypoints.h \
vulkan/anv_extensions.c \
vulkan/anv_extensions.h
vulkan/anv_entrypoints.h
VULKAN_GENX_FILES := \
vulkan/genX_blorp_exec.c \

View File

@ -49,6 +49,7 @@
#include "common/gen_defines.h"
#include "common/gen_uuid.h"
#include "compiler/glsl_types.h"
#include "perf/gen_perf.h"
#include "genxml/gen7_pack.h"
@ -134,6 +135,186 @@ anv_compute_heap_size(int fd, uint64_t gtt_size)
return MIN2(available_ram, available_gtt);
}
#if defined(VK_USE_PLATFORM_WAYLAND_KHR) || \
defined(VK_USE_PLATFORM_XCB_KHR) || \
defined(VK_USE_PLATFORM_XLIB_KHR) || \
defined(VK_USE_PLATFORM_DISPLAY_KHR)
#define ANV_USE_WSI_PLATFORM
#endif
#ifdef ANDROID
#define ANV_API_VERSION VK_MAKE_VERSION(1, 1, VK_HEADER_VERSION)
#else
#define ANV_API_VERSION VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION)
#endif
VkResult anv_EnumerateInstanceVersion(
uint32_t* pApiVersion)
{
*pApiVersion = ANV_API_VERSION;
return VK_SUCCESS;
}
static const struct vk_instance_extension_table instance_extensions = {
.KHR_device_group_creation = true,
.KHR_external_fence_capabilities = true,
.KHR_external_memory_capabilities = true,
.KHR_external_semaphore_capabilities = true,
.KHR_get_physical_device_properties2 = true,
.EXT_debug_report = true,
#ifdef ANV_USE_WSI_PLATFORM
.KHR_get_surface_capabilities2 = true,
.KHR_surface = true,
.KHR_surface_protected_capabilities = true,
#endif
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
.KHR_wayland_surface = true,
#endif
#ifdef VK_USE_PLATFORM_XCB_KHR
.KHR_xcb_surface = true,
#endif
#ifdef VK_USE_PLATFORM_XLIB_KHR
.KHR_xlib_surface = true,
#endif
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
.EXT_acquire_xlib_display = true,
#endif
#ifdef VK_USE_PLATFORM_DISPLAY_KHR
.KHR_display = true,
.KHR_get_display_properties2 = true,
.EXT_direct_mode_display = true,
.EXT_display_surface_counter = true,
#endif
};
static void
get_device_extensions(const struct anv_physical_device *device,
struct vk_device_extension_table *ext)
{
*ext = (struct vk_device_extension_table) {
.KHR_8bit_storage = device->info.gen >= 8,
.KHR_16bit_storage = device->info.gen >= 8,
.KHR_bind_memory2 = true,
.KHR_buffer_device_address = device->has_a64_buffer_access,
.KHR_copy_commands2 = true,
.KHR_create_renderpass2 = true,
.KHR_dedicated_allocation = true,
.KHR_deferred_host_operations = true,
.KHR_depth_stencil_resolve = true,
.KHR_descriptor_update_template = true,
.KHR_device_group = true,
.KHR_draw_indirect_count = true,
.KHR_driver_properties = true,
.KHR_external_fence = device->has_syncobj_wait,
.KHR_external_fence_fd = device->has_syncobj_wait,
.KHR_external_memory = true,
.KHR_external_memory_fd = true,
.KHR_external_semaphore = true,
.KHR_external_semaphore_fd = true,
.KHR_get_memory_requirements2 = true,
.KHR_image_format_list = true,
.KHR_imageless_framebuffer = true,
#ifdef ANV_USE_WSI_PLATFORM
.KHR_incremental_present = true,
#endif
.KHR_maintenance1 = true,
.KHR_maintenance2 = true,
.KHR_maintenance3 = true,
.KHR_multiview = true,
.KHR_performance_query =
device->use_softpin && device->perf &&
(device->perf->i915_perf_version >= 3 ||
INTEL_DEBUG & DEBUG_NO_OACONFIG) &&
device->use_call_secondary,
.KHR_pipeline_executable_properties = true,
.KHR_push_descriptor = true,
.KHR_relaxed_block_layout = true,
.KHR_sampler_mirror_clamp_to_edge = true,
.KHR_sampler_ycbcr_conversion = true,
.KHR_separate_depth_stencil_layouts = true,
.KHR_shader_atomic_int64 = device->info.gen >= 9 &&
device->use_softpin,
.KHR_shader_clock = true,
.KHR_shader_draw_parameters = true,
.KHR_shader_float16_int8 = device->info.gen >= 8,
.KHR_shader_float_controls = device->info.gen >= 8,
.KHR_shader_non_semantic_info = true,
.KHR_shader_subgroup_extended_types = device->info.gen >= 8,
.KHR_shader_terminate_invocation = true,
.KHR_spirv_1_4 = true,
.KHR_storage_buffer_storage_class = true,
#ifdef ANV_USE_WSI_PLATFORM
.KHR_swapchain = true,
.KHR_swapchain_mutable_format = true,
#endif
.KHR_timeline_semaphore = true,
.KHR_uniform_buffer_standard_layout = true,
.KHR_variable_pointers = true,
.KHR_vulkan_memory_model = true,
.KHR_workgroup_memory_explicit_layout = true,
.KHR_zero_initialize_workgroup_memory = true,
.EXT_4444_formats = true,
.EXT_buffer_device_address = device->has_a64_buffer_access,
.EXT_calibrated_timestamps = device->has_reg_timestamp,
.EXT_conditional_rendering = device->info.gen >= 8 ||
device->info.is_haswell,
.EXT_custom_border_color = device->info.gen >= 8,
.EXT_depth_clip_enable = true,
.EXT_descriptor_indexing = device->has_a64_buffer_access &&
device->has_bindless_images,
#ifdef VK_USE_PLATFORM_DISPLAY_KHR
.EXT_display_control = true,
#endif
.EXT_extended_dynamic_state = true,
.EXT_external_memory_dma_buf = true,
.EXT_external_memory_host = true,
.EXT_fragment_shader_interlock = device->info.gen >= 9,
.EXT_global_priority = device->has_context_priority,
.EXT_host_query_reset = true,
.EXT_image_robustness = true,
.EXT_index_type_uint8 = true,
.EXT_inline_uniform_block = true,
.EXT_line_rasterization = true,
.EXT_memory_budget = device->has_mem_available,
.EXT_pci_bus_info = true,
.EXT_pipeline_creation_cache_control = true,
.EXT_pipeline_creation_feedback = true,
.EXT_post_depth_coverage = device->info.gen >= 9,
.EXT_private_data = true,
#ifdef ANDROID
.EXT_queue_family_foreign = ANDROID,
#endif
.EXT_robustness2 = true,
.EXT_sample_locations = true,
.EXT_sampler_filter_minmax = device->info.gen >= 9,
.EXT_scalar_block_layout = true,
.EXT_separate_stencil_usage = true,
.EXT_shader_atomic_float = true,
.EXT_shader_demote_to_helper_invocation = true,
.EXT_shader_stencil_export = device->info.gen >= 9,
.EXT_shader_subgroup_ballot = true,
.EXT_shader_subgroup_vote = true,
.EXT_shader_viewport_index_layer = true,
.EXT_subgroup_size_control = true,
.EXT_texel_buffer_alignment = true,
.EXT_transform_feedback = true,
.EXT_vertex_attribute_divisor = true,
.EXT_ycbcr_image_arrays = true,
#ifdef ANDROID
.ANDROID_external_memory_android_hardware_buffer = true,
.ANDROID_native_buffer = true,
#endif
.GOOGLE_decorate_string = true,
.GOOGLE_hlsl_functionality1 = true,
.GOOGLE_user_type = true,
.INTEL_performance_query = device->perf &&
device->perf->i915_perf_version >= 3,
.INTEL_shader_integer_functions2 = device->info.gen >= 8,
.NV_compute_shader_derivatives = true,
};
}
static VkResult
anv_physical_device_init_heaps(struct anv_physical_device *device, int fd)
{
@ -607,9 +788,7 @@ anv_physical_device_try_create(struct anv_instance *instance,
anv_measure_device_init(device);
anv_physical_device_get_supported_extensions(device,
&device->vk.supported_extensions);
get_device_extensions(device, &device->vk.supported_extensions);
device->local_fd = fd;
@ -685,7 +864,7 @@ VkResult anv_EnumerateInstanceExtensionProperties(
return vk_error(VK_ERROR_LAYER_NOT_PRESENT);
return vk_enumerate_instance_extension_properties(
&anv_instance_extensions_supported, pPropertyCount, pProperties);
&instance_extensions, pPropertyCount, pProperties);
}
static void
@ -723,10 +902,8 @@ VkResult anv_CreateInstance(
vk_instance_dispatch_table_from_entrypoints(
&dispatch_table, &anv_instance_entrypoints, true);
result = vk_instance_init(&instance->vk,
&anv_instance_extensions_supported,
&dispatch_table,
pCreateInfo, pAllocator);
result = vk_instance_init(&instance->vk, &instance_extensions,
&dispatch_table, pCreateInfo, pAllocator);
if (result != VK_SUCCESS) {
vk_free(pAllocator, instance);
return vk_error(result);
@ -1623,7 +1800,7 @@ void anv_GetPhysicalDeviceProperties(
};
*pProperties = (VkPhysicalDeviceProperties) {
.apiVersion = anv_physical_device_api_version(pdevice),
.apiVersion = ANV_API_VERSION,
.driverVersion = vk_get_driver_version(),
.vendorID = 0x8086,
.deviceID = pdevice->info.chipset_id,

View File

@ -1,70 +0,0 @@
COPYRIGHT = """\
/*
* Copyright 2017 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
"""
import os.path
import re
import sys
import xml.etree.ElementTree as et
from anv_extensions import *
VULKAN_UTIL = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../vulkan/util'))
sys.path.append(VULKAN_UTIL)
from vk_extensions_gen import *
def get_xml_patch_version(xml_file):
xml = et.parse(xml_file)
for d in xml.findall('.types/type'):
if d.get('category', None) != 'define':
continue
name = d.find('.name')
if name.text != 'VK_HEADER_VERSION':
continue;
return name.tail.strip()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--out-c', help='Output C file.')
parser.add_argument('--out-h', help='Output H file.')
parser.add_argument('--xml',
help='Vulkan API XML file.',
required=True,
action='append',
dest='xml_files')
args = parser.parse_args()
includes = [
"perf/gen_perf.h"
]
max_version = MAX_API_VERSION
max_version.patch = int(get_xml_patch_version(args.xml_files[0]))
gen_extensions('anv', args.xml_files, API_VERSIONS, max_version,
EXTENSIONS, args.out_c, args.out_h, includes)

View File

@ -91,7 +91,6 @@ struct gen_perf_query_result;
#include "anv_android.h"
#include "anv_entrypoints.h"
#include "anv_extensions.h"
#include "isl/isl.h"
#include "dev/gen_debug.h"
@ -1094,11 +1093,6 @@ struct anv_instance {
VkResult anv_init_wsi(struct anv_physical_device *physical_device);
void anv_finish_wsi(struct anv_physical_device *physical_device);
extern const struct vk_instance_extension_table anv_instance_extensions_supported;
uint32_t anv_physical_device_api_version(struct anv_physical_device *dev);
bool anv_physical_device_extension_supported(struct anv_physical_device *dev,
const char *name);
struct anv_queue_submit {
struct anv_cmd_buffer * cmd_buffer;

View File

@ -18,8 +18,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
anv_extensions_py = files('anv_extensions.py')
anv_entrypoints = custom_target(
'anv_entrypoints',
input : [vk_entrypoints_gen, vk_api_xml],
@ -34,28 +32,6 @@ anv_entrypoints = custom_target(
],
)
anv_extensions_c = custom_target(
'anv_extensions.c',
input : ['anv_extensions_gen.py', vk_api_xml],
output : 'anv_extensions.c',
command : [
prog_python, '@INPUT0@', '--xml', '@INPUT1@',
'--out-c', '@OUTPUT@',
],
depend_files : [anv_extensions_py, vk_extensions_gen],
)
anv_extensions_h = custom_target(
'anv_extensions.h',
input : ['anv_extensions_gen.py', vk_api_xml],
output : 'anv_extensions.h',
command : [
prog_python, '@INPUT0@', '--xml', '@INPUT1@',
'--out-h', '@OUTPUT@',
],
depend_files : anv_extensions_py,
)
intel_icd = custom_target(
'intel_icd',
input : [vk_icd_gen, vk_api_xml],
@ -88,7 +64,7 @@ foreach g : [['70', ['gen7_cmd_buffer.c']], ['75', ['gen7_cmd_buffer.c']],
_gen = g[0]
libanv_gen_libs += static_library(
'anv_gen@0@'.format(_gen),
[anv_gen_files, g[1], anv_entrypoints[0], anv_extensions_h],
[anv_gen_files, g[1], anv_entrypoints[0]],
include_directories : [
inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_compiler, inc_intel, inc_vulkan_wsi,
],
@ -181,7 +157,7 @@ endif
libanv_common = static_library(
'anv_common',
[
libanv_files, anv_entrypoints, anv_extensions_c, anv_extensions_h, sha1_h,
libanv_files, anv_entrypoints, sha1_h,
gen_xml_pack,
],
include_directories : [
@ -195,7 +171,7 @@ libanv_common = static_library(
libvulkan_intel = shared_library(
'vulkan_intel',
[files('anv_gem.c'), anv_entrypoints[0], anv_extensions_h],
[files('anv_gem.c'), anv_entrypoints[0]],
include_directories : [
inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_intel, inc_compiler, inc_vulkan_wsi,
],
@ -230,7 +206,7 @@ endif
if with_tests
libvulkan_intel_test = static_library(
'vulkan_intel_test',
[files('anv_gem_stubs.c'), anv_entrypoints[0], anv_extensions_h],
[files('anv_gem_stubs.c'), anv_entrypoints[0]],
include_directories : [
inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_intel, inc_compiler, inc_vulkan_wsi,
],
@ -254,7 +230,7 @@ if with_tests
'anv_@0@'.format(t),
executable(
t,
['tests/@0@.c'.format(t), anv_entrypoints[0], anv_extensions_h],
['tests/@0@.c'.format(t), anv_entrypoints[0]],
c_args : [ c_sse2_args ],
link_with : libvulkan_intel_test,
dependencies : [dep_libdrm, dep_thread, dep_m, dep_valgrind, idep_vulkan_util, ],