From f297f05c67610b109866de0b6ffceddd356aa5fb Mon Sep 17 00:00:00 2001 From: James Park Date: Thu, 8 Sep 2022 09:15:00 -0700 Subject: [PATCH] meson,amd: Remove Windows libelf wrap Functionality isn't worth the maintenance cost. Signed-off-by: Yonggang Luo Reviewed-by: Samuel Pitoiset Part-of: --- .gitlab-ci/build/gitlab-ci.yml | 1 + meson.build | 8 ++------ src/amd/common/ac_binary.c | 2 ++ src/amd/common/ac_rgp.c | 6 ++++++ src/amd/common/meson.build | 11 ++++++++--- src/amd/vulkan/radv_shader.c | 18 ++++++++++++++++++ subprojects/libelf.wrap | 6 ------ 7 files changed, 37 insertions(+), 15 deletions(-) delete mode 100644 subprojects/libelf.wrap diff --git a/.gitlab-ci/build/gitlab-ci.yml b/.gitlab-ci/build/gitlab-ci.yml index bf4ea873b71..2d91638fb24 100644 --- a/.gitlab-ci/build/gitlab-ci.yml +++ b/.gitlab-ci/build/gitlab-ci.yml @@ -545,6 +545,7 @@ debian-mingw32-x86_64: VULKAN_DRIVERS: "swrast,amd,microsoft-experimental" GALLIUM_ST: > -D gallium-opencl=icd + -D opencl-native=false -D opencl-spirv=true -D microsoft-clc=enabled -D static-libclc=all diff --git a/meson.build b/meson.build index 250b52886e5..4f72afa8219 100644 --- a/meson.build +++ b/meson.build @@ -1903,12 +1903,8 @@ with_opencl_native = _opencl != 'disabled' and get_option('opencl-native') if (with_amd_vk or with_gallium_radeonsi or (with_gallium_opencl and with_opencl_native) or (with_gallium_r600 and with_llvm)) - if with_platform_windows - dep_elf = dependency('libelf', required : false, fallback : ['libelf', 'libelf_dep']) - else - dep_elf = dependency('libelf', required : false) - endif - if not dep_elf.found() + dep_elf = dependency('libelf', required : false) + if not with_platform_windows and not dep_elf.found() dep_elf = cc.find_library('elf') endif else diff --git a/src/amd/common/ac_binary.c b/src/amd/common/ac_binary.c index 96c83fa8a71..a22392efb48 100644 --- a/src/amd/common/ac_binary.c +++ b/src/amd/common/ac_binary.c @@ -27,8 +27,10 @@ #include "util/u_math.h" #include "util/u_memory.h" +#ifndef _WIN32 #include #include +#endif #include #include diff --git a/src/amd/common/ac_rgp.c b/src/amd/common/ac_rgp.c index e0180b6e1c6..e319d96a524 100644 --- a/src/amd/common/ac_rgp.c +++ b/src/amd/common/ac_rgp.c @@ -1002,6 +1002,7 @@ static void ac_sqtt_dump_spm(const struct ac_spm_trace_data *spm_trace, fseek(output, file_offset, SEEK_SET); } +#ifndef _WIN32 static void ac_sqtt_dump_data(struct radeon_info *rad_info, struct ac_thread_trace *thread_trace, const struct ac_spm_trace_data *spm_trace, @@ -1188,11 +1189,15 @@ static void ac_sqtt_dump_data(struct radeon_info *rad_info, ac_sqtt_dump_spm(spm_trace, file_offset, output); } } +#endif int ac_dump_rgp_capture(struct radeon_info *info, struct ac_thread_trace *thread_trace, const struct ac_spm_trace_data *spm_trace) { +#ifdef _WIN32 + return -1; +#else char filename[2048]; struct tm now; time_t t; @@ -1215,4 +1220,5 @@ int ac_dump_rgp_capture(struct radeon_info *info, fclose(f); return 0; +#endif } diff --git a/src/amd/common/meson.build b/src/amd/common/meson.build index 0b511b534a0..2e6e1daf176 100644 --- a/src/amd/common/meson.build +++ b/src/amd/common/meson.build @@ -73,8 +73,6 @@ amd_common_files = files( 'ac_shader_util.h', 'ac_gpu_info.c', 'ac_gpu_info.h', - 'ac_rtld.c', - 'ac_rtld.h', 'ac_surface.c', 'ac_surface.h', 'ac_debug.c', @@ -89,7 +87,6 @@ amd_common_files = files( 'ac_rgp.h', 'ac_msgpack.c', 'ac_msgpack.h', - 'ac_rgp_elf_object_pack.c', 'ac_nir.c', 'ac_nir.h', 'ac_nir_opt_outputs.c', @@ -104,6 +101,14 @@ amd_common_files = files( 'ac_perfcounter.h', ) +if not with_platform_windows + amd_common_files += files( + 'ac_rtld.c', + 'ac_rtld.h', + 'ac_rgp_elf_object_pack.c', + ) +endif + libamd_common = static_library( 'amd_common', [amd_common_files, sid_tables_h, amdgfxregs_h, gfx10_format_table_c], diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 52d53e7b1fb..d6a0858dbbc 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -41,7 +41,9 @@ #include "util/debug.h" #include "ac_binary.h" #include "ac_nir.h" +#ifndef _WIN32 #include "ac_rtld.h" +#endif #include "aco_interface.h" #include "sid.h" #include "vk_format.h" @@ -1907,6 +1909,7 @@ radv_postprocess_config(const struct radv_device *device, const struct ac_shader } } +#ifndef _WIN32 static bool radv_open_rtld_binary(struct radv_device *device, const struct radv_shader *shader, const struct radv_shader_binary *binary, struct ac_rtld_binary *rtld_binary) @@ -1950,12 +1953,16 @@ radv_open_rtld_binary(struct radv_device *device, const struct radv_shader *shad return ac_rtld_open(rtld_binary, open_info); } +#endif bool radv_shader_binary_upload(struct radv_device *device, const struct radv_shader_binary *binary, struct radv_shader *shader, void *dest_ptr) { if (binary->type == RADV_BINARY_TYPE_RTLD) { +#ifdef _WIN32 + return false; +#else struct ac_rtld_binary rtld_binary = {0}; if (!radv_open_rtld_binary(device, shader, binary, &rtld_binary)) { @@ -1977,6 +1984,7 @@ radv_shader_binary_upload(struct radv_device *device, const struct radv_shader_b shader->code_ptr = dest_ptr; ac_rtld_close(&rtld_binary); +#endif } else { struct radv_shader_binary_legacy *bin = (struct radv_shader_binary_legacy *)binary; memcpy(dest_ptr, bin->data + bin->stats_size, bin->code_size); @@ -2004,6 +2012,10 @@ radv_shader_create(struct radv_device *device, const struct radv_shader_binary * shader->ref_count = 1; if (binary->type == RADV_BINARY_TYPE_RTLD) { +#ifdef _WIN32 + free(shader); + return NULL; +#else struct ac_rtld_binary rtld_binary = {0}; if (!radv_open_rtld_binary(device, shader, binary, &rtld_binary)) { @@ -2031,6 +2043,7 @@ radv_shader_create(struct radv_device *device, const struct radv_shader_binary * shader->code_size = rtld_binary.rx_size; shader->exec_size = rtld_binary.exec_size; ac_rtld_close(&rtld_binary); +#endif } else { assert(binary->type == RADV_BINARY_TYPE_LEGACY); config = ((struct radv_shader_binary_legacy *)binary)->base.config; @@ -2050,6 +2063,10 @@ radv_shader_create(struct radv_device *device, const struct radv_shader_binary * } if (binary->type == RADV_BINARY_TYPE_RTLD) { +#ifdef _WIN32 + free(shader); + return NULL; +#else struct radv_shader_binary_rtld *bin = (struct radv_shader_binary_rtld *)binary; struct ac_rtld_binary rtld_binary = {0}; @@ -2075,6 +2092,7 @@ radv_shader_create(struct radv_device *device, const struct radv_shader_binary * shader->disasm_string[disasm_size] = 0; } ac_rtld_close(&rtld_binary); +#endif } else { struct radv_shader_binary_legacy *bin = (struct radv_shader_binary_legacy *)binary; diff --git a/subprojects/libelf.wrap b/subprojects/libelf.wrap deleted file mode 100644 index 5846f2dfc10..00000000000 --- a/subprojects/libelf.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-git] -directory = libelf-lfg-win32-1.1.0-freebsd-12.1.0 - -url = https://github.com/LagFreeGames/libelf-lfg-win32.git -revision = 1.1.0 -depth = 1