wip
All checks were successful
continuous-integration/drone/pr Build is passing

This commit is contained in:
light7734 2025-10-10 13:58:32 +03:30
parent 1ab514be71
commit 197e10c0cf
Signed by: light7734
GPG key ID: 8C30176798F1A6BA
2 changed files with 18 additions and 11 deletions

View file

@ -26,7 +26,6 @@ struct AssetMetadata
Type_T type; Type_T type;
}; };
#pragma pack()
struct BlobMetadata struct BlobMetadata
{ {
Tag_T tag; Tag_T tag;

View file

@ -38,23 +38,31 @@ public:
destination, destination,
std::ios::binary | std::ios::trunc, std::ios::binary | std::ios::trunc,
}; };
ensure(stream.is_open(), "Failed to pack shader asset to {}", destination.string()); const auto code_blob_metadata = BlobMetadata {
// NOLINTBEGIN(cppcoreguidelines-pro-type-cstyle-cast)
stream.write((char *)&asset_metadata, sizeof(asset_metadata));
stream.write((char *)&metadata, sizeof(metadata));
auto code_blob_metadata = BlobMetadata {
.tag = std::to_underlying(BlobTag::code), .tag = std::to_underlying(BlobTag::code),
.offset = static_cast<size_t>(stream.tellp()) + sizeof(BlobMetadata), .offset = static_cast<size_t>(stream.tellp()) + sizeof(BlobMetadata),
.compression_type = CompressionType::none, .compression_type = CompressionType::none,
.compressed_size = code_blob.size(), .compressed_size = code_blob.size(),
.uncompressed_size = code_blob.size(), .uncompressed_size = code_blob.size(),
}; };
stream.write((char *)&code_blob_metadata, sizeof(BlobMetadata));
stream.write((char *)code_blob.data(), static_cast<long long>(code_blob.size())); ensure(stream.is_open(), "Failed to pack shader asset to {}", destination.string());
// NOLINTEND(cppcoreguidelines-pro-type-cstyle-cast) const auto write = [&stream](auto &field) {
stream.write(std::bit_cast<char *>(&field), sizeof(field));
};
write(asset_metadata.type);
write(asset_metadata.version);
write(metadata.type);
write(code_blob_metadata.tag);
write(code_blob_metadata.offset);
write(code_blob_metadata.compression_type);
write(code_blob_metadata.compressed_size);
write(code_blob_metadata.uncompressed_size);
stream.write(
std::bit_cast<char *>(code_blob.data()),
static_cast<long long>(code_blob.size())
);
} }
ShaderAsset(const std::filesystem::path &path); ShaderAsset(const std::filesystem::path &path);