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:
Ryan Harrison 2019-11-21 18:08:15 +00:00
parent 127cd1f258
commit 1954436fe2
6 changed files with 9 additions and 67 deletions

View File

@ -124,15 +124,12 @@ source_set("libdawn_native_sources") {
":libdawn_native_headers", ":libdawn_native_headers",
":libdawn_native_utils_gen", ":libdawn_native_utils_gen",
"${dawn_root}/src/common", "${dawn_root}/src/common",
"${dawn_shaderc_dir}:libshaderc_spvc",
"${dawn_spirv_tools_dir}:spvtools_val", "${dawn_spirv_tools_dir}:spvtools_val",
"third_party:spirv_cross", "third_party:spirv_cross",
] ]
defines = []
if (dawn_use_spvc) {
deps += [ "${dawn_shaderc_dir}:libshaderc_spvc" ]
defines += [ "DAWN_USE_SPVC" ]
}
defines = []
configs += [ ":libdawn_native_internal" ] configs += [ ":libdawn_native_internal" ]
libs = [] libs = []

2
DEPS
View File

@ -68,7 +68,7 @@ deps = {
'condition': 'dawn_standalone', 'condition': 'dawn_standalone',
}, },
'third_party/shaderc': { 'third_party/shaderc': {
'url': '{chromium_git}/external/github.com/google/shaderc@c7f5cfd07f41c997045d76fd09c934691ff8a6c6', 'url': '{chromium_git}/external/github.com/google/shaderc@eca11511a0c09dd599837862c96658a91e927a3a',
'condition': 'dawn_standalone', 'condition': 'dawn_standalone',
}, },

View File

@ -44,10 +44,6 @@ declare_args() {
# GLSL/HLSL/MSL compiler. This implicitly pulls in the GLSL # GLSL/HLSL/MSL compiler. This implicitly pulls in the GLSL
# compiler, since it is a sub-class of if. # compiler, since it is a sub-class of if.
dawn_enable_cross_reflection = false 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(). # GN does not allow reading a variable defined in the same declare_args().

View File

@ -82,7 +82,11 @@ namespace dawn_native {
"versions of Windows prior to build 1809, or when this toggle is turned off, Dawn " "versions of Windows prior to build 1809, or when this toggle is turned off, Dawn "
"will emulate a render pass."}}, "will emulate a render pass."}},
{Toggle::SkipValidation, {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 } // anonymous namespace
void TogglesSet::SetToggle(Toggle toggle, bool enabled) { void TogglesSet::SetToggle(Toggle toggle, bool enabled) {

View File

@ -33,7 +33,7 @@ namespace dawn_native {
UseD3D12ResourceHeapTier2, UseD3D12ResourceHeapTier2,
UseD3D12RenderPass, UseD3D12RenderPass,
SkipValidation, SkipValidation,
UseSpvc,
EnumCount, EnumCount,
InvalidEnum = EnumCount, InvalidEnum = EnumCount,
}; };

55
third_party/BUILD.gn vendored
View File

@ -50,61 +50,6 @@ static_library("spirv_cross") {
public_configs = [ ":spirv_cross_public" ] public_configs = [ ":spirv_cross_public" ]
configs += [ ":spirv_cross_internal" ] 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 = [ sources = [
"${spirv_cross_dir}/GLSL.std.450.h", "${spirv_cross_dir}/GLSL.std.450.h",
"${spirv_cross_dir}/spirv.hpp", "${spirv_cross_dir}/spirv.hpp",