diff options
author | Gurchetan Singh <gurchetansingh@google.com> | 2023-09-15 16:55:12 -0700 |
---|---|---|
committer | Gurchetan Singh <gurchetansingh@google.com> | 2024-03-05 18:20:47 -0800 |
commit | 53fa4959552db949e9437262d4abc9e9a72d75b7 (patch) | |
tree | 3396a2617f6bb3be6c0eab51b577821bf3e73e86 | |
parent | cc438923afa5112befb1178114150c67a532f2f1 (diff) | |
download | mesa3d-53fa4959552db949e9437262d4abc9e9a72d75b7.tar.gz |
ANDROID: vulkan: allow building Vulkan without libcompiler
Modify the meson and source files to allow building without
the compiler.
gfxstream-vulkan forwards the shader to the host, and doesn't
need to convert into NIR in the guest. This results in faster
builds and less parts of Mesa to build. Also venus does the
same thing too, that's what the build is keyed on right now
as an in-tree user.
Bug: 327408955
Test: compile
Change-Id: Idd9529cf3dca54156bb42458b414d1937e674855
-rw-r--r-- | src/meson.build | 4 | ||||
-rw-r--r-- | src/vulkan/runtime/meson.build | 51 | ||||
-rw-r--r-- | src/vulkan/runtime/vk_command_buffer.c | 4 | ||||
-rw-r--r-- | src/vulkan/util/meson.build | 11 | ||||
-rw-r--r-- | src/vulkan/util/vk_util.h | 6 |
5 files changed, 50 insertions, 26 deletions
diff --git a/src/meson.build b/src/meson.build index 62c65face77..8d78c822d11 100644 --- a/src/meson.build +++ b/src/meson.build @@ -69,7 +69,9 @@ endif if with_gallium subdir('mapi') endif -subdir('compiler') +if with_vk_compiler + subdir('compiler') +endif if with_tools.contains('drm-shim') subdir('drm-shim') endif diff --git a/src/vulkan/runtime/meson.build b/src/vulkan/runtime/meson.build index f706ba3ea25..39a2626f1b9 100644 --- a/src/vulkan/runtime/meson.build +++ b/src/vulkan/runtime/meson.build @@ -60,31 +60,16 @@ vulkan_runtime_files = files( 'vk_fence.h', 'vk_framebuffer.c', 'vk_framebuffer.h', - 'vk_graphics_state.c', - 'vk_graphics_state.h', 'vk_image.c', 'vk_image.h', 'vk_instance.c', 'vk_instance.h', 'vk_log.c', 'vk_log.h', - 'vk_meta.c', - 'vk_meta.h', 'vk_meta_object_list.c', 'vk_meta_object_list.h', - 'vk_meta_blit_resolve.c', - 'vk_meta_draw_rects.c', - 'vk_meta_clear.c', - 'vk_nir.c', - 'vk_nir.h', - 'vk_nir_convert_ycbcr.c', - 'vk_nir_convert_ycbcr.h', 'vk_object.c', 'vk_object.h', - 'vk_pipeline.c', - 'vk_pipeline.h', - 'vk_pipeline_cache.c', - 'vk_pipeline_cache.h', 'vk_physical_device.c', 'vk_physical_device.h', 'vk_pipeline_layout.c', @@ -98,10 +83,6 @@ vulkan_runtime_files = files( 'vk_sampler.h', 'vk_semaphore.c', 'vk_semaphore.h', - 'vk_shader.c', - 'vk_shader.h', - 'vk_shader_module.c', - 'vk_shader_module.h', 'vk_standard_sample_locations.c', 'vk_standard_sample_locations.h', 'vk_sync.c', @@ -114,8 +95,6 @@ vulkan_runtime_files = files( 'vk_sync_timeline.h', 'vk_synchronization.c', 'vk_synchronization.h', - 'vk_texcompress_etc2.c', - 'vk_texcompress_etc2.h', 'vk_video.c', 'vk_video.h', 'vk_ycbcr_conversion.c', @@ -125,12 +104,36 @@ vulkan_runtime_files = files( vulkan_runtime_deps = [ vulkan_wsi_deps, idep_mesautil, - idep_nir_headers, idep_vulkan_util, ] +vulkan_compiler_files = files( + 'vk_graphics_state.c', + 'vk_graphics_state.h', + 'vk_meta.c', + 'vk_meta.h', + 'vk_meta_blit_resolve.c', + 'vk_meta_draw_rects.c', + 'vk_meta_clear.c', + 'vk_nir.c', + 'vk_nir.h', + 'vk_nir_convert_ycbcr.c', + 'vk_nir_convert_ycbcr.h', + 'vk_pipeline.c', + 'vk_pipeline.h', + 'vk_pipeline_cache.c', + 'vk_pipeline_cache.h', + 'vk_shader.c', + 'vk_shader.h', + 'vk_shader_module.c', + 'vk_shader_module.h', + 'vk_texcompress_etc2.c', + 'vk_texcompress_etc2.h', +) + if with_vk_compiler - vulkan_runtime_deps += [idep_nir, idep_vtn] + vulkan_runtime_deps += [idep_vtn, idep_nir] + vulkan_runtime_files += vulkan_compiler_files endif if dep_libdrm.found() @@ -143,7 +146,7 @@ if with_platform_android vulkan_runtime_deps += dep_android endif -if prog_glslang.found() +if prog_glslang.found() and with_vk_compiler vulkan_runtime_files += files('vk_texcompress_astc.c', 'vk_texcompress_astc.h') vulkan_runtime_files += custom_target( 'astc_spv.h', diff --git a/src/vulkan/runtime/vk_command_buffer.c b/src/vulkan/runtime/vk_command_buffer.c index f678d9bc0a1..7e4c3921c87 100644 --- a/src/vulkan/runtime/vk_command_buffer.c +++ b/src/vulkan/runtime/vk_command_buffer.c @@ -40,7 +40,9 @@ vk_command_buffer_init(struct vk_command_pool *pool, command_buffer->pool = pool; command_buffer->level = level; command_buffer->ops = ops; +#if USE_VK_COMPILER vk_dynamic_graphics_state_init(&command_buffer->dynamic_graphics_state); +#endif command_buffer->state = MESA_VK_COMMAND_BUFFER_STATE_INITIAL; command_buffer->record_result = VK_SUCCESS; vk_cmd_queue_init(&command_buffer->cmd_queue, &pool->alloc); @@ -56,7 +58,9 @@ vk_command_buffer_init(struct vk_command_pool *pool, void vk_command_buffer_reset(struct vk_command_buffer *command_buffer) { +#if USE_VK_COMPILER vk_dynamic_graphics_state_clear(&command_buffer->dynamic_graphics_state); +#endif command_buffer->state = MESA_VK_COMMAND_BUFFER_STATE_INITIAL; command_buffer->record_result = VK_SUCCESS; vk_command_buffer_reset_render_pass(command_buffer); diff --git a/src/vulkan/util/meson.build b/src/vulkan/util/meson.build index 9dbe9dddfa7..2f712bb410c 100644 --- a/src/vulkan/util/meson.build +++ b/src/vulkan/util/meson.build @@ -71,6 +71,9 @@ files_vulkan_util = files( 'vk_format.c', 'vk_util.c', 'vk_util.h', +) + +files_vulkan_util_compiler = files( 'vk_util_compiler.c', 'vk_util_compiler.h', ) @@ -120,12 +123,18 @@ vk_extensions = custom_target( depend_files : vk_extensions_gen_depend_files, ) +vulkan_util_deps = [vulkan_wsi_deps, idep_mesautil] +if with_vk_compiler + files_vulkan_util += files_vulkan_util_compiler + vulkan_util_deps += [idep_nir_headers] +endif + libvulkan_util = static_library( 'vulkan_util', [files_vulkan_util, vk_dispatch_table, vk_enum_to_str, vk_struct_type_cast, vk_extensions], include_directories : [inc_include, inc_src], - dependencies : [vulkan_wsi_deps, idep_mesautil, idep_nir_headers], + dependencies : [vulkan_util_deps], c_args : [c_msvc_compat_args], gnu_symbol_visibility : 'hidden', build_by_default : false, diff --git a/src/vulkan/util/vk_util.h b/src/vulkan/util/vk_util.h index e691acb8609..c38eb9c1db7 100644 --- a/src/vulkan/util/vk_util.h +++ b/src/vulkan/util/vk_util.h @@ -24,10 +24,16 @@ #define VK_UTIL_H #include "util/macros.h" + #include <stdlib.h> #include <string.h> +#if USE_VK_COMPILER #include "vk_util_compiler.h" +#else +#include <stdbool.h> +#endif + #include "vk_struct_type_cast.h" #ifdef __cplusplus |