Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/HansKristian-Work/dxil-spirv.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <post@arntzen-software.no>2022-03-29 16:10:18 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2022-03-30 15:24:32 +0300
commit28880d0a0342982ce45217a4ef1dc3abfb99c113 (patch)
tree6874ac0b9862ccf2a44af404495953ac2e2b6b81 /dxil_converter.cpp
parent307c7f9c5d65846695cbe1be91a4c8e7f12536a4 (diff)
Fix some build reproducibility issues.
Function arguments building SPIR-V types or constants can be executed in any order, and is problematic for caching purposes. Select order which didn't change test output.
Diffstat (limited to 'dxil_converter.cpp')
-rw-r--r--dxil_converter.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/dxil_converter.cpp b/dxil_converter.cpp
index 9817efa..bafaf8a 100644
--- a/dxil_converter.cpp
+++ b/dxil_converter.cpp
@@ -2202,9 +2202,10 @@ bool Converter::Impl::emit_shader_record_buffer()
{
case LocalRootSignatureType::Constants:
{
+ spv::Id array_size_id = builder.makeUintConstant(elem.constants.num_words);
+ spv::Id u32_type = builder.makeUintType(32);
spv::Id member_type_id =
- builder.makeArrayType(builder.makeUintType(32),
- builder.makeUintConstant(elem.constants.num_words), 4);
+ builder.makeArrayType(u32_type, array_size_id, 4);
builder.addDecoration(member_type_id, spv::DecorationArrayStride, 4);
member_types.push_back(member_type_id);
offsets.push_back(current_offset);
@@ -3113,10 +3114,14 @@ spv::Id Converter::Impl::get_type_id(const llvm::Type *type)
}
case llvm::Type::TypeID::ArrayTyID:
+ {
if (type->getArrayNumElements() == 0)
return 0;
- return builder.makeArrayType(get_type_id(type->getArrayElementType()),
- builder.makeUintConstant(type->getArrayNumElements(), false), 0);
+
+ spv::Id array_size_id = builder.makeUintConstant(type->getArrayNumElements());
+ spv::Id element_type_id = get_type_id(type->getArrayElementType());
+ return builder.makeArrayType(element_type_id, array_size_id, 0);
+ }
case llvm::Type::TypeID::StructTyID:
{