Convert spvc build flag to a runtime toggle
Also moves some of the spirv_cross code into the main library that was feature guarded, since spvc requires it. BUG=dawn:281 Change-Id: I482d1d5a5c851956d3815bad90665c52a1ea15bb Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/13860 Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
parent
127cd1f258
commit
1954436fe2
7
BUILD.gn
7
BUILD.gn
|
@ -124,15 +124,12 @@ source_set("libdawn_native_sources") {
|
|||
":libdawn_native_headers",
|
||||
":libdawn_native_utils_gen",
|
||||
"${dawn_root}/src/common",
|
||||
"${dawn_shaderc_dir}:libshaderc_spvc",
|
||||
"${dawn_spirv_tools_dir}:spvtools_val",
|
||||
"third_party:spirv_cross",
|
||||
]
|
||||
defines = []
|
||||
if (dawn_use_spvc) {
|
||||
deps += [ "${dawn_shaderc_dir}:libshaderc_spvc" ]
|
||||
defines += [ "DAWN_USE_SPVC" ]
|
||||
}
|
||||
|
||||
defines = []
|
||||
configs += [ ":libdawn_native_internal" ]
|
||||
libs = []
|
||||
|
||||
|
|
2
DEPS
2
DEPS
|
@ -68,7 +68,7 @@ deps = {
|
|||
'condition': 'dawn_standalone',
|
||||
},
|
||||
'third_party/shaderc': {
|
||||
'url': '{chromium_git}/external/github.com/google/shaderc@c7f5cfd07f41c997045d76fd09c934691ff8a6c6',
|
||||
'url': '{chromium_git}/external/github.com/google/shaderc@eca11511a0c09dd599837862c96658a91e927a3a',
|
||||
'condition': 'dawn_standalone',
|
||||
},
|
||||
|
||||
|
|
|
@ -44,10 +44,6 @@ declare_args() {
|
|||
# GLSL/HLSL/MSL compiler. This implicitly pulls in the GLSL
|
||||
# compiler, since it is a sub-class of if.
|
||||
dawn_enable_cross_reflection = false
|
||||
|
||||
# Enables using spvc for accessing SPIR-V toolchain, instead of
|
||||
# directly accessing it in Dawn.
|
||||
dawn_use_spvc = false
|
||||
}
|
||||
|
||||
# GN does not allow reading a variable defined in the same declare_args().
|
||||
|
|
|
@ -82,7 +82,11 @@ namespace dawn_native {
|
|||
"versions of Windows prior to build 1809, or when this toggle is turned off, Dawn "
|
||||
"will emulate a render pass."}},
|
||||
{Toggle::SkipValidation,
|
||||
{"skip_validation", "Skip expensive validation of Dawn commands."}}}};
|
||||
{"skip_validation", "Skip expensive validation of Dawn commands."}},
|
||||
{Toggle::UseSpvc,
|
||||
{"use_spvc",
|
||||
"Enable use of spvc for shader compilation, instead of accessing spirv_cross "
|
||||
"directly."}}}};
|
||||
} // anonymous namespace
|
||||
|
||||
void TogglesSet::SetToggle(Toggle toggle, bool enabled) {
|
||||
|
|
|
@ -33,7 +33,7 @@ namespace dawn_native {
|
|||
UseD3D12ResourceHeapTier2,
|
||||
UseD3D12RenderPass,
|
||||
SkipValidation,
|
||||
|
||||
UseSpvc,
|
||||
EnumCount,
|
||||
InvalidEnum = EnumCount,
|
||||
};
|
||||
|
|
|
@ -50,61 +50,6 @@ static_library("spirv_cross") {
|
|||
public_configs = [ ":spirv_cross_public" ]
|
||||
configs += [ ":spirv_cross_internal" ]
|
||||
|
||||
sources = [
|
||||
"${spirv_cross_dir}/GLSL.std.450.h",
|
||||
"${spirv_cross_dir}/spirv.hpp",
|
||||
"${spirv_cross_dir}/spirv_cfg.cpp",
|
||||
"${spirv_cross_dir}/spirv_cfg.hpp",
|
||||
"${spirv_cross_dir}/spirv_common.hpp",
|
||||
"${spirv_cross_dir}/spirv_cross.cpp",
|
||||
"${spirv_cross_dir}/spirv_cross.hpp",
|
||||
"${spirv_cross_dir}/spirv_cross_containers.hpp",
|
||||
"${spirv_cross_dir}/spirv_cross_error_handling.hpp",
|
||||
"${spirv_cross_dir}/spirv_cross_parsed_ir.cpp",
|
||||
"${spirv_cross_dir}/spirv_cross_parsed_ir.hpp",
|
||||
"${spirv_cross_dir}/spirv_parser.cpp",
|
||||
"${spirv_cross_dir}/spirv_parser.hpp",
|
||||
]
|
||||
|
||||
need_glsl_cross =
|
||||
dawn_enable_opengl || dawn_enable_cross_reflection || dawn_use_spvc
|
||||
need_reflection_cross = dawn_enable_cross_reflection || dawn_use_spvc
|
||||
|
||||
if (dawn_enable_d3d12) {
|
||||
sources += [
|
||||
"${spirv_cross_dir}/spirv_hlsl.cpp",
|
||||
"${spirv_cross_dir}/spirv_hlsl.hpp",
|
||||
]
|
||||
need_glsl_cross = true
|
||||
}
|
||||
|
||||
if (dawn_enable_metal) {
|
||||
sources += [
|
||||
"${spirv_cross_dir}/spirv_msl.cpp",
|
||||
"${spirv_cross_dir}/spirv_msl.hpp",
|
||||
]
|
||||
need_glsl_cross = true
|
||||
}
|
||||
|
||||
if (need_glsl_cross) {
|
||||
sources += [
|
||||
"${spirv_cross_dir}/spirv_glsl.cpp",
|
||||
"${spirv_cross_dir}/spirv_glsl.hpp",
|
||||
]
|
||||
}
|
||||
|
||||
if (need_reflection_cross) {
|
||||
sources += [
|
||||
"${spirv_cross_dir}/spirv_reflect.cpp",
|
||||
"${spirv_cross_dir}/spirv_reflect.hpp",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
static_library("spirv_cross_full_for_fuzzers") {
|
||||
public_configs = [ ":spirv_cross_public" ]
|
||||
configs += [ ":spirv_cross_internal" ]
|
||||
|
||||
sources = [
|
||||
"${spirv_cross_dir}/GLSL.std.450.h",
|
||||
"${spirv_cross_dir}/spirv.hpp",
|
||||
|
|
Loading…
Reference in New Issue