diff options
Diffstat (limited to 'source/x')
-rw-r--r-- | source/x/vulkan-sdk/DirectXShaderCompiler-dump-reflection.patch | 279 | ||||
-rw-r--r-- | source/x/vulkan-sdk/DirectXShaderCompiler-gcc13.patch | 142 | ||||
-rw-r--r-- | source/x/vulkan-sdk/VERSION | 2 | ||||
-rw-r--r-- | source/x/vulkan-sdk/VulkanTools-sdk.gcc12.diff | 38 | ||||
-rwxr-xr-x | source/x/vulkan-sdk/fetch-sources.sh | 32 | ||||
-rwxr-xr-x | source/x/vulkan-sdk/vulkan-sdk.SlackBuild | 238 |
6 files changed, 669 insertions, 62 deletions
diff --git a/source/x/vulkan-sdk/DirectXShaderCompiler-dump-reflection.patch b/source/x/vulkan-sdk/DirectXShaderCompiler-dump-reflection.patch new file mode 100644 index 000000000..088c976d6 --- /dev/null +++ b/source/x/vulkan-sdk/DirectXShaderCompiler-dump-reflection.patch @@ -0,0 +1,279 @@ +From daf1386161cd6912fbd358f13d74e81466edab8b Mon Sep 17 00:00:00 2001 +From: Xiang Li <python3kgae@outlook.com> +Date: Wed, 24 May 2023 13:13:36 -0400 +Subject: [PATCH] [dxa] Add option to dump reflection (#5232) + +* [dxa] Add option to dump reflection + +New option -dumpreflection is added to dump reflection data. +This is to support %D3DReflect test in lit. + +* Move Reflection dump to DxilContainer. +--- + lib/DxilContainer/CMakeLists.txt | 3 + + .../DxilContainer}/D3DReflectionDumper.cpp | 0 + .../DxilContainer}/D3DReflectionStrings.cpp | 0 + .../DxilContainer}/RDATDumper.cpp | 0 + tools/clang/test/DXC/dxa_tests.test | 73 +++++++++++++++++++ + tools/clang/tools/dxa/CMakeLists.txt | 1 - + tools/clang/tools/dxa/dxa.cpp | 72 +++++++++++++++++- + .../unittests/HLSLTestLib/CMakeLists.txt | 3 - + utils/hct/hcttestcmds.cmd | 7 ++ + 9 files changed, 153 insertions(+), 6 deletions(-) + rename {tools/clang/unittests/HLSLTestLib => lib/DxilContainer}/D3DReflectionDumper.cpp (100%) + rename {tools/clang/unittests/HLSLTestLib => lib/DxilContainer}/D3DReflectionStrings.cpp (100%) + rename {tools/clang/unittests/HLSLTestLib => lib/DxilContainer}/RDATDumper.cpp (100%) + +diff --git a/lib/DxilContainer/CMakeLists.txt b/lib/DxilContainer/CMakeLists.txt +index f0ab344d23..a6369a36e6 100644 +--- a/lib/DxilContainer/CMakeLists.txt ++++ b/lib/DxilContainer/CMakeLists.txt +@@ -1,12 +1,15 @@ + # Copyright (C) Microsoft Corporation. All rights reserved. + # This file is distributed under the University of Illinois Open Source License. See LICENSE.TXT for details. + add_llvm_library(LLVMDxilContainer ++ D3DReflectionDumper.cpp ++ D3DReflectionStrings.cpp + DxilContainer.cpp + DxilContainerAssembler.cpp + DxilContainerReader.cpp + DxcContainerBuilder.cpp + DxilRDATBuilder.cpp + DxilRuntimeReflection.cpp ++ RDATDumper.cpp + RDATDxilSubobjects.cpp + + ADDITIONAL_HEADER_DIRS +diff --git a/tools/clang/unittests/HLSLTestLib/D3DReflectionDumper.cpp b/lib/DxilContainer/D3DReflectionDumper.cpp +similarity index 100% +rename from tools/clang/unittests/HLSLTestLib/D3DReflectionDumper.cpp +rename to lib/DxilContainer/D3DReflectionDumper.cpp +diff --git a/tools/clang/unittests/HLSLTestLib/D3DReflectionStrings.cpp b/lib/DxilContainer/D3DReflectionStrings.cpp +similarity index 100% +rename from tools/clang/unittests/HLSLTestLib/D3DReflectionStrings.cpp +rename to lib/DxilContainer/D3DReflectionStrings.cpp +diff --git a/tools/clang/unittests/HLSLTestLib/RDATDumper.cpp b/lib/DxilContainer/RDATDumper.cpp +similarity index 100% +rename from tools/clang/unittests/HLSLTestLib/RDATDumper.cpp +rename to lib/DxilContainer/RDATDumper.cpp +diff --git a/tools/clang/test/DXC/dxa_tests.test b/tools/clang/test/DXC/dxa_tests.test +index a7d8ee5bad..655155941b 100644 +--- a/tools/clang/test/DXC/dxa_tests.test ++++ b/tools/clang/test/DXC/dxa_tests.test +@@ -34,3 +34,76 @@ + // RUN: %dxc -dumpbin %t.rebuilt-container2.cso | FileCheck %s --check-prefix=REBUILD + + // REBUILD:define void @main() ++ ++// RUN: %dxa %t.dxa.cso -dumpreflection | FileCheck %s --check-prefix=REFLECTION ++// REFLECTION: ID3D12ShaderReflection: ++// REFLECTION-NEXT: D3D12_SHADER_DESC: ++// REFLECTION-NEXT: Shader Version: Vertex 6.0 ++// REFLECTION-NEXT: Creator: dxc ++// REFLECTION-NEXT: Flags: 0 ++// REFLECTION-NEXT: ConstantBuffers: 1 ++// REFLECTION-NEXT: BoundResources: 1 ++// REFLECTION-NEXT: InputParameters: 0 ++// REFLECTION-NEXT: OutputParameters: 1 ++// REFLECTION-NEXT: InstructionCount: 10 ++// REFLECTION-NEXT: TempArrayCount: 0 ++// REFLECTION-NEXT: DynamicFlowControlCount: 0 ++// REFLECTION-NEXT: ArrayInstructionCount: 0 ++// REFLECTION-NEXT: TextureNormalInstructions: 0 ++// REFLECTION-NEXT: TextureLoadInstructions: 0 ++// REFLECTION-NEXT: TextureCompInstructions: 0 ++// REFLECTION-NEXT: TextureBiasInstructions: 0 ++// REFLECTION-NEXT: TextureGradientInstructions: 0 ++// REFLECTION-NEXT: FloatInstructionCount: 1 ++// REFLECTION-NEXT: IntInstructionCount: 1 ++// REFLECTION-NEXT: UintInstructionCount: 0 ++// REFLECTION-NEXT: CutInstructionCount: 0 ++// REFLECTION-NEXT: EmitInstructionCount: 0 ++// REFLECTION-NEXT: cBarrierInstructions: 0 ++// REFLECTION-NEXT: cInterlockedInstructions: 0 ++// REFLECTION-NEXT: cTextureStoreInstructions: 0 ++// REFLECTION-NEXT: OutputParameter Elements: 1 ++// REFLECTION-NEXT: D3D12_SIGNATURE_PARAMETER_DESC: SemanticName: SV_POSITION SemanticIndex: 0 ++// REFLECTION-NEXT: Register: 0 ++// REFLECTION-NEXT: SystemValueType: D3D_NAME_POSITION ++// REFLECTION-NEXT: ComponentType: D3D_REGISTER_COMPONENT_FLOAT32 ++// REFLECTION-NEXT: Mask: xyzw (15) ++// REFLECTION-NEXT: ReadWriteMask: ---- (0) (AlwaysReads/NeverWrites) ++// REFLECTION-NEXT: Stream: 0 ++// REFLECTION-NEXT: MinPrecision: D3D_MIN_PRECISION_DEFAULT ++// REFLECTION-NEXT: Constant Buffers: ++// REFLECTION-NEXT: ID3D12ShaderReflectionConstantBuffer: ++// REFLECTION-NEXT: D3D12_SHADER_BUFFER_DESC: Name: $Globals ++// REFLECTION-NEXT: Type: D3D_CT_CBUFFER ++// REFLECTION-NEXT: Size: 16 ++// REFLECTION-NEXT: uFlags: 0 ++// REFLECTION-NEXT: Num Variables: 1 ++// REFLECTION-NEXT: { ++// REFLECTION-NEXT: ID3D12ShaderReflectionVariable: ++// REFLECTION-NEXT: D3D12_SHADER_VARIABLE_DESC: Name: g ++// REFLECTION-NEXT: Size: 4 ++// REFLECTION-NEXT: StartOffset: 0 ++// REFLECTION-NEXT: uFlags: (D3D_SVF_USED) ++// REFLECTION-NEXT: DefaultValue: <nullptr> ++// REFLECTION-NEXT: ID3D12ShaderReflectionType: ++// REFLECTION-NEXT: D3D12_SHADER_TYPE_DESC: Name: int ++// REFLECTION-NEXT: Class: D3D_SVC_SCALAR ++// REFLECTION-NEXT: Type: D3D_SVT_INT ++// REFLECTION-NEXT: Elements: 0 ++// REFLECTION-NEXT: Rows: 1 ++// REFLECTION-NEXT: Columns: 1 ++// REFLECTION-NEXT: Members: 0 ++// REFLECTION-NEXT: Offset: 0 ++// REFLECTION-NEXT: CBuffer: $Globals ++// REFLECTION-NEXT: } ++// REFLECTION-NEXT: Bound Resources: ++// REFLECTION-NEXT: D3D12_SHADER_INPUT_BIND_DESC: Name: $Globals ++// REFLECTION-NEXT: Type: D3D_SIT_CBUFFER ++// REFLECTION-NEXT: uID: 0 ++// REFLECTION-NEXT: BindCount: 1 ++// REFLECTION-NEXT: BindPoint: 0 ++// REFLECTION-NEXT: Space: 0 ++// REFLECTION-NEXT: ReturnType: <unknown: 0> ++// REFLECTION-NEXT: Dimension: D3D_SRV_DIMENSION_UNKNOWN ++// REFLECTION-NEXT: NumSamples (or stride): 0 ++// REFLECTION-NEXT: uFlags: (D3D_SIF_USERPACKED) +diff --git a/tools/clang/tools/dxa/CMakeLists.txt b/tools/clang/tools/dxa/CMakeLists.txt +index 391ac8b062..33e61ca121 100644 +--- a/tools/clang/tools/dxa/CMakeLists.txt ++++ b/tools/clang/tools/dxa/CMakeLists.txt +@@ -23,7 +23,6 @@ add_clang_executable(dxa + + target_link_libraries(dxa + dxcompiler +- HLSLTestLib + ) + + set_target_properties(dxa PROPERTIES VERSION ${CLANG_EXECUTABLE_VERSION}) +diff --git a/tools/clang/tools/dxa/dxa.cpp b/tools/clang/tools/dxa/dxa.cpp +index dd3a0e64c4..cf9339afdc 100644 +--- a/tools/clang/tools/dxa/dxa.cpp ++++ b/tools/clang/tools/dxa/dxa.cpp +@@ -19,6 +19,7 @@ + #include "dxc/DxilContainer/DxilContainer.h" + #include "dxc/DxilRootSignature/DxilRootSignature.h" + #include "dxc/Test/RDATDumper.h" ++#include "dxc/Test/D3DReflectionDumper.h" + + #include "llvm/Support/CommandLine.h" + #include "llvm/Support//MSFileSystem.h" +@@ -63,6 +64,10 @@ static cl::opt<bool> DumpRDAT("dumprdat", + cl::desc("Dump RDAT"), + cl::init(false)); + ++static cl::opt<bool> DumpReflection("dumpreflection", ++ cl::desc("Dump reflection"), ++ cl::init(false)); ++ + class DxaContext { + + private: +@@ -80,6 +85,7 @@ class DxaContext { + void ListParts(); + void DumpRS(); + void DumpRDAT(); ++ void DumpReflection(); + }; + + void DxaContext::Assemble() { +@@ -378,6 +384,66 @@ void DxaContext::DumpRDAT() { + printf("%s", ss.str().c_str()); + } + ++void DxaContext::DumpReflection() { ++ CComPtr<IDxcBlobEncoding> pSource; ++ ReadFileIntoBlob(m_dxcSupport, StringRefWide(InputFilename), &pSource); ++ ++ CComPtr<IDxcContainerReflection> pReflection; ++ IFT(m_dxcSupport.CreateInstance(CLSID_DxcContainerReflection, &pReflection)); ++ IFT(pReflection->Load(pSource)); ++ ++ UINT32 partCount; ++ IFT(pReflection->GetPartCount(&partCount)); ++ ++ bool blobFound = false; ++ std::ostringstream ss; ++ hlsl::dump::D3DReflectionDumper dumper(ss); ++ ++ CComPtr<ID3D12ShaderReflection> pShaderReflection; ++ CComPtr<ID3D12LibraryReflection> pLibraryReflection; ++ for (uint32_t i = 0; i < partCount; ++i) { ++ uint32_t kind; ++ IFT(pReflection->GetPartKind(i, &kind)); ++ if (kind == (uint32_t)hlsl::DxilFourCC::DFCC_DXIL) { ++ blobFound = true; ++ CComPtr<IDxcBlob> pPart; ++ IFT(pReflection->GetPartContent(i, &pPart)); ++ const hlsl::DxilProgramHeader *pProgramHeader = ++ reinterpret_cast<const hlsl::DxilProgramHeader*>(pPart->GetBufferPointer()); ++ IFT(IsValidDxilProgramHeader(pProgramHeader, (uint32_t)pPart->GetBufferSize())); ++ hlsl::DXIL::ShaderKind SK = hlsl::GetVersionShaderType(pProgramHeader->ProgramVersion); ++ if (SK == hlsl::DXIL::ShaderKind::Library) { ++ IFT(pReflection->GetPartReflection(i, ++ IID_PPV_ARGS(&pLibraryReflection))); ++ ++ } else { ++ IFT(pReflection->GetPartReflection(i, ++ IID_PPV_ARGS(&pShaderReflection))); ++ } ++ break; ++ } else if (kind == (uint32_t)hlsl::DxilFourCC::DFCC_RuntimeData) { ++ CComPtr<IDxcBlob> pPart; ++ IFT(pReflection->GetPartContent(i, &pPart)); ++ hlsl::RDAT::DxilRuntimeData rdat(pPart->GetBufferPointer(), ++ pPart->GetBufferSize()); ++ hlsl::dump::DumpContext d(ss); ++ DumpRuntimeData(rdat, d); ++ } ++ } ++ ++ if (!blobFound) { ++ printf("Unable to find DXIL part"); ++ return; ++ } else if (pShaderReflection) { ++ dumper.Dump(pShaderReflection); ++ } else if (pLibraryReflection) { ++ dumper.Dump(pLibraryReflection); ++ } ++ ++ ss.flush(); ++ printf("%s", ss.str().c_str()); ++} ++ + using namespace hlsl::options; + + #ifdef _WIN32 +@@ -439,8 +505,10 @@ int main(int argc, const char **argv) { + } else if (DumpRDAT) { + pStage = "Dump RDAT"; + context.DumpRDAT(); +- } +- else { ++ } else if (DumpReflection) { ++ pStage = "Dump Reflection"; ++ context.DumpReflection(); ++ } else { + pStage = "Assembling"; + context.Assemble(); + } +diff --git a/tools/clang/unittests/HLSLTestLib/CMakeLists.txt b/tools/clang/unittests/HLSLTestLib/CMakeLists.txt +index 0dc937617c..2ade2b3138 100644 +--- a/tools/clang/unittests/HLSLTestLib/CMakeLists.txt ++++ b/tools/clang/unittests/HLSLTestLib/CMakeLists.txt +@@ -8,12 +8,9 @@ include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googlemock/include) + endif(WIN32) + + add_clang_library(HLSLTestLib +- D3DReflectionDumper.cpp +- D3DReflectionStrings.cpp + DxcTestUtils.cpp + FileCheckerTest.cpp + FileCheckForTest.cpp +- RDATDumper.cpp + ) + + add_dependencies(HLSLTestLib TablegenHLSLOptions) diff --git a/source/x/vulkan-sdk/DirectXShaderCompiler-gcc13.patch b/source/x/vulkan-sdk/DirectXShaderCompiler-gcc13.patch new file mode 100644 index 000000000..04e6a95b8 --- /dev/null +++ b/source/x/vulkan-sdk/DirectXShaderCompiler-gcc13.patch @@ -0,0 +1,142 @@ +--- a/include/llvm/Analysis/DxilValueCache.h ++++ a/include/llvm/Analysis/DxilValueCache.h +@@ -52,7 +52,7 @@ struct DxilValueCache : public ImmutablePass { + + private: + +- WeakValueMap ValueMap; ++ WeakValueMap Map; + bool (*ShouldSkipCallback)(Value *V) = nullptr; + + void MarkUnreachable(BasicBlock *BB); +@@ -77,8 +77,8 @@ public: + Value *GetValue(Value *V, DominatorTree *DT=nullptr); + Constant *GetConstValue(Value *V, DominatorTree *DT = nullptr); + ConstantInt *GetConstInt(Value *V, DominatorTree *DT = nullptr); +- void ResetUnknowns() { ValueMap.ResetUnknowns(); } +- void ResetAll() { ValueMap.ResetAll(); } ++ void ResetUnknowns() { Map.ResetUnknowns(); } ++ void ResetAll() { Map.ResetAll(); } + bool IsUnreachable(BasicBlock *BB, DominatorTree *DT=nullptr); + void SetShouldSkipCallback(bool (*Callback)(Value *V)) { ShouldSkipCallback = Callback; }; + }; +--- a/lib/Analysis/DxilValueCache.cpp ++++ a/lib/Analysis/DxilValueCache.cpp +@@ -57,7 +57,7 @@ bool IsEntryBlock(const BasicBlock *BB) { + } + + void DxilValueCache::MarkUnreachable(BasicBlock *BB) { +- ValueMap.Set(BB, ConstantInt::get(Type::getInt1Ty(BB->getContext()), 0)); ++ Map.Set(BB, ConstantInt::get(Type::getInt1Ty(BB->getContext()), 0)); + } + + bool DxilValueCache::MayBranchTo(BasicBlock *A, BasicBlock *B) { +@@ -93,7 +93,7 @@ bool DxilValueCache::MayBranchTo(BasicBlock *A, BasicBlock *B) { + } + + bool DxilValueCache::IsUnreachable_(BasicBlock *BB) { +- if (Value *V = ValueMap.Get(BB)) ++ if (Value *V = Map.Get(BB)) + if (IsConstantFalse(V)) + return true; + return false; +@@ -155,7 +155,7 @@ Value *DxilValueCache::ProcessAndSimplify_PHI(Instruction *I, DominatorTree *DT) + // that were computed previously. + if (!Simplified) { + if (SimplifiedNotDominating) +- if (Value *CachedV = ValueMap.Get(SimplifiedNotDominating)) ++ if (Value *CachedV = Map.Get(SimplifiedNotDominating)) + Simplified = CachedV; + } + +@@ -379,7 +379,7 @@ Value *DxilValueCache::SimplifyAndCacheResult(Instruction *I, DominatorTree *DT) + } + + if (Simplified && isa<Constant>(Simplified)) +- ValueMap.Set(I, Simplified); ++ Map.Set(I, Simplified); + + return Simplified; + } +@@ -500,7 +500,7 @@ void DxilValueCache::WeakValueMap::Set(Value *Key, Value *V) { + // If there's a cached value, return it. Otherwise, return + // the value itself. + Value *DxilValueCache::TryGetCachedValue(Value *V) { +- if (Value *Simplified = ValueMap.Get(V)) ++ if (Value *Simplified = Map.Get(V)) + return Simplified; + return V; + } +@@ -516,7 +516,7 @@ StringRef DxilValueCache::getPassName() const { + Value *DxilValueCache::GetValue(Value *V, DominatorTree *DT) { + if (dyn_cast<Constant>(V)) + return V; +- if (Value *NewV = ValueMap.Get(V)) ++ if (Value *NewV = Map.Get(V)) + return NewV; + + return ProcessValue(V, DT); +@@ -541,7 +541,7 @@ bool DxilValueCache::IsUnreachable(BasicBlock *BB, DominatorTree *DT) { + + LLVM_DUMP_METHOD + void DxilValueCache::dump() const { +- ValueMap.dump(); ++ Map.dump(); + } + + void DxilValueCache::getAnalysisUsage(AnalysisUsage &AU) const { +@@ -580,15 +580,15 @@ Value *DxilValueCache::ProcessValue(Value *NewV, DominatorTree *DT) { + + // If we haven't seen this value, go in and push things it depends on + // into the worklist. +- if (!ValueMap.Seen(V)) { +- ValueMap.SetSentinel(V); ++ if (!Map.Seen(V)) { ++ Map.SetSentinel(V); + if (Instruction *I = dyn_cast<Instruction>(V)) { + + for (Use &U : I->operands()) { + Instruction *UseI = dyn_cast<Instruction>(U.get()); + if (!UseI) + continue; +- if (!ValueMap.Seen(UseI)) ++ if (!Map.Seen(UseI)) + WorkList.push_back(UseI); + } + +@@ -596,9 +596,9 @@ Value *DxilValueCache::ProcessValue(Value *NewV, DominatorTree *DT) { + for (unsigned i = 0; i < PN->getNumIncomingValues(); i++) { + BasicBlock *BB = PN->getIncomingBlock(i); + TerminatorInst *Term = BB->getTerminator(); +- if (!ValueMap.Seen(Term)) ++ if (!Map.Seen(Term)) + WorkList.push_back(Term); +- if (!ValueMap.Seen(BB)) ++ if (!Map.Seen(BB)) + WorkList.push_back(BB); + } + } +@@ -607,9 +607,9 @@ Value *DxilValueCache::ProcessValue(Value *NewV, DominatorTree *DT) { + for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; PI++) { + BasicBlock *PredBB = *PI; + TerminatorInst *Term = PredBB->getTerminator(); +- if (!ValueMap.Seen(Term)) ++ if (!Map.Seen(Term)) + WorkList.push_back(Term); +- if (!ValueMap.Seen(PredBB)) ++ if (!Map.Seen(PredBB)) + WorkList.push_back(PredBB); + } + } +--- a/tools/clang/include/clang/Basic/Version.h ++++ a/tools/clang/include/clang/Basic/Version.h +@@ -18,7 +18,8 @@ + + #include "clang/Basic/Version.inc" + #include "llvm/ADT/StringRef.h" +- ++// HLSL Change - for uint32_t. ++#include <cstdint> + /// \brief Helper macro for CLANG_VERSION_STRING. + #define CLANG_MAKE_VERSION_STRING2(X) #X + diff --git a/source/x/vulkan-sdk/VERSION b/source/x/vulkan-sdk/VERSION index bd9e2d24f..71ba6273f 100644 --- a/source/x/vulkan-sdk/VERSION +++ b/source/x/vulkan-sdk/VERSION @@ -1 +1 @@ -1.3.204.0 +1.3.250.0 diff --git a/source/x/vulkan-sdk/VulkanTools-sdk.gcc12.diff b/source/x/vulkan-sdk/VulkanTools-sdk.gcc12.diff deleted file mode 100644 index d28785737..000000000 --- a/source/x/vulkan-sdk/VulkanTools-sdk.gcc12.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- ./submodules/jsoncpp/src/lib_json/json_reader.cpp.orig 2022-03-06 13:14:43.000000000 -0600 -+++ ./submodules/jsoncpp/src/lib_json/json_reader.cpp 2023-02-14 14:46:31.107270967 -0600 -@@ -212,7 +212,7 @@ - break; - case tokenNull: - { -- Value v; -+ Value v(0); - currentValue().swapPayload(v); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); -@@ -225,7 +225,7 @@ - // "Un-read" the current token and mark the current value as a null - // token. - current_--; -- Value v; -+ Value v(0); - currentValue().swapPayload(v); - currentValue().setOffsetStart(current_ - begin_ - 1); - currentValue().setOffsetLimit(current_ - begin_); -@@ -1134,7 +1134,7 @@ - break; - case tokenNull: - { -- Value v; -+ Value v(0); - currentValue().swapPayload(v); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); -@@ -1171,7 +1171,7 @@ - // "Un-read" the current token and mark the current value as a null - // token. - current_--; -- Value v; -+ Value v(0); - currentValue().swapPayload(v); - currentValue().setOffsetStart(current_ - begin_ - 1); - currentValue().setOffsetLimit(current_ - begin_); diff --git a/source/x/vulkan-sdk/fetch-sources.sh b/source/x/vulkan-sdk/fetch-sources.sh index 126523e18..3b18bbbd0 100755 --- a/source/x/vulkan-sdk/fetch-sources.sh +++ b/source/x/vulkan-sdk/fetch-sources.sh @@ -48,7 +48,7 @@ EOF echo $DEP_COMMIT } -rm -f *.tar.lz +rm -f *.tar.lz *.fetched release_notes.html wget https://vulkan.lunarg.com/doc/view/$VERSION/linux/release_notes.html @@ -101,6 +101,36 @@ for i in $(grep "Repo:" release_notes.html | cut -d "\"" -f 2); do plzip -9 robin-hood-hashing-$ROBIN_HOOD_COMMIT.tar rm -rf robin-hood-hashing-$ROBIN_HOOD_COMMIT touch robin-hood-hashing.fetched + elif [ "$NAME" = "Vulkan-Profiles" ]; then + if [ ! -e jsoncpp.fetched ]; then + JSONCPP_COMMIT=$(get_known_good Vulkan-Profiles-$COMMIT/scripts/known_good.json jsoncpp repos) + + git clone https://github.com/open-source-parsers/jsoncpp.git jsoncpp-$JSONCPP_COMMIT + cd jsoncpp-$JSONCPP_COMMIT + git reset --hard $JSONCPP_COMMIT || git reset --hard origin/$JSONCPP_COMMIT + git submodule update --init --recursive + git describe --tags > .git-version + cd .. + tar --exclude-vcs -cf jsoncpp-$JSONCPP_COMMIT.tar jsoncpp-$JSONCPP_COMMIT + plzip -9 jsoncpp-$JSONCPP_COMMIT.tar + rm -rf jsoncpp-$JSONCPP_COMMIT + touch jsoncpp.fetched + fi + if [ ! -e valijson.fetched ]; then + VALIJSON_COMMIT=$(get_known_good Vulkan-Profiles-$COMMIT/scripts/known_good.json valijson repos) + + git clone https://github.com/tristanpenman/valijson.git valijson-$VALIJSON_COMMIT + cd valijson-$VALIJSON_COMMIT + git reset --hard $VALIJSON_COMMIT || git reset --hard origin/$VALIJSON_COMMIT + # Intentionally skipping the submodules, as those result in a huge source tarball + #git submodule update --init --recursive + git describe --tags > .git-version + cd .. + tar --exclude-vcs -cf valijson-$VALIJSON_COMMIT.tar valijson-$VALIJSON_COMMIT + plzip -9 valijson-$VALIJSON_COMMIT.tar + rm -rf valijson-$VALIJSON_COMMIT + touch valijson.fetched + fi fi rm -rf $NAME-$COMMIT diff --git a/source/x/vulkan-sdk/vulkan-sdk.SlackBuild b/source/x/vulkan-sdk/vulkan-sdk.SlackBuild index 9e027cd67..140a77f61 100755 --- a/source/x/vulkan-sdk/vulkan-sdk.SlackBuild +++ b/source/x/vulkan-sdk/vulkan-sdk.SlackBuild @@ -87,6 +87,12 @@ GFXRECONSTRUCT_VERSION=$(echo gfxreconstruct-sdk-*.tar.?z | rev | cut -f 3- -d . DXC_VERSION=$(echo DirectXShaderCompiler-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev) SPIRV_REFLECT_VERSION=$(echo SPIRV-Reflect-sdk-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev) VULKAN_PROFILES_VERSION=$(echo Vulkan-Profiles-sdk-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev) +VOLK_VERSION=$(echo volk-sdk-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev) +VULKAN_UTILITY_LIBRARIES_VERSION=$(echo Vulkan-Utility-Libraries-sdk-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev) +VULKAN_CAPS_VIEWER_VERSION=$(echo VulkanCapsViewer-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev) +VULKAN_MEMORY_ALLOCATOR_VERSION=$(echo VulkanMemoryAllocator-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev) +VALIJSON_VERSION=$(echo valijson-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev) +JSONCPP_VERSION=$(echo jsoncpp-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev) # upstream builder order: # - SPIRV-Headers @@ -122,7 +128,13 @@ rm -rf SPIRV-Headers-$SPIRV_HEADERS_VERSION \ gfxreconstruct-sdk-$GFXRECONSTRUCT_VERSION \ DirectXShaderCompiler-$DXC_VERSION \ SPIRV-Reflect-sdk-$SPIRV_REFLECT_VERSION \ - Vulkan-Profiles-sdk-$VULKAN_PROFILES_VERSION + Vulkan-Profiles-sdk-$VULKAN_PROFILES_VERSION \ + volk-sdk-$VOLK_VERSION \ + Vulkan-Utility-Libraries-$VULKAN_UTILITY_LIBRARIES_VERSION \ + VulkanCapsViewer-$VULKAN_CAPS_VIEWER_VERSION \ + VulkanMemoryAllocator-$VULKAN_MEMORY_ALLOCATOR_VERSION \ + valijson-$VALIJSON_VERSION \ + jsoncpp-$JSONCPP_VERSION tar xvf $CWD/SPIRV-Headers-$SPIRV_HEADERS_VERSION.tar.?z || exit 1 cd SPIRV-Headers-$SPIRV_HEADERS_VERSION @@ -164,11 +176,6 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \+ -# Fix LIBDIRSUFFIX -# for i in $(find . -name CMakeLists.txt); do -# sed -i "s|DESTINATION lib|DESTINATION \${CMAKE_INSTALL_LIBDIR}|" "$i" -# done - mkdir -p build cd build cmake \ @@ -355,9 +362,6 @@ cd $TMP tar xvf $CWD/VulkanTools-sdk-$VULKANTOOLS_VERSION.tar.?z || exit 1 cd $TMP/VulkanTools-sdk-$VULKANTOOLS_VERSION -# Fix warning/error on gcc12 about uninitialized variables: -zcat $CWD/VulkanTools-sdk.gcc12.diff.gz | patch -p1 --verbose || exit 1 - chown -R root:root . find . \ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ @@ -390,10 +394,6 @@ cd build make $NUMJOBS || make || exit 1 make install DESTDIR=$PKG || exit 1 - mkdir -p $PKG/usr/share/vulkan/config/VK_LAYER_LUNARG_device_simulation - install -m 644 ../layersvt/device_simulation_examples/sdk_sample_configs/*.json \ - $PKG/usr/share/vulkan/config/VK_LAYER_LUNARG_device_simulation/ - cd $TMP tar xvf $CWD/shaderc-$SHADERC_VERSION.tar.?z || exit 1 cd $TMP/shaderc-$SHADERC_VERSION @@ -498,6 +498,14 @@ cd $TMP tar xvf $CWD/DirectXShaderCompiler-$DXC_VERSION.tar.?z || exit 1 cd $TMP/DirectXShaderCompiler-$DXC_VERSION +# Fix warning/error on gcc13 about changed meaning +# Thanks to gentoo: https://bugs.gentoo.org/905173 +zcat $CWD/DirectXShaderCompiler-gcc13.patch.gz | patch -p1 --verbose || exit 1 + +# Don't link unit test library in dxa. +# Upstream commit daf1386161cd6912fbd358f13d74e81466edab8b +zcat $CWD/DirectXShaderCompiler-dump-reflection.patch.gz | patch -p1 --verbose || exit 1 + chown -R root:root . find . \ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ @@ -564,9 +572,86 @@ cd build $PKG/usr/include/SPIRV-Reflect/include/spirv/unified1/ cd $TMP +tar xvf $CWD/Vulkan-Utility-Libraries-sdk-$VULKAN_UTILITY_LIBRARIES_VERSION.tar.?z || exit 1 +cd $TMP/Vulkan-Utility-Libraries-sdk-$VULKAN_UTILITY_LIBRARIES_VERSION + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \+ + +mkdir -p build +cd build + cmake \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_SYSCONFDIR=/usr/share \ + -DVulkanHeaders_DIR=$PKG/usr/share/cmake/VulkanHeaders/ \ + .. + + make $NUMJOBS || make || exit 1 + make install DESTDIR=$PKG || exit 1 + +cd $TMP +tar xvf $CWD/valijson-$VALIJSON_VERSION.tar.?z || exit 1 +cd valijson-$VALIJSON_VERSION + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \+ + +mkdir -p build +cd build + cmake \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + .. + + make $NUMJOBS || make || exit 1 + make install DESTDIR=$TMP/valijson-$VALIJSON_VERSION/build/install || exit 1 + +cd $TMP +tar xvf $CWD/jsoncpp-$JSONCPP_VERSION.tar.?z || exit 1 +cd jsoncpp-$JSONCPP_VERSION + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \+ + +mkdir -p build +cd build + cmake \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_OBJECT_LIBS=OFF \ + -DBUILD_STATIC_LIBS=ON \ + -DBUILD_SHARED_LIBS=OFF \ + -DJSONCPP_WITH_TESTS=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + .. + + make $NUMJOBS || make || exit 1 + make install DESTDIR=$TMP/jsoncpp-$JSONCPP_VERSION/build/install || exit 1 + +cd $TMP tar xvf $CWD/Vulkan-Profiles-sdk-$VULKAN_PROFILES_VERSION.tar.?z || exit 1 cd $TMP/Vulkan-Profiles-sdk-$VULKAN_PROFILES_VERSION +# do not depend on python-jsonschema +sed -i "/jsonschema/d" scripts/gen_profiles_solution.py + chown -R root:root . find . \ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ @@ -574,15 +659,11 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \+ -# Fix finding vulkan-loader on Slackware64 -sed -i "s|PATH_SUFFIXES lib|PATH_SUFFIXES lib$LIBDIRSUFFIX|" \ - CMakeLists.txt - mkdir -p build cd build cmake \ - -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS -Wno-error=deprecated-declarations" \ - -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -Wno-error=deprecated-declarations" \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS -Wno-error=deprecated-declarations -I$PKG/usr/include/vulkan" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -Wno-error=deprecated-declarations -I$PKG/usr/include/vulkan" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_SYSCONFDIR=/usr/share \ @@ -590,15 +671,104 @@ cd build -DVULKAN_HEADERS_INSTALL_DIR=$PKG/usr \ -DVULKAN_HEADERS_SOURCE_DIR="$TMP/Vulkan-Headers-sdk-$VULKAN_HEADERS_VERSION" \ -DVULKAN_VALIDATIONLAYERS_SOURCE_DIR="$TMP/Vulkan-ValidationLayers-sdk-$VULKAN_VALIDATIONLAYERS_VERSION" \ - -DPROFILES_BUILD_TESTS="OFF" \ - -DREGENERATE_JSONCPP="OFF" \ - -DREGENERATE_PROFILES="OFF" \ + -DVVL_INCLUDE_DIR="$PKG/usr/include/vulkan" \ + -Dvalijson_DIR="$TMP/valijson-$VALIJSON_VERSION/build/install/usr/lib$LIBDIRSUFFIX/cmake/valijson" \ + -Djsoncpp_DIR="$TMP/jsoncpp-$JSONCPP_VERSION/build/install/usr/lib$LIBDIRSUFFIX/cmake/jsoncpp" \ + -DVulkan_INCLUDE_DIR="$PKG/usr/include/vulkan" \ + -DPROFILES_BUILD_TESTS=OFF \ + .. + + make $NUMJOBS || make || exit 1 + make install DESTDIR=$PKG || exit 1 + +cd $TMP +tar xvf $CWD/volk-sdk-$VOLK_VERSION.tar.?z || exit 1 +cd $TMP/volk-sdk-$VOLK_VERSION + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \+ + +mkdir -p build +cd build + cmake \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_SYSCONFDIR=/usr/share \ + -DVULKAN_HEADERS_INSTALL_DIR=$PKG/usr \ + -DVOLK_INSTALL=ON \ .. make $NUMJOBS || make || exit 1 make install DESTDIR=$PKG || exit 1 cd $TMP +tar xvf $CWD/VulkanCapsViewer-$VULKAN_CAPS_VIEWER_VERSION.tar.?z || exit 1 +cd $TMP/VulkanCapsViewer-$VULKAN_CAPS_VIEWER_VERSION + +# Fix finding Vulkan-Loader +sed -i "s|/lib/|/lib$LIBDIRSUFFIX/|g" CMakeLists.txt + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \+ + +mkdir -p build +cd build + cmake \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_SYSCONFDIR=/usr/share \ + -DVULKAN_LOADER_INSTALL_DIR=$PKG/usr \ + -DVULKAN_HEADERS_INSTALL_DIR=$PKG/usr \ + .. + + make $NUMJOBS || make || exit 1 + make install DESTDIR=$PKG || exit 1 + +cd $TMP +tar xvf $CWD/VulkanMemoryAllocator-$VULKAN_MEMORY_ALLOCATOR_VERSION.tar.?z || exit 1 +cd $TMP/VulkanMemoryAllocator-$VULKAN_MEMORY_ALLOCATOR_VERSION + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \+ + +mkdir -p build +cd build + cmake \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_SYSCONFDIR=/usr/share \ + -DVulkan_GLSLANG_VALIDATOR_EXECUTABLE=$PKG/usr/bin/glslangValidator \ + -DVulkan_GLSLC_EXECUTABLE=$PKG/usr/bin/glslc \ + -DVulkan_INCLUDE_DIR=$PKG/usr/include \ + -DVulkan_LIBRARY=$PKG/usr/lib$LIBDIRSUFFIX/libvulkan.so.$VULKAN_LOADER_VERSION \ + .. + + # make uses glslangValidator/glslc, which is built against a shared + # libglslang that isn't installed yet + export LD_LIBRARY_PATH=$PKG/usr/lib$LIBDIRSUFFIX + + make $NUMJOBS || make || exit 1 + make install DESTDIR=$PKG || exit 1 + +cd $TMP find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true @@ -619,6 +789,10 @@ mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/gfxreconstruct mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/DirectXShaderCompiler mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/SPIRV-Reflect mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/Vulkan-Profiles +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/volk +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/Vulkan-Utility-Libraries +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/VulkanCapsViewer +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/VulkanMemoryAllocator cp -a \ SPIRV-Headers-$SPIRV_HEADERS_VERSION/LICENSE* \ SPIRV-Headers-$SPIRV_HEADERS_VERSION/README* \ @@ -696,6 +870,26 @@ cp -a \ Vulkan-Profiles-sdk-$VULKAN_PROFILES_VERSION/README* \ Vulkan-Profiles-sdk-$VULKAN_PROFILES_VERSION/*.md \ $PKG/usr/doc/$PKGNAM-$VERSION/Vulkan-Profiles +cp -a \ + volk-sdk-$VOLK_VERSION/LICENSE* \ + volk-sdk-$VOLK_VERSION/README* \ + volk-sdk-$VOLK_VERSION/*.md \ + $PKG/usr/doc/$PKGNAM-$VERSION/volk +cp -a \ + Vulkan-Utility-Libraries-sdk-$VULKAN_UTILITY_LIBRARIES_VERSION/LICENSE* \ + Vulkan-Utility-Libraries-sdk-$VULKAN_UTILITY_LIBRARIES_VERSION/README* \ + Vulkan-Utility-Libraries-sdk-$VULKAN_UTILITY_LIBRARIES_VERSION/*.md \ + $PKG/usr/doc/$PKGNAM-$VERSION/Vulkan-Utility-Libraries +cp -a \ + VulkanCapsViewer-$VULKAN_CAPS_VIEWER_VERSION/LICENSE* \ + VulkanCapsViewer-$VULKAN_CAPS_VIEWER_VERSION/README* \ + VulkanCapsViewer-$VULKAN_CAPS_VIEWER_VERSION/docs/*.md \ + $PKG/usr/doc/$PKGNAM-$VERSION/VulkanCapsViewer +cp -a \ + VulkanMemoryAllocator-$VULKAN_MEMORY_ALLOCATOR_VERSION/LICENSE* \ + VulkanMemoryAllocator-$VULKAN_MEMORY_ALLOCATOR_VERSION/README* \ + VulkanMemoryAllocator-$VULKAN_MEMORY_ALLOCATOR_VERSION/docs/*.md \ + $PKG/usr/doc/$PKGNAM-$VERSION/VulkanMemoryAllocator mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc |