https://github.com/inbelic updated https://github.com/llvm/llvm-project/pull/157690
>From 0831e99798973a6d8c47ef6b257046640298142c Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Tue, 9 Sep 2025 15:09:28 +0000 Subject: [PATCH 1/3] [HLSL] Add the `Frs` driver option This pr adds the `Frs` as a DXC driver option. It is done by invoking `llvm-objcopy` with the `extract-section=RTS0` argument specified to output the separate `DXContainer`. This resolves: . --- clang/include/clang/Driver/Options.td | 2 ++ clang/lib/Driver/ToolChains/HLSL.cpp | 9 ++++++++- clang/test/Driver/dxc_frs.hlsl | 10 ++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 clang/test/Driver/dxc_frs.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index ea5a94f840470..123caa9d35520 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -9418,6 +9418,8 @@ def dxc_Fo : DXCJoinedOrSeparate<"Fo">, HelpText<"Output object file">; def dxc_Fc : DXCJoinedOrSeparate<"Fc">, HelpText<"Output assembly listing file">; +def dxc_Frs : DXCJoinedOrSeparate<"Frs">, + HelpText<"Output additional root signature object file">; def dxil_validator_version : Option<["/", "-"], "validator-version", KIND_SEPARATE>, Group<dxc_Group>, Flags<[HelpHidden]>, Visibility<[DXCOption, ClangOption, CC1Option]>, diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 559af32dc3808..179d7fc31ade9 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -317,6 +317,12 @@ void tools::hlsl::LLVMObjcopy::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back(Frs); } + if (Arg *Arg = Args.getLastArg(options::OPT_dxc_Frs)) { + const char *Frs = + Args.MakeArgString("--extract-section=RTS0=" + Twine(Arg->getValue())); + CmdArgs.push_back(Frs); + } + assert(CmdArgs.size() > 2 && "Unnecessary invocation of objcopy."); C.addCommand(std::make_unique<Command>(JA, *this, ResponseFileSupport::None(), @@ -493,7 +499,8 @@ bool HLSLToolChain::requiresBinaryTranslation(DerivedArgList &Args) const { bool HLSLToolChain::requiresObjcopy(DerivedArgList &Args) const { return Args.hasArg(options::OPT_dxc_Fo) && - Args.hasArg(options::OPT_dxc_strip_rootsignature); + (Args.hasArg(options::OPT_dxc_strip_rootsignature) || + Args.hasArg(options::OPT_dxc_Frs)); } bool HLSLToolChain::isLastJob(DerivedArgList &Args, diff --git a/clang/test/Driver/dxc_frs.hlsl b/clang/test/Driver/dxc_frs.hlsl new file mode 100644 index 0000000000000..7f7034f6fef89 --- /dev/null +++ b/clang/test/Driver/dxc_frs.hlsl @@ -0,0 +1,10 @@ +// RUN: %clang_dxc -T cs_6_0 /Fo %t.dxo /Frs %t.rs.dxo -### %s 2>&1 | FileCheck %s + +// Test to demonstrate that extracting the root signature to the specified +// output file with /Frs. + +// CHECK: "{{.*}}llvm-objcopy{{(.exe)?}}" "{{.*}}.obj" "{{.*}}.dxo" "--extract-section=RTS0={{.*}}.rs.dxo" + +[shader("compute"), RootSignature("")] +[numthreads(1,1,1)] +void EmptyEntry() {} >From 11c141f2c386cc78f9daa4d473ac9a35194cb0b7 Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Tue, 9 Sep 2025 15:11:37 +0000 Subject: [PATCH 2/3] self-review: update old arg name --- clang/lib/Driver/ToolChains/HLSL.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 179d7fc31ade9..1bb7aa02188f9 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -313,8 +313,8 @@ void tools::hlsl::LLVMObjcopy::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back(Output.getFilename()); if (Args.hasArg(options::OPT_dxc_strip_rootsignature)) { - const char *Frs = Args.MakeArgString("--remove-section=RTS0"); - CmdArgs.push_back(Frs); + const char *StripRS = Args.MakeArgString("--remove-section=RTS0"); + CmdArgs.push_back(StripRS); } if (Arg *Arg = Args.getLastArg(options::OPT_dxc_Frs)) { >From 7198a1e6df364a1a8fc5300eb1535985bff07725 Mon Sep 17 00:00:00 2001 From: Finn Plummer <finn.c.p...@gmail.com> Date: Tue, 9 Sep 2025 10:27:03 -0600 Subject: [PATCH 3/3] review: comment nit --- clang/test/Driver/dxc_frs.hlsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/test/Driver/dxc_frs.hlsl b/clang/test/Driver/dxc_frs.hlsl index 7f7034f6fef89..767cab604c829 100644 --- a/clang/test/Driver/dxc_frs.hlsl +++ b/clang/test/Driver/dxc_frs.hlsl @@ -1,6 +1,6 @@ // RUN: %clang_dxc -T cs_6_0 /Fo %t.dxo /Frs %t.rs.dxo -### %s 2>&1 | FileCheck %s -// Test to demonstrate that extracting the root signature to the specified +// Test to demonstrate extracting the root signature to the specified // output file with /Frs. // CHECK: "{{.*}}llvm-objcopy{{(.exe)?}}" "{{.*}}.obj" "{{.*}}.dxo" "--extract-section=RTS0={{.*}}.rs.dxo" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits