Feat: Misc Update#426
Merged
Merged
Conversation
VulkanBuffer::Map applied no offset to the returned pointer and never flushed/invalidated non-coherent memory; it now returns base+offset, invalidates on a read map and flushes on unmap of a write map. Buffer allocation keyed host-access flags off `usages | mapWrite`, which is always true and forced every buffer into host-visible memory; it now uses `& mapWrite` for sequential-write and `& mapRead` for random-access host memory. DX12Buffer::Map likewise returned the resource base without adding the offset; it now returns base+offset to match the contract.
The buffer<->texture copy paths only produced correct results when copying a whole sub-resource at the base mip; sub-region and multi-mip/3D copies were wrong: - Vulkan: bufferRowLength/bufferImageHeight are measured in texels, but the helper assigned byte pitches; drive them from the sub-resource footprint. - DirectX12: the staging footprint used copyRegion for its extent, making the slice stride diverge from the documented footprint; use the full extent and let the copy box select the window. - GetTextureSubResourceCopyFootprint ignored the mip level on Vulkan (always base extent) and mis-indexed array layers on DirectX12; both now report the per-mip, per-layer footprint (with 3D depth halved per mip). - Texture asset upload: UpdateMips under-allocated 3D sub-resources (missing depth) and the staging fill/copy used base width/height/depth for every mip; both are now driven by the per-mip footprint, fixing an out-of-bounds write for array textures.
Add DrawIndirect/DrawIndexedIndirect/MultiDrawIndirect/MultiDrawIndexedIndirect to RasterPassCommandRecorder across the Vulkan, DirectX12 and Dummy backends, with DrawIndirectArguments/DrawIndexedIndirectArguments describing the indirect buffer layout. Add BufferState::indirect with the matching Vulkan barrier and DX12 resource state mappings. DirectX12 pre-creates the draw and draw-indexed command signatures at device startup.
Runtime dependencies and resources all land in one shared per-sub-project Binaries directory, and previously every consumer re-copied an overlapping set of files there, so parallel builds raced on the same destination files (intermittent "Error copying file" failures, hit most often on macOS). Now each runtime file is copied by exactly one owner. Files referenced through a target ($<TARGET_FILE:...>) get a deduplicated per-file owner created in the consumer scope where the target is visible (imported third-party targets such as Qt are directory-scoped); first-party owners wait on their producing target, and they cannot share a single owner or a build tool such as MirrorTool would close a dependency cycle. Plain-path third-party files and resources are batched into one per-sub-project assets target whose copies run sequentially.
DXC's StringRef.h specializes std::is_nothrow_constructible, which recent Apple Clang on the macOS-latest runner rejects as -Winvalid-specialization (an error by default), breaking the Configure CMake step. Pass -Wno-invalid-specialization (guarded by -Wno-unknown-warning-option for older clang) so the pinned source compiles while keeping its behavior.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.