Skip to content

Commit

Permalink
Squashed commit of the following:
Browse files Browse the repository at this point in the history
commit d2196b654db3f48806dba7f929b0c8c54a2cb43b
Author: bradgrantham-lunarg <[email protected]>
Date:   Tue Aug 20 16:33:15 2024 -0700

    add missing C_FLAGS to x86_32 toolchain (#1676)

commit 4c5b7628171632be4dc0bb6300b845a912b60a02
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue Aug 20 12:41:42 2024 +0300

    Some fixes in the resolve path of VulkanResourcesUtil

commit 452c212dec491add89679a9e95b68b41a77348a2
Author: David Pinedo <[email protected]>
Date:   Mon Aug 19 16:42:38 2024 -0600

    Dump resources: Use VK_NULL_HANDLE rather than nullptr

commit ebefe901e18f0eb1ed47ce0f27eeca684ad4a1c3
Author: David Pinedo <[email protected]>
Date:   Mon Aug 19 16:03:14 2024 -0600

    Dump resources: Fix code formatting error

commit 56694beb41fc488b61c2795f078cfa5b231125b2
Author: David Pinedo <[email protected]>
Date:   Mon Aug 19 11:26:01 2024 -0600

    Dump resources: Fix params in call to vkResolveImage

    Dump of image with VK_SAMPLE_COUNT_4_BIT now works

commit 14a1d2e08672c77885d1debfaa79a980dd92bc3d
Author: David Pinedo <[email protected]>
Date:   Wed Jul 31 15:33:23 2024 -0600

    Dump resources: Don't dump stencil buffers

    Stencil buffer dump is not yet supported

commit 4a1445f3f6b586946086cb9b63e33cd64e8b365d
Author: David Pinedo <[email protected]>
Date:   Tue Jul 30 13:16:52 2024 -0600

    Dump resources: Remove extra call to ReadFromBufferResource

commit 0e1264acc7cdfd103ad7c30a3b24a35d619f28ee
Author: David Pinedo <[email protected]>
Date:   Thu Jul 18 15:57:10 2024 -0600

    Dump resources: Handle case when vkCmdBindDesriptorSets has null value in pDescriptorSets

commit 6df5ebc3e6c61bfc891b530c36554ee54aa754e2
Author: David Pinedo <[email protected]>
Date:   Thu Jul 18 13:30:06 2024 -0600

    Dump resources: Handle null depth attachment in vkCmdBeginRenderingKHR

commit 25a46797370f11b1a8d6ea6311eb94b851ab4832
Author: David Pinedo <[email protected]>
Date:   Wed Jul 17 16:44:02 2024 -0600

    Dump resources bug fixes

        - Remove extreaneous assert
        - Handle sems correctly
        - Dump index/vertext buffers

commit f5df57e92d3cd403d9536b0a9db50976b12fc155
Author: Nick Driscoll <[email protected]>
Date:   Mon Aug 19 15:02:44 2024 -0400

    Save process environment variables to capture file

    * Add new metadata block SetEnvironmentVariablesCommand

    * Add new flag to gfxrecon-info '--env-vars-only'

    * Add new flag to gfxrecon-renamed-replay.py '-e|--environment-variables'

commit ef157dadea74b8b055749ce3f1ca04389501d526
Author: Fabian Schmidt <[email protected]>
Date:   Tue Aug 13 16:35:49 2024 +0200

    Fix regression: handle vkDestroy*** calls being passed null-handles (#1666)

commit 6a3abfaa1ea07ac196b82b5946d505981a6a261e
Author: Fabian Schmidt <[email protected]>
Date:   Tue Aug 13 09:22:26 2024 +0200

    Add macOS to github-release-build action (#1651)

commit 7876c5196c14bb7f41e1458e548a40233cc94376
Author: Fabian Schmidt <[email protected]>
Date:   Tue Aug 13 08:56:48 2024 +0200

    Avoid async w. externally synched pipeline-caches (#1661)

    - Keep track of externally synchronized pipeline-caches
    - Avoid async operations when using externally synched pipeline-cache

commit 5b217b9cb00c58198249831b75a56397d8e95a16
Author: Fabian Schmidt <[email protected]>
Date:   Tue Aug 13 08:54:01 2024 +0200

    Check SPIRV-capabilities, early exit parser (#1662)

    Check SPIRV-capabilities, early exit parser

    - check for required CapabilityPhysicalStorageBufferAddresses
    - bail out early, decrease avg parsing-time

commit 77ebadcd8cc5f675f132867956076b8194c341ba
Author: Marius Pelegrin <[email protected]>
Date:   Thu Aug 8 10:58:58 2024 +0200

    Fix `VulkanSwapchainOptions`

    - Offscreen swapchain frame boundary option has been forgotten when
    creating the `VulkanSwapchainOptions` structure, breaking it
    - Fix inconsistent variable names in the structure

    Change-Id: I84a7956575d6b0d96fee40ba9c1aed873afda325

commit 2f4d66d39a2282799a5199ba329c28337f4ea18b
Author: Marius Pelegrin <[email protected]>
Date:   Wed Jun 5 14:21:39 2024 +0200

    Remove empty command buffer from frame boundary submission

    Change-Id: I8d75b37dd5512fc6c1abbdb49f131d3ce7b6cc7c

commit cb7716a12fe2f00a1f91481b893f3906abaa50e6
Author: Ihor Zvieriev <[email protected]>
Date:   Fri Jun 14 18:27:25 2024 +0200

    Fixing ppBuildRanges for gfxrecon-convert

    ppBuildRanges is a an array of pointers of infoCount pointers to arrays of geometryCount of a particular build geometry info.
    Previously, convert was failing to extract this information if the infoCount or geometryCount was > 1.

    This commit enables convert to extract the info correctly.

    Change-Id: Ic48932516226124be8487c245d6a1782dddbdb8c

commit 189d48f6421a6838e358ac9c2febbc348cc5c3de
Author: Marius Pelegrin <[email protected]>
Date:   Fri Jul 26 16:57:03 2024 +0200

    Fix noop functions address comparison

    It sometimes is necessary to check if a vulkan call in a table is
    noop or not.
    Current prototypes of noop functions include the `static` keyword,
    making address comparison impossible because the address changes
    for each translation unit.

    These functions are all one-liners with a simple call to a logging
    message. I propose to replace the `static` keyword with `inline`.
    The C++ standard specifies that inline functions have the same
    address accross translation units.

    Change-Id: If39e134d4d0cef2d818541b6b376eb26bf001880

commit 8357295204e2b5c64fb5c27995a6ac79a388a555
Author: Fabian Schmidt <[email protected]>
Date:   Thu Aug 8 10:26:29 2024 +0200

    Rework async-dependency-tracking to be deterministic (#1655)

    - Resolve vkDestroyFoo for tracked async-handles: sync/block instead of deferred-delete
    - Avoids shuffling of certain vkDestroyFoo calls when using --pcj X option

commit 45e2d882d1cda19bede83e0424178709a067d7a9
Author: Charles Giessen <[email protected]>
Date:   Mon Aug 5 12:19:07 2024 -0500

    build: Apply /bigobj for encode & decode targets

    Rather than adding the /bigobj flag to individual files, apply it to the
    entire static library on MSVC

commit 3dd2c600cf705cf57073050062c4ae5619abf529
Author: Ihor Zvieriev <[email protected]>
Date:   Mon Apr 8 16:20:17 2024 +0200

    Fix uninitialized member that led to gfxrecon-info incorrectly reporting usage of page guard external memory

    Change-Id: I72dc2af6a59bc820cfeb4e17f0f0aa59d7764faa

commit fbc8e1e03630c1ce3beaa62ff49f9cd8a615d297
Author: Bartosz Muszarski <[email protected]>
Date:   Mon Aug 5 14:51:39 2024 +0200

    Remove assert from DestroyCommandPool

    VkDestroyCommandPool specs state that pool can be a null handle,
    yet its override in replay asserts the pool info struct pointer.

    Change-Id: I4aa551a1bdd3288b9a6085c3c691f4c7841bb888

commit e65e80ae7be3fb3e7ff04f89b4c604b984f17baa
Author: ziga-lunarg <[email protected]>
Date:   Tue Aug 6 12:08:59 2024 +0200

    Remove duplicated line in dump resources doc (#1653)

commit a457f7de3f9876d869bd5f809d15aca2710c8eff
Author: Fabian Schmidt <[email protected]>
Date:   Mon Aug 5 18:35:25 2024 +0200

    Check SPIRV/Buffer-References inlined in pNext (#1650)

    Check SPIRV/Buffer-References inlined in pNext

    - VkPipelineShaderStageCreateInfo 'can' provide a VkShaderModuleCreateInfo in pNext
    -> Add helper-routines to check for that case
    - Add required nullptr-check to OverrideDestroyPipeline
    - minor refactoring: vulkan_struct_extract_handle_ids routine
    - cleanup+doc for vulkan_check_buffer_references routines

commit de5170713918ac4b2e0e3c88db5b41b15b114f8f
Author: ziga-lunarg <[email protected]>
Date:   Sun Aug 4 12:03:16 2024 +0200

    Fix wrong setting name in android usage doc (#1649)

commit 7686fea4f5dc55db0e798d316fb58ecc42d6bf9b
Author: Mike Schuchardt <[email protected]>
Date:   Wed Jul 31 22:54:27 2024 -0700

    tocpp: Don't assert on positive return codes

    Fixes a crash when an array query changes length between capture and
    replay (VK_INCOMPLETE)

commit 57ef7297a1214039a26a80ed2c1881371e58f5e9
Author: Mike Schuchardt <[email protected]>
Date:   Wed Jul 31 22:50:05 2024 -0700

    tocpp: Fix array args

    Looks like a copy/paste error was treating them like handle values

commit 378107f44cf42d584298ea979c5bd59701914e16
Author: Mike Schuchardt <[email protected]>
Date:   Wed Jul 31 22:34:14 2024 -0700

    tocpp: Fix output arguments

    - Rework/simplify some pretty confusing control flow in the generator
    - Add a null check before creating local variables for output arguments
    - Initialize scalar output arguments to the capture value so the count
      in entry points like vkGetPhysicalDeviceSurfaceFormats2KHR works
      correctly
    - Initialize array and struct output arguments to zero so the driver
      doesn't try to dereference any uninitialized pNext pointers

commit cec1c78798924e4a123b4d685d2e8a327f067b92
Author: Mike Schuchardt <[email protected]>
Date:   Thu May 23 11:21:53 2024 -0700

    tocpp: Add support for output pointer struct members

commit 9718b7c57dfb34284e41a36523a5ab7f60913e8e
Author: Fabian Schmidt <[email protected]>
Date:   Fri Aug 2 18:29:45 2024 +0200

    Fix wrong/forgotten copyright in a header-file (#1648)

commit de565052d84620a45bb5afe958c0647791708274
Author: Fabian Schmidt <[email protected]>
Date:   Fri Aug 2 08:47:13 2024 +0200

    Extend Async Support: vkCreateComputePipelines, vkCreateShadersEXT (#1646)

    * Extend Async Support: vkCreateComputePipelines, vkCreateShadersEXT

    - minor improvement for vulkan_struct_deep_copy routine, cover some edge-cases
    - sync pipeline-handle before destruction, potentially in-flight
    - cleanup/refactoring

commit 464c8c845dc9b24b446691d036b666ae902a418a
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Aug 1 19:32:48 2024 +0200

    vulkan dump resources fixes (#1642)

    The calculations for the size of indirect draw calls param buffer was
    off.

commit 1aacbd501b23e33d65e9dd135a51ba02f92483bd
Author: Fabian Schmidt <[email protected]>
Date:   Tue Jul 30 16:56:14 2024 +0200

    Refactor encode::vulkan_trackers::TrackStruct() routine (#1643)

    Refactor encode::vulkan_trackers::TrackStruct() routine

    - Built on top of graphics::vulkan_struct_deep_copy routines
    - Avoids duplication, reduces code-footprint, less coupling, less memory-allocations

commit 7e1e375ea6a59d2a0ae9de8088fc52d5fab5c257
Author: Fabian Schmidt <[email protected]>
Date:   Tue Jul 30 09:01:50 2024 +0200

    Asynchronous Pipeline Creation (#1607)

    - Add Threadpool to utils
    - Add generic vulkan_struct_deep_copy for deep-copies of input structures
    - Add a type-trait has_handle_future to retrieve handles via std::future
    - Add tracking and deferred deletion of handles used during asynchronous ops
    - Apply all that for vkCreateGraphicsPipelines only first
    - Add CLI-option --pipeline-creation-jobs or --pcj - default: 0

commit f6e175620b7fbf7554d60abc06c72a30223e809d
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue Jul 30 07:44:36 2024 +0200

    Vulkan dump resources: Fix indirect params fetching (#1639)

    Fetching of indirect draw call params should be fetched at all times,
    not only when dumping of vertex buffers is requested

commit 1d577c94373144b27c91062bd0ee65514245bddd
Author: Dustin Graves <[email protected]>
Date:   Wed Dec 6 14:54:39 2023 -0700

    Fix DX12 render pass union encode/decode

    Fix encoding/decoding for the D3D12_RENDER_PASS_BEGINNING_ACCESS and
    D3D12_RENDER_PASS_ENDING_ACCESS union members:
    - The Clear/Resolve union members were always encoded/decoded, regardless
      of render pass access type, resulting in uninitialized pointers being dereferenced
      when the type was not clear or resolve.
    - A new union member, PreserveLocal, added by the Agility SDK, was not being
      processed for encoding/decoding.

commit 0afe247e939bfa4f8516017b9ca705310a82ceae
Author: Ming Zheng <[email protected]>
Date:   Mon Jul 29 14:39:22 2024 -0400

    Fix playback handling error of ID3D12Device::CreateConstantBufferView (#1631)

    * Fix playback issue for handling ID3D12Device::CreateConstantBufferView

    In the API ID3D12Device::CreateConstantBufferView, pDesc is an optional
    parameter, so we need to include nullptr protection for it.

commit 243e4941cf0dcf0397c135ce746b5bcbd7ed41e6
Author: Dustin Graves <[email protected]>
Date:   Thu Jun 29 14:56:26 2023 -0600

    Add ID3D12DeviceFactory replay override

    Add a replay override for ID3D12DeviceFactory::CreateDevice to
    perform the same device initialization as the D3D12CreateDevice replay
    override.

commit 7977e0a75d9309d04c1217ec4462c4764959bfa2
Author: Nick Driscoll <[email protected]>
Date:   Mon Jul 29 09:00:42 2024 -0400

    Fix broken trimming for vkCmdPushDescriptorSetWithTemplate[2]KHR commands (#1633)

    Use BeginTrackedApiCallCapture and EndCommandApiCallCapture as well fix mistake in tracked resource consumer.

commit 0e83e75cf561aa99a3333f6cdbc49c07318ead35
Author: Locke Lin <[email protected]>
Date:   Fri Jul 26 15:16:01 2024 -0600

    Avoid writing redundant QueueSubmit (#1638)

commit 5720914d71c450e9edd5fa69684d14110fb8b7e9
Author: ziga-lunarg <[email protected]>
Date:   Sat Jul 20 11:35:24 2024 +0200

    Fix typo in dump resources log (#1630)

commit cdb4df5d40f8cd1e444ccebe7ee58d6a407300df
Author: davidd-lunarg <[email protected]>
Date:   Sat Jun 22 13:06:09 2024 -0700

    Track more info with each dumped resource

commit 2399ee11e20f7e373def55af43bddb8bc427d986
Author: davidd-lunarg <[email protected]>
Date:   Sat Jun 22 10:42:23 2024 -0700

    Use a customizable delegate for dumping res data

commit 85cfe0ed028576f082217313953a477ff4754c68
Author: Mike Schuchardt <[email protected]>
Date:   Mon Jul 8 00:14:30 2024 -0700

    Uffd restart interrupted system calls

    Some applications were observed to crash when using the userfaultfd
    memory tracking mode due to interrupted system calls failing with EINTR.
    Set the SA_RESTART flag on the RT signal handler so that interrupted
    system calls on application threads blocked by UffdBlockFaultingThreads
    are automatically restarted.

    Note that although not all system calls can be restarted, this change
    does improve compatiblity for a handful of tested applications on
    Android.

commit 2a1de94d0ea0ff0ce66bc149e330a6f8533b30ec
Author: Locke Lin <[email protected]>
Date:   Tue Jul 16 13:04:25 2024 -0600

    Allocator support VideoSession (#1620)

    * Allocator support VideoSession

    Allocator does something for VideoSession, that is similar with Buffer
    and Image. The different is that a VideoSeesion could bind plural memories.
    See GetVideoSessionMemoryRequirements and BindVideoSessionMemory.

    * Fill VMA unsupported part

    VMA doesn't support VideoSession
    See
    https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/issues/307

    We need to do the unsupported part ourselves.

    * Use replay MemoryRequirements of VideoSession

    replay MemoryRequirements could have different count and size.
    Depend on device, driver, and queue. Some have one big
    MemoryRequirements. Some have plural small. Use replay
    MemoryRequirements to AllocateMemory and Bind on RebindAllocator.

commit 2bc2daa015e74814a73637e484a41a48cd7c13f1
Author: Charles Giessen <[email protected]>
Date:   Thu Jul 11 15:01:42 2024 -0500

    Add --pbi-all and --pbis options for all FileProcessor subclasses

commit 12ce47d1c263ebae8d1206cccfd2e19e7c48a252
Author: Charles Giessen <[email protected]>
Date:   Thu Jul 11 15:41:12 2024 -0500

    Refactor PreloadFileProcessor recording logic

    Moves common patterns into a utility function ReadParameterBytes.

commit 815902b7a0119b98dccedc2c87d69032797525d9
Author: Charles Giessen <[email protected]>
Date:   Wed Jun 26 14:37:28 2024 -0500

    Make FileProcessor::ProcessBlocks common code reuseable

    Any class extending FileProcessor does so to modify how blocks are processed.
    The logic ProcessBlocks does not lend itself well to abstraction, so the best
    alternative is to move as much code into the subfunctions as possible.

    The offending code was frame delimiter code, which was properly copied into
    subclasses, while logic to fixup old traces lacking frame delimiters was not.

commit c449b4066091dbc6bba05544f2308c37dff0a5dd
Author: Bartosz Muszarski <[email protected]>
Date:   Mon Jun 19 18:37:29 2023 +0200

    Add trace preload option

    Adds preload-measurement-range option allowing to preload a frame range
    specified with --measurement-frame-range option from the trace file into
    a continuous, expandable buffer, in order to mitigate the impact of
    read file commands on performance mesurements.

    Change-Id: Ic3580b163edc5107b496b122c8fdd72dec8ca13f

commit 64f7c1ce9dd4a38629e8d3f936fea72669fddd59
Author: Nick Driscoll <[email protected]>
Date:   Fri Jul 12 13:59:54 2024 -0400

    Update Vulkan headers to 1.3.290 (#1624)

commit 58b31d9620d62c8de35dfe2697e6c30bdc61c1ac
Author: Fabian Schmidt <[email protected]>
Date:   Fri Jul 12 10:49:26 2024 +0200

    Update SPIRV-Reflect submodule (#1622)

    - upstream-fix prevents crashes for certain shaders using buffer-references.

commit f9b6598bdde280ab21dc8b2c2d5113e586c95922
Author: Marius Pélégrin - ARM <[email protected]>
Date:   Thu Jul 11 21:43:43 2024 +0200

    Fix handle mapping/unwrapping for acceleration structure building (#1590)

    Change-Id: I526eb16c866785c60aab0121dd21df2131ba6893

commit 6b1fc0b02591ae2427abf3a0b822bececdf2c1a2
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Jul 11 19:12:08 2024 +0300

    Vulkan dump resources vertex input rate instance (#1618)

    * Use VkDrawIndirectCommand and VkDrawIndexedIndirectCommand instead

    * Dump vertex bindings with instance input rate

commit ef8bb3b42e39fb74931758d7054b312c34fcb343
Author: ziga-lunarg <[email protected]>
Date:   Tue Jul 9 22:28:57 2024 +0200

    Fix shadow semaphores used in VkSubmitInfo (#1537)

    * Fix shadow semaphores used with VkSubmitInfo

    A semaphore can be signaled with both vkAcquireNextImage and
    with VkSubmitInfo pass to vkQueueSubmit.

    If a null-swapchain/surface is signaling a semaphore we use the
    shadow_signaled variable to track the state of the semaphore, instead of
    actually signaling and waiting on it with vk commands.

    This works if such a semaphore is only used with vkAcquireNextImageKHR
    and vkQueuePresentKHR, but if the same semaphore is being used with
    VkSubmitInfo passed to vkQueueSubmit the semaphore will never be
    signaled, but will be waited on in vkQueueSubmit.

    To fix this we add a variable signaled, which is used to track the
    actual semaphore state when used in VkSubmitInfo.

    * Move duplicated code to a helper function

commit 2ed92659fbade8ccd1b2699051e08a49a35367b4
Author: Marius Pélégrin - ARM <[email protected]>
Date:   Mon Jul 8 18:48:33 2024 +0200

    Fix OverrideCreateInstance and OverrideCreateDevice (#1478)

    These two functions have become very hard to read and modify, and full
    of small edge-case bugs because of this. With this commit I propose
    to clean a little these two functions, by:
    - Removing some unecessary nested if that should belong in a
    validation layer, and eventually replacing them with an assert
    - Uniformizing variable names between these two functions as they
    perform a lot of very similar operations
    - Adding VK_EXT_frame_boundary as a DEVICE extension, and not an
    instance extension, which it has never been (and also doing so
    before setting the modified_extensions in the create info, not
    after)
    - Adding fake support for VK_EXT_frame_boundary
    - Removing unsupported device features should only happen when
    `--remove-unsupported` option is set

    Change-Id: If861652dbe32c0e7cec3caa2bd6532f4d3d68398

commit c80eb05f4e4992a95c839b91997d34df8ac596ec
Author: Fabian Schmidt <[email protected]>
Date:   Mon Jul 8 18:40:41 2024 +0200

    MacOS: Correct window-size during replay (#1612)

    - Avoid high-DPI resolution conversions ([screen convertRectFromBacking:])
    - Add explicit [window setContentSize:] to enforce same window & framebuffer sizes

commit f37bb05442db7e2ba08f9600d219b8839a73e85f
Author: beau-lunarg <[email protected]>
Date:   Fri Jul 5 09:46:12 2024 -0400

    Add pipeline creation attempt annotation (#1559)

    * Add pipeline creation attempt annotation

    * Fix formatting

    * Formatting

commit 068a5487a3b61d7acaeff99d212be149841d6a06
Author: Locke Lin <[email protected]>
Date:   Wed Jul 3 10:24:28 2024 -0600

    options "--pbi-all" and "--pbis"

    Print block information

commit d570c3bf0edbdb571b1a3c0598136ae12490d344
Author: Fabian Schmidt <[email protected]>
Date:   Thu Jul 4 09:08:35 2024 +0200

    Add SpirV-reflection to detect usage of buffer-references (#1577)

    Add SpirV-reflection to detect usage of buffer-references

    - Add a SpirV-parser to detect dereferencing of buffer-references
    - track back to their definition and extract descriptor-set/binding/push-constant-block
    - from there using spirv_reflect: extract buffer-offsets and potential array-strides
    - issue a warning in case buffer-references are used, currently unsupported
    - remove multiple copies of spirv.h in external/precompiled
    - Add SPIRV-Headers as submodule
    - Add SPIRV-Reflect as submodule

commit 1c20857b4a31c27237fc2be95fa2d211266827ba
Author: ziga-lunarg <[email protected]>
Date:   Wed Jul 3 19:32:40 2024 +0200

    Add missing shadow fences from VkSwapchainPresentFenceInfoEXT (#1600)

    Fences can be signaled with VkSwapchainPresentFenceInfoEXT through
    vkQueuePresent, and if we are replaying with --surface-index the surface
    used by vkQueuePresent might not be used. Therefore we have to shadow
    signal the fence.

    vkGetFenceStatus must also check for shadow fences

commit 07a5481ad22e4518f1e77a556bd17f069f1c7132
Author: Locke Lin <[email protected]>
Date:   Mon Jul 1 17:56:47 2024 -0600

    Update VulkanMemoryAllocator to v3.1.0

    https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/blob/v3.1.0/include/vk_mem_alloc.h

commit 30c79ebe48a8faee4e413e744476ae84bb69af26
Author: JerryAMD <[email protected]>
Date:   Tue Jul 2 14:08:13 2024 -0400

    Set size of Dx12 swapchain to associated windows (#1563)

    * Set size of Dx12 swapchain to associated windows

    Problem
    IDXGIFactory::CreateSwapChainForHwnd allow swapchain's width and height as zero.
    When replay the trace, GFXR creates 0x0 window to replay.
    https://learn.microsoft.com/en-us/windows/win32/api/dxgi1_2/nf-dxgi1_2-idxgifactory2-createswapchainforhwnd#remarks

    Solution
    Inject a metadata block right before CreateSwapChainXXX() call and record the proper swapchain size.
    Replace the proper swapchain size by the metablock during replay.

commit 734aeaa869432e2e3826bdb7077c88c4e33b98ff
Author: Brad Grantham <[email protected]>
Date:   Fri Jun 28 10:17:42 2024 -0700

    fix formatting

commit c0b128b4f7d75019ebf56447eab6fd226e4530bb
Author: Brad Grantham <[email protected]>
Date:   Fri Jun 28 09:56:26 2024 -0700

    add precompiled library for spirv-reflect for MacOS

    * From SPIRV-Reflect 756e7b13243b5c4b110bb63dba72d10716dd1dfe

    * Change spirv_reflect.h to include spirv.h from precompiled

commit 6404a456b9b7a61c75f391b8321fbeab17b1c770
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Jun 28 19:11:06 2024 +0300

    Dump resources merged feature branch Vulkan fixes (#1609)

    * Vulkan dump resources src generation should not use blacklist

    * Fix output json annotation of images that failed scaling

commit 366c5bac939bf7b8de00e9b08b3808448c87730f
Author: davidd-lunarg <[email protected]>
Date:   Thu Jun 27 13:42:35 2024 -0700

    Apply formatting

commit 0a0286c8bd0cb7ed8b4eb52d827f7c9cee709f7d
Merge: 5efb345c2 ba7cc84b5
Author: davidd-lunarg <[email protected]>
Date:   Thu Jun 27 11:35:14 2024 -0700

    Merge branch 'dev' into davidp_dump_resources_merge4

commit ba7cc84b51b43f6f4bb51a5afa95906d3f1884b6
Author: Marius Pelegrin <[email protected]>
Date:   Fri Oct 6 08:54:04 2023 +0200

    Add vkCmdInsertDebugUtilsLabelEXT as a frame delimiter

    Currently only vkCmdDebugMarkerInsertEXT (under conditions on the
    name of the marker) is considered a frame delimiter (aside from
    queue present).

    However, VK_EXT_debug_marker is deprecated and promoted to the
    VK_EXT_debug_utils extension that support an almost identical
    command vkCmdInsertDebugUtilsLabelEXT.

    This commit only add this command as a frame delimiter under the
    same conditions on the name of the label (which replaces the
    marker).

    Change-Id: Ic4164ee65eba2c1295ef8c45084ee6136dc796a8

commit 3de39bd354418759b3509200cabc76f104aa5919
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Jun 27 10:54:03 2024 +0300

    Convert AHB related errors into warnings (#1603)

    * Convert AHB related errors into warnings

    * fix clang-format

    ---------

    Co-authored-by: bradgrantham-lunarg <[email protected]>

commit 5efb345c29c128c1e3d3fb9bc60710a5074537a3
Author: davidd-lunarg <[email protected]>
Date:   Wed Jun 26 09:59:26 2024 -0700

    dx dump: fix some res files not being written

commit 0320b1d360b51e9d44f3ea761f77342f4e2967be
Author: Panagiotis Apostolou <[email protected]>
Date:   Wed Jun 26 17:34:52 2024 +0300

    uffd: Do pthread_cond_timedwait instead (#1604)

    It is possible that the signal send by the uffd logic to block the
    applications threads cannot be delivered. For this reason do
    pthread_cond_timedwait on the condition variable instead of
    pthread_cond_wait which causes a deadlock in these cases.

commit 01a17004d65b42f6f7ed5c4e73a68c3b7346ba28
Author: David Pinedo <[email protected]>
Date:   Tue Jun 25 16:41:31 2024 -0600

    Fix bin file names use for dx12 output

    Make sure underscores are in the right place in the file names.

commit 4ca784a7a537ea94ee8a896008575f320fc7c981
Author: David Pinedo <[email protected]>
Date:   Tue Jun 25 09:32:30 2024 -0600

    Change DX12 dump resource json output header so it is consistant with VUlkan

    Also changed the name of the output json file to <capturefilename>_dr.json
    for both DX12 and Vulkan. It previously was <capturefilename>_rd.json.

commit d572f67ffea3877e205aff9436295d0ddd03bab7
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Jun 24 13:46:51 2024 +0300

    Remove rebase/merge leftover line

commit 790697b263a3e1df368dfe197fb4f02a2e3b13ee
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Jun 21 14:32:40 2024 +0300

    vkUpdateDescriptorSets should be overridden

commit 6d36d184ba12047952c35bb9caa6fe548d9cd37a
Author: nickdriscoll-lunarg <[email protected]>
Date:   Thu Jun 20 15:57:13 2024 -0400

    Support CmdPushDescriptorSetWithTemplate2KHR (#1594)

    Add support for vkCmdPushDescriptorSetWithTemplate2KHR() such that the functionality is at parity with the original function.

commit c10fc1c205f0dacca4387e526c260843ba559dd7
Author: Fabian Schmidt <[email protected]>
Date:   Tue Jun 18 09:02:35 2024 +0200

    Add paragraph for MacOS/codesigning to build instructions (#1587)

commit 32c722641fd8e90c8e31724b914e5255f655f72a
Author: bradgrantham-lunarg <[email protected]>
Date:   Mon Jun 17 18:15:46 2024 -0700

    use NDK 26 (#1589)

commit 82b38f9efe7ce58ea7deb39d8b40f8ea6e38f07a
Author: Ihor Zvieriev <[email protected]>
Date:   Sat Jun 15 00:35:40 2024 +0200

    Fix of infinite loop when looping over pNext chain (#1582)

    In case when searching for a struct on pNext chain, if the relevant struct is not the first in the list, we would have an infinite loop. This commit fixes that.

    Change-Id: I949c7f7e249caca0dbb206812b056d3d2292ffb2

commit bb4eb35eaebb3ec3076a82a22cbe6b23b93b3353
Author: Bartosz Muszarski <[email protected]>
Date:   Tue May 21 16:42:58 2024 +0200

    Fix decoder completion condition

    Currently decoder will return true from IsComplete and trigger
    early exit if it has two consumers and one of them completed
    before the other. This happens because completed consumers are
    erased from the consumers list which size is then compared against
    the count of completed consumers.
    With this change decoder will report completion only if all its
    consumers have completed.

    Change-Id: I5b22d048c9db88c88e1ceffd98f21a90ee666abb

commit 15b18115cd3bd14436d29b06568ec92fdcd8854b
Author: David Pinedo <[email protected]>
Date:   Thu Jun 13 15:38:14 2024 -0600

    Fix Android build

    Prior merge omitted a commit

commit 214eab439d70f282759e6d284456444dd489cb32
Author: David Pinedo <[email protected]>
Date:   Wed Jun 12 13:32:58 2024 -0600

    Fix code gen error in previous merge

commit 9d6d1055618d2ace3fcfbc390d8c2221d28fd0c5
Merge: 31ab39df1 976d49717
Author: David Pinedo <[email protected]>
Date:   Wed Jun 12 13:20:14 2024 -0600

    Merge branch 'davidp_dump_resources_merge2' into vulkan_dump_resources

commit 31ab39df1d07aac1ed099106197b323d7412633f
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri May 31 16:01:53 2024 +0300

    Try to detect proper image tiling when scaling images

commit 5ca00dd2994be82b5d25f08c501c34d93de89a8c
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri May 31 15:46:03 2024 +0300

    Mark in output json images that failed scaling

commit 415207ec6d2bdc8f056bfd12e4bb96574a0e1500
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon May 27 16:28:26 2024 +0300

    Add support for vkCmdTraceRaysIndirect2KHR

commit 3e6565abd9ca016275e2196916349544b8f8ceea
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon May 27 11:26:09 2024 +0300

    Some updates in dump resources documentation

commit da3cfe9c4526cffce8c1ce61c391e06585b40416
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri May 24 09:59:22 2024 +0300

    Demote inability to scale errors into warnings

commit 97f78d10961fa26c6832c939e5cae2ec84921636
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri May 24 09:32:47 2024 +0300

    --dump-resources-json-output-per-command should be fixed now

commit b81104647799adb0376b4f36ee7c47c86e06c793
Author: Panagiotis Apostolou <[email protected]>
Date:   Wed May 22 15:20:39 2024 +0300

    Terminate process on error

commit 1171e327d436f63a6dcd474269834f5ced4fa1c5
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue May 21 08:56:34 2024 +0300

    WritePngImage should not print errno value

    stbi_write_png can fail because of non file io reasons, so in these
    cases errno will not have a outdated value.

commit 3c3ac2432ad280b353701bace67083a0490e9c2b
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue May 21 08:55:29 2024 +0300

    Cast to uint32_t before passing down to GFXRECON_LOG_ERROR_ONCE

commit 94db56be562bfc32725550150861bfa5800ad252
Author: Daniel Friederich <[email protected]>
Date:   Mon May 20 09:39:42 2024 +0300

    Fix in GFXRECON_zlib_compress2

    The function assumes the zlib function compress2 always uses less memory
    for its result than for the input, which is not correct. zlib exposes a
    helper function compressBound to properly extend the size possibly
    needed.

commit 7585174ff5bbcc505cb409177216e0679c5998cc
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon May 20 09:35:13 2024 +0300

    Giving 2 variables a better name

commit 8914ee607d1f5d4d9cbe27f5806a827e1fe02f3f
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon May 20 08:58:06 2024 +0300

    Should be == instead of != VK_VERTEX_INPUT_RATE_VERTEX

commit 1c2cbe7f1640ab61cc8154f6b36ac88b279d6149
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri May 17 16:12:32 2024 +0300

    Removed some forgotten printfs

commit 7f8adfd178da1c94daf14e0685c2c16700ebd64d
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri May 17 15:28:14 2024 +0300

    Omit "vertexBuffers" entry in json when there aren't any

commit 46004a38ce7f80b50236f923120521a8c308c1d9
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri May 17 15:19:15 2024 +0300

    DumpImmutableResources should dump the previous rp's resources

commit a31aba1fcadd3244d6c99b8e2c8984eb207c52f0
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu May 16 10:52:55 2024 +0300

    Fix image writer functions to handle screenshots

    Consolidated WritePngImageNoAlpha with WritePngImage and
    WriteBmpImageNoAlpha with WriteBmpImage

commit bcdb83c1f92832dc8a08bbbbb8cc0f2c1b22cd4b
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue May 14 14:55:07 2024 +0300

    clang format parse_dump_resources_cli.cpp

commit 361969664b5738fe2b8c0855bc4e451dbb71d971
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue May 14 14:32:33 2024 +0300

    Remove redundant json library

commit ab373e7c35efe1ca70ebd107433584ebf064713c
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue May 14 13:52:51 2024 +0300

    Reset first_block_ each time the file is closed

commit a8422ceaca3f6c36b016ff9e5cba946a279e7852
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue May 14 11:15:17 2024 +0300

    Vertex/Index buffers are now dumped per draw call

commit 3baf6168a00fc1f9e9c559f915d9f7b967ec902d
Author: Panagiotis Apostolou <[email protected]>
Date:   Sun May 12 09:57:12 2024 +0300

    Handle VK_ATTACHMENT_UNUSED when creating render passes

commit e4ccb7ffc75429931c26454f7d40838f529110b4
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri May 10 14:14:24 2024 +0300

    Fix windows build

commit 9966a3095183386c744b2c90d203a520166ffafd
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri May 10 09:00:36 2024 +0300

    Don't scale images below 1 pixel in any dimension

commit f911fe44f518a1872ada4a70a619631df8360be2
Author: Panos Apostolou <[email protected]>
Date:   Thu May 9 17:57:05 2024 +0300

    Fix project version header include

commit e60535fcf3b27769ac0062bec7018becd04e0c66
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu May 9 13:53:14 2024 +0300

    Some logic for fetching TraceRaysIndirect was missing

commit e377d7ae12aa5c684eb91ce331c45f979d24aad9
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu May 9 13:24:26 2024 +0300

    DestroyCommandPool should release any relevant dumping resources

commit 17d465ac1d98e61d1c8cad63dbd8de345fac8c75
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu May 9 09:00:50 2024 +0300

    WritePngImage*() now checks return value from stbi_write_png

commit 96dc02fc9a33fee98215e5892d48c084cf7ffe7c
Author: Panagiotis Apostolou <[email protected]>
Date:   Wed May 8 13:26:52 2024 +0300

    Dump vertex and index buffers per render pass

commit 327c4a17a0f6d1920f26c66b26fc2bfc51f23598
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue May 7 17:03:28 2024 +0300

    Remove QueueSubmit object from output json

commit 29ea52ae2288e36eeb39e583e93336081d4a9dd7
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu May 2 18:23:08 2024 +0300

    Should be ok to reuse a command buffer for dumping

commit c0d5bdeefa44843f2a528bb6df7c74f1ad76c434
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri May 3 09:41:30 2024 +0300

    Amend last rebase with dev

commit 238d9258c6201b0d8c2270d3e8eb7acaae52332d
Author: Panagiotis Apostolou <[email protected]>
Date:   Wed May 1 10:44:10 2024 +0300

    Begin new json block for each QueueSubmit

commit a90fd3f1b509d9f0749a0868d653fb2782a61857
Author: Panagiotis Apostolou <[email protected]>
Date:   Wed May 1 08:46:48 2024 +0300

    CopyBufferResource should handle VK_WHOLE_SIZE

commit d3e0fb9cdfad1439c3a25ae3c2885d7cf5e22d09
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue Apr 30 14:05:01 2024 +0300

    Add support for vkCmdTraceRaysIndirectKHR

commit fefb890a7f96024f6231a6a148ead1abe4225701
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue Apr 30 11:31:05 2024 +0300

    CopyBufferResource() implementation was missing

commit 3bcb69f9ca610e421a9e8ea6f50638130abf6ffe
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue Apr 30 11:08:44 2024 +0300

    Small fixes in the json output generation

commit 6f3bab556b18ce6e14b847f7add3496ae07f4796
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Apr 29 18:49:45 2024 +0300

    Include qs and bcb index in all dumped filenames

commit ab69bcfe796df202f2c90f4833e70d9105ea18c2
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Apr 29 13:44:31 2024 +0300

    Small refactoring in dispatch/traceRays resources

    Dispatch and TraceRays outputs now support descriptor arrays

commit a0f6295c3a61155bfdf21712e45ac515fbc0be7e
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 26 17:56:27 2024 +0300

    Write dispatch and trace rays params in output json

commit 3b22d77ba71293698f0e7135c0286f8f962cce86
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 26 17:56:05 2024 +0300

    Avoid some crashes from VulkanReplayDumpResourcesJson

commit eb516884d629a3fb9b01b027c5f0c82efb050e2c
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 26 17:02:56 2024 +0300

    Simplify calls to GetFormatAspects()

commit f5d493ac201763bf5172a49092a479d781ce5253
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 26 16:53:00 2024 +0300

    Help function to get shader stage name

commit 0b17b16ac1020a6c49f710fcb8b5d10dd2a19079
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 26 16:08:30 2024 +0300

    Write dump resources options in json output

commit 4d84f3ff6c2c6a763ffed4910154ad284e4d7ef7
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 26 10:47:05 2024 +0300

    Enhance dump resources json output for dispatch/traceRays

commit ea4300f8da1f97cb1ad19a16362fcda09a65932d
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Apr 25 19:04:49 2024 +0300

    GenerateOutputJsonDrawCallInfo makes more sense like this

commit cf613dbc4d9b3c43df6152dd87efc0d5a59df97f
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Apr 25 18:45:57 2024 +0300

    Fixed DrawCall entries to be an array in json output

commit ed1a00d6698e5cb54711150a84cf21f9b2341810
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Apr 25 10:37:21 2024 +0300

    Enhance dump resources json output

commit ae2192ebf3611ba8955763d52c656094fa00ebaf
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Apr 22 09:47:22 2024 +0300

    Renamed replay options variable

commit 4f52ec8bd5fa552e790a9c0f3877401dee8d7e9b
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Apr 22 07:39:24 2024 +0300

    Simplify attribute name used for the scale factor

commit f41f4bd03e6dc49886778e815601435445ff9368
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 19 12:46:06 2024 +0300

    Remove redundant _ from filenames

commit eec15cd2fd42456ffd8d626740058d2eac640cf8
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 19 12:23:29 2024 +0300

    FinalizeCommandBuffer needs to be called twice when dumping before

commit cbc60cb0fbb1fcc205515f1fd918bc0304f31b27
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 19 11:56:17 2024 +0300

    Fixed a copy/paste type

commit 05ff01e3eced4cb7d15ff10fa18a6f1e622009ab
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 19 11:12:09 2024 +0300

    Add missing index from depth attachments in output json

commit 893faea31ee2e93efbfe143888d4be92b65dc8bd
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 19 10:39:03 2024 +0300

    Fixed a copy/paste mistake

commit 6bdf6fb2839fec037cb2103e9ebfc42a22a917ae
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 19 10:35:36 2024 +0300

    Queue submit indices do not need to be sorted

commit b413563f92c31cec9cb77fd9beaaee42a52b02ad
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Apr 18 09:32:08 2024 +0300

    Relax checks for sorted indices

    BCB and QS indices can be unsorted

commit 1735a034b65251116a77528f8845cdb060bb0ec1
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Apr 18 07:32:04 2024 +0300

    Added missing params from documentation

commit 24352c9e8b64f2cf7cbe26534fdae5113f6623eb
Author: Panagiotis Apostolou <[email protected]>
Date:   Wed Apr 17 14:07:53 2024 +0300

    Fixing conflicts that escaped last rebase with dev

commit 78332561940d5c7b1ea8c3d991d86ba6a80407c5
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue Apr 16 08:09:13 2024 +0300

    Do not delete old dump files

commit 45e4d1ac2e0aa7913edfef3139cf243a5f916f71
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Apr 15 16:23:57 2024 +0300

    Small changes in VulkanReplayDumpResourcesJson

    - Intermediate smart pointer to nlohmann::ordered_json was not necessary
    and is removed
    - VulkanReplayDumpResourcesJsonData is replaced by a template function
    - Scale factor is printed in the header
    - Print errno in case fopen fails

commit 456c210b037ac3a108166837bbb692af75a02597
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Apr 15 15:31:15 2024 +0300

    Add missing file extensions in output json

commit 6f94a0faafabdf1b3f9326456876bea7e6966741
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Apr 15 15:14:34 2024 +0300

    Handle missing dir separator when deleting old dumped files

commit d9962ec4a92be9de88e477a00ba580bf49b3531a
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 12 12:22:47 2024 +0300

    Enrich error messages

commit 20256b8153e90c035f61d5020c76dc1c3798e29c
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 12 12:22:19 2024 +0300

    Release resources instead of terminating process

commit c2a3a906e38762fcc5b1b96612a888ea2577bfa5
Author: Panagiotis Apostolou <[email protected]>
Date:   Sat Apr 6 09:53:18 2024 +0300

    Better handling for descriptor binding sizes and allocations

commit e4dfba3f9da1f1291e63dc8a65a06a036e9fe3a3
Author: Panagiotis Apostolou <[email protected]>
Date:   Sat Apr 6 09:48:40 2024 +0300

    Some fixes in WriteAstcImage's error checking logic

commit 03592ce6864b36242435889b0e69ac1614e2b6a7
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 5 17:45:09 2024 +0300

    Dynamic offsets for descriptors do not work correctly

commit 05bc3a53540c460cbfe38bc51e6c55e085b1033f
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Apr 5 13:50:26 2024 +0300

    Handle dynamic rendering

commit cdcea61abde5ca2d1447fdc2c7fe4288a900904f
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Apr 4 11:27:12 2024 +0300

    Basic dumping for inline uniform block descriptors

commit b4e73c5842deca2a895f387f62cb11af53397a61
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Apr 4 09:40:22 2024 +0300

    Support dynamic offsets for dynamic uniform and storage buffers

commit a443a07ec5df5fca4ddde659b3d1577a16c7a344
Author: Panos Apostolou <[email protected]>
Date:   Thu Mar 7 12:18:41 2024 +0200

    Split dump resources code into several files

    Cli option for dumping depth attachment

    Cli option to specify which color attachment to dump

    Update documentation with latest dump resources cli options

    Minimize # of arguments passed to dumping context classes

    Dump resources: Dump vertex and index buffers

    Hide some global constants

    Updated documentation for vertex/index buffers

    Refactor help text of dump resources params

    Option for one output json per dumped command

    Dump immutable shader descriptors

    Implement overrides for CmdPipelineBarrier2[KHR]

    Dump R8_UNORM images

    Isolate output json generation in a separate function

    Handle descriptor index arrays for Dispatch/TraceRays too

    Track immutable descriptor in Dispatch/RayTracing context

    Dump immutable descriptors from Dispatch/TraceRays

    Group functions according to their classes in the .cpp file

    Fix png image format

    Align dump resources and screenshot handler

    Dump astc compressed textures as .astc images

    Check for discrepancies between shader descriptors

    Check for discrepancies between descriptors detected by SPIRV-Reflect
    and the Vulkan descriptors

    Some clean ups for astc textures

    Dump immutable descriptors for Dispatch/TraceRays

    Store mutable resources clones in the command parameters

    Split dump resources code into several files

commit 84533afa5133808e41fc5d8591f528436ea11f5b
Author: David Pinedo <[email protected]>
Date:   Tue Feb 27 14:50:35 2024 -0700

    Dump resources documentation tweaks

commit aa6af555aa90297d6ae4016aaa0ea8937b06e113
Author: Panos Apostolou <[email protected]>
Date:   Fri Feb 23 12:57:45 2024 +0200

    Dump resources detailed documentation

commit fa1efbb0dfc69c6da43c0caaadb1e3ee97d0cbdf
Author: Panos Apostolou <[email protected]>
Date:   Thu Mar 7 09:28:21 2024 +0200

    Fix some leftover conflicts after merging with dev

commit a0f70b60f280b65e3f71ba87b955053aa2cf01b6
Author: Panos Apostolou <[email protected]>
Date:   Thu Feb 29 17:11:56 2024 +0200

    Dumping resources boolean vulkan option had stopped working

commit 84f8364da2b70b9aae74a7642a6905aacac95271
Author: Panos Apostolou <[email protected]>
Date:   Tue Feb 27 11:37:08 2024 +0200

    Fix linux build

    Some difficulties finding libjsoncpp between different platforms

commit 49cf8ba356c81c9a1325c75f39a71c88d1cd502d
Author: David Pinedo <[email protected]>
Date:   Mon Feb 26 15:56:58 2024 -0700

    Add more block indices to dump resources json output

commit 7f24082215c893d50563fc97fe016202315e5044
Author: David Pinedo <[email protected]>
Date:   Mon Feb 26 14:14:46 2024 -0700

    Use static jsoncpp library on Windows

commit 9b7986520d971fbea6cc92785bf4cd5b25e7289e
Author: Panos Apostolou <[email protected]>
Date:   Mon Feb 26 10:04:44 2024 +0200

    Moved variable members at end of class declaration

commit 0d138988732786b4222a81e8c727b37478fb7f4a
Author: David Pinedo <[email protected]>
Date:   Fri Feb 23 13:24:55 2024 -0700

    Added win32 jsoncpp.lib and spirv-reflect-static.lib to external/precompiled

    Also updated these libs for win64
    Also updated include header files for these libs
    Also tweaked a CMakeLists.txt file

commit 914fb2941d33019945aa0699184fc5e88109f517
Author: Panos Apostolou <[email protected]>
Date:   Fri Feb 23 12:02:29 2024 +0200

    Temporarily disable png format for dump resources

commit 4e5747f6fde9f311118fb53ad4a92661e3f7154e
Author: Panos Apostolou <[email protected]>
Date:   Fri Feb 23 11:51:12 2024 +0200

    Recompiled SPIRV-Reflect android binaries for x86 and x86_64

    Recompiled with -fPIC parameter this time

commit cd6ae12893fb5f471056761b7146c57c5fa598d0
Author: Panos Apostolou <[email protected]>
Date:   Fri Feb 23 10:55:31 2024 +0200

    Add jsoncpp precompiles binaries for x86 and x86_64 for Android builds

commit 9f506950019c6fb484757774fedc4ac53d22bc7b
Author: David Pinedo <[email protected]>
Date:   Thu Feb 22 16:38:13 2024 -0700

    Improved --dump-resources arg error messsages

commit 1b5d247f3a248c0b7f2d8e757f4325708dc87380
Author: David Pinedo <[email protected]>
Date:   Thu Feb 22 15:59:36 2024 -0700

    Implement json output for TraceRays and Dispatch

commit 21b62a1100e5eb4cd36f7aa8258bc4d1f076535f
Author: Panos Apostolou <[email protected]>
Date:   Thu Feb 22 14:36:17 2024 +0200

    Fix Android compilation after merging json output patches

commit 84e20d618ba97251514cd655bb0ffe8cb1f5c568
Author: David Pinedo <[email protected]>
Date:   Thu Feb 1 11:40:14 2024 -0700

    Change cli help text

    Fix error message

    json output partial implementation

    cli arg parsing fixes, fix an incorrecty merged file

      - fix parsing when dump args are on command line
      - fix Windows compile errors
      - correct misspellings in error messages
      - fixed recent incorrect merge of USAGE_desktop_Vulkan.md

    Additional json output implementation

    Replace all whitespace with spaces in dump resources command input line

    Clear json output at start of each block

    Fixed bug in which a short block output after a long block would
    have stuff in it from the long block.

    Include all target images in json output

commit b7f250f9c2b3f5c1e258e45b6bd920b1dbde2ea9
Author: Panagiotis Apostolou <[email protected]>
Date:   Tue Feb 20 17:52:14 2024 +0200

    Fix hangs when dumping from multiple command buffers

commit aae2a026918bcd9b39889f323a2f6ed8aec2030b
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Feb 19 17:01:21 2024 +0200

    Fixes in the dumping context destructors

commit ac9b33812cc2eb11409c0c6a2f92a2123eda9a0b
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Feb 19 15:16:56 2024 +0200

    Abstract out blit logic in VulkanResourcesUtil

commit 1d57d777076e77e3ce4de99a9b23f02239e78fa2
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Feb 16 18:14:28 2024 +0200

    Fixes in VulkanResourcesUtil

    Fixes in the scale image path:
    - Pipeline barrier after Blit was using stale/wrong srcAccessMask and
    dstAccessMask
    - Some artifacts are seen on amd 7800 and on the S22 when Blit command
    uses LINEAR filter. Switching to NEAREST appears to be fixing these
    artifacts
    - Stricter checks are performed if the implementation supports the
    requested combination of image format and tiling. It is possible that an
    implementation does not support to perform blit in some cases.
    - Since scale is allowed to be greater than 1.0f the scaled image
    dimensions need to be checked with the limits impossed by the
    implementation

    Other fixes in VulkanResourcesUtil:
    - Fixes in some src access masks and stages

commit da00840d00f27185a8093563c54bb8bd2a228f65
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Feb 16 12:23:26 2024 +0200

    Temporarily disabling mutable resources backup/restoring

commit 8e2b8427317f385755c6aed777e0a45924e04af9
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Feb 16 11:26:22 2024 +0200

    Removed most of debug printfs from the dump resources class

commit 66771939e76782c3b6ba70876f95cbb845cfc9cf
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Feb 16 11:12:16 2024 +0200

    Renamed the resourcer dumper variable with a more meaningful name

commit 4d73c44b950bc7d3bdcf01a0259e139bd47b0a90
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri Feb 16 11:09:25 2024 +0200

    Small fix for VulkanReplayConsumerBodyGenerator

    All api entries should check if resource dumping is enabled in the same
    manner

commit 996edc89bb0ff7efc3309251227947d8e0404851
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Feb 15 15:45:18 2024 +0200

    Another fix for multiple render passes

    The logic for which command buffers take the new render pass and which
    take the original render pass has been fixed

    Command line option for dump resources output directory

    Copied dump resources command line options to Android usage doc

commit b7450a150df9f739fc57c463c3adee26b6f31133
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Feb 15 12:40:08 2024 +0200

    Allow for equal consequtive indices in the QueueSubmit index list

commit 18e9c0c3d24e8f9075c8380ff70afed92c10ca75
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Feb 15 09:42:17 2024 +0200

    Handle empty render passes

    Empty render passes were attempted to be handled and be assigned draw
    calls that belonged to subsequent render passes. Now they should only be
    recorded without special treatment

commit 09cf7dfabf437bf73c14d47dad2741985ee223ae
Author: Panagiotis Apostolou <[email protected]>
Date:   Thu Feb 15 09:34:04 2024 +0200

    Don't assert when resource dumping is disabled

commit 618d3ad071afcca0dd4abe4c85c6eb144f8c7e74
Author: Panagiotis Apostolou <[email protected]>
Date:   Wed Feb 14 09:47:14 2024 +0200

    Stricter indices checks in the cli json parser

    Fixes for png writer

    Bmp writer can dump the whole line into the file

    Hide conversion buffer inside ConvertIntoTemporaryBuffer

commit c6cf9958faf676a3585ae0dffd03294d6ad883be
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Feb 12 12:27:19 2024 +0200

    Change class and file names for consistency

commit 9b60c48feb1b1057b9d51f0c137486b263902a5a
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Feb 12 11:04:55 2024 +0200

    Filename generation moved to separate functions

commit f4e866abfcb4642d1c88f726cf7ce97b01ef0ec5
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Feb 12 09:33:27 2024 +0200

    Removed render pass info printfs

commit cfffc4756181d548cda6d0a048c7c9b011240a49
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Feb 12 09:29:34 2024 +0200

    Removed stale timing logic

commit 8fde5fb0b9c6cbc217c7078909f34d00aa4e41e0
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Feb 12 09:26:11 2024 +0200

    Some clean up in the dumped filenames

commit 04c6f080ea5f81b8e2a6fedf5afed6498cfc113a
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Feb 12 07:59:30 2024 +0200

    Narrow down dumped resources

    Shaders can have resources defined in them that are not accessed inside
    their code, let alone updated. Using SPIRV-Reflect's accessed flag we
    can detect these resources and ignore them when dumping
    Dispatch/TraceRays resources

commit bf65684322e857e410e6076b921dd9b72feac5fc
Author: Panagiotis Apostolou <[email protected]>
Date:   Mon Feb 12 07:45:35 2024 +0200

    Buffer writer was leaking file descriptors

commit dcbaf7a8db43f39aa067f46615cdb788ff101e9b
Author: Panos Apostolou <[email protected]>
Date:   Thu Feb 8 09:24:11 2024 +0200

    Added support for R16G16B16A16_SFLOAT in the image writter

commit d6c5e3421f91fc620b03c187d54c4ced942b8265
Author: Panos Apostolou <[email protected]>
Date:   Mon Feb 5 18:22:31 2024 +0200

    Random small fixes in dump resources

commit 66a8ce1d76e2aefabcb38bbcba1c3ed7b9d35c45
Author: Panos Apostolou <[email protected]>
Date:   Fri Feb 2 11:14:07 2024 +0200

    Do some more elaborate sanity checks on dump resource indices

commit adede0055533b6cd84682a624b7cf99a748fb093
Author: Panos Apostolou <[email protected]>
Date:   Fri Feb 2 09:25:26 2024 +0200

    Renamed function

    Renamed DumpingSubmissionIndex to the more sensible
    ShouldDumpQueueSubmitIndex

commit 18ade25c696b91bab8bd94069cf9daa4f77eb1d7
Author: Panos Apostolou <[email protected]>
Date:   Thu Feb 1 16:28:37 2024 +0200

    An attempt for better handling of errors during submissions

commit 9d37511664f7a152874fced7797b551318cb5857
Author: Panos Apostolou <[email protected]>
Date:   Thu Feb 1 12:51:06 2024 +0200

    Some fixes for the scaling path in VulkanResourcesUtil

    - Images with more than 1 mip levels are now handled
    - Taken care to transition the new scaled image in the correct layouts
    - Pipeline barrier to make sure blit is completed before copying the new
    image

commit 9a7eaeb9b5f00e1ece0ab44d91038d37ae08561e
Author: Panos Apostolou <[email protected]>
Date:   Wed Jan 24 14:18:31 2024 +0200

    Dispatch/TraceRays dump resources initial commit

    Fix some leftovers from merge with dev

    Fixes for Dispatch/TraceRays dump resources

    Fixed several mistakes in
    DispatchRaysCommandBufferContext::CopyImageResource

    Removed redundant dumping resources replay option boolean

    Added hard coded indices for temple run on the S22

    Fix D3D12 build

    Don't initialize dump resources indices from global variables.

    ...and a few other minor tweaks

    Dumping CmdTraceRays resources is now handled by resource dump class

    Fixes in Override pipelines creations

    Cache info should be checked for null before dereferencing

    Integrated format conversion into png writter

    Y inversion of image can be handled in WriteBmpImage

    Dumping resources before Dispatch/TraceRays

    Removed printfs from PerformReflectionOnShaderModule

    Move dump resources arg parsing into a separate file

    clang-format changes

    Fix namespace declarations in parse_dump_resources_cli.*

    Integrade dump resource json parsing in Android

    Also replaced libjsoncpp pre-build binaries for Android with Release
    builds instead of Debug

    Fix for dumping Dispatch/TraceRays

    Dumping was done from wrong image

    Implement scaling of dump images

    Fix dump of 16-bit depth to png files

    Fixed bad stride when writing the file

    Dumping unhandled formats as plain binary files

    Dump resource image format can be configured from CL

    Some minor fixes for scaling for dump resources

    Enable dump resources scaling in Android too

    Removed hard-coded dump resources indices

commit 9475cac4001dc84b390fe221f93e3b1720e12986
Author: David Pinedo <[email protected]>
Date:   Tue Jan 23 15:53:21 2024 -0700

    Fix an error check

commit 5b8751b45f9a784240cf6981fba191bea349bdff
Author: David Pinedo <[email protected]>
Date:   Tue Jan 23 15:31:31 2024 -0700

    Rework cli to allow for multiple subpasses

commit 051fc22ac953504b8562926648f24da7b268985e
Author: David Pinedo <[email protected]>
Date:   Thu Jan 18 13:16:01 2024 -0700

    Update spirv-reflect header file

commit 1b3080d1c07bcdaaa683d8a68926527dc51b2ccf
Author: Panos Apostolou <[email protected]>
Date:   Thu Jan 18 09:44:59 2024 +0200

    Moved jsoncpp lib to appropriate folders

    Moved jsoncpp under the appropriate external/precompiled directories
    Added pre-compiled binaries for linux 32bit, android 32 and android 64

commit 5d6c22aea369fab990ee84c5365f180d32a7bd89
Author: David Pinedo <[email protected]>
Date:   Wed Jan 17 12:59:23 2024 -0700

    Command line interface: reworked args including adding json file arg

commit df2099076b71dd3e5bebc8784eaeb4a2b5a5ef9f
Author: Panos Apostolou <[email protected]>
Date:   Thu Dec 7 08:18:13 2023 +0200

    Dump resoruces initial commit

    Dump resources starts tracking descriptors

    This should be the logic for dumping vkCmdTraceRaysKHR

    Moved indices in replay options

    This should be passed as command line options

    Doing some primitive resource tracking

    Separate color from depth attachments

    Dumping depth attachment

    Dumping compute resources seems to work

    Dumping storage buffers to binary files

    Each pipeline has its own descriptors

    Perhaps draw calls can be isolated

    Basic logic for dumping multiple DCs

    Works for vkCube

    Convert DIS and TR indices into vectors like for DCs

    Rename member variable names to align with project's coding style

    Log errors for error codes from Vulkan calls

    Switch to unordered_maps

    Back up mutable resources

    Handle multiple render passes

    Handle subpasses

    Support the rest of the vkCmdDraw* api entries

    Fixed Android build

    Better handle of subpasses

    Render area should be per render pass, not per sub pass

    DumpAttachments function belongs better to CommandBufferStack

    Timming submission and dumping times

    Total submssion times (total time to submit and wait each command
    buffer) and total dumping times (total time it takes to extract render
    targets and dump them in a file) are printed

    Mulitple subpasses broke multiple render passes

    Now both cases and combination of them should work

    Handling VK_FORMAT_X8_D24

    More fixes for render pass handling

    Support mulitple BeginCommandBuffer

    Use FindCommandBufferStack instead of searching manually

    Update vkCmd[Begin|End]RenderPass2 and vkCmdNextSubpass2

    Deleted commented out code

    Image layout of render target images is handled by the render passe
    clones

    Dumping render targets right before draw calls is now possible

    Add --dump-resources command line option for Vulkun

    CLI params now correctly passed to VulkanReplayResourceDump class

    Draw calls from command line are now stored in vector of vectors

    Fixes to last merge

    Add --dump-resources-before-draw option

    Merged DavidP's changes

    Dumping before draw calls broke dumping after draw calls

    Small fix for cmdNextSubpass

    Fix compile error when D3D12 not enabled. Cmd line args work now.

    Keep hardcoded index values in vulkan_replay_options.h

    Keep the hardcoded indices until we have a way to provide these values
    from a file via a command line option

    Perform shader reflection using SPIRV-Reflect

    Removed some stale variables

    Remove SPIRV-Reflect submodule and include precompiled binaries

    VulkanReplayResourceDump can now handle empty vectors

    Minor clean up for render targets

    Track bound pipeline

    VulkanResourcesUtil can skip image transition

    If image is already in the TRANSFER_SOURCE_OPTIMAL layout then the
    pipeline barrier can be omitted

    More fixes for render passes in dump resources

    - Inject appropriate external renderpass dependencies.
    - The image layout reported to VulkanResourcesUtil class was wrong
    resulting in image corruption.
    - VK_IMAGE_USAGE_TRANSFER_SRC_BIT is injected in all images when dump
    resources is enabled

    Two new formats for image writter

    Added support for VK_FORMAT_B10G11R11_UFLOAT_PACK32 and
    VK_FORMAT_A2B10G10R10_UNORM_PACK32 in image writer class

    Add spirv_refect precompiled static lib

    Added some error checking logic in image writer

    Delete existing dump files on Android

    On Android there is an issue with files which are manually deleted (for
    example from adb shell) then fopen with "wb" might fail with the error
    that the file already exists. Deleting the file from code can workaround
    this.

    Code generation for dump resources

commit 329c7f77515e4a04a6f872d4db442a96160b0978
Author: David Pinedo <[email protected]>
Date:   Thu Oct 26 11:48:05 2023 -0600

    Command list resource tracking - first pass

    Insert missing newline in generated file generated_vulkan_replay_consumer.cpp

    Add debug code, will wanto back out most of this change

    More changes.

    Define cb save struct. Save cur cb in struct. Compiles.

    Param buffer is passed to replay funcs in call_info

    Can capture a cmd buf as raw data from capture file

    Replay of saved cmd buffer works.

    Includes test code embedded in endcommandbuffer. Need to fix it all up.

    Also, added a global var, will need to address this.

    g_decoder is no more, decoder added to ApiCallInfo.

    TESTCODE is autogened

    Fixes to handle nesting of begincmdbuf/endcmdbuf. Remove some unneeded vars.

commit 976d4971710db75dcf3c2fc048a26ad6ef901568
Author: Locke Lin <[email protected]>
Date:   Wed May 15 21:41:15 2024 -0600

    dx12 dump refactor

    Move all dump code from Dx12ReplayConsumerBase
    to Dx12DumpResources.

    In Dx12ReplayConsumerBase and Dx12ReplayConsumer,
    if it needs to do dump resources tasks, it becomes

    if (options_.enable_dump_resources)
    {
        GFXRECON_ASSERT(dump_resources_);
        dump_resources_->...(...);
    }

    or

    if(options_.enable_dump_resources)
    {
       GFXRECON_ASSERT(dump_resources_);
       auto dump_command_sets = dump_resources_->GetCommandListsForDumpResources(...);
       for (auto& command_set : dump_command_sets)
       {
           command_set.list->...();
       }
    }

commit c565cd4e6af2542e5610c6a0c418cb012393da99
Author: Brad Grantham <[email protected]>
Date:   Thu Jun 6 10:23:38 2024 -0700

    count is greatest + 1

commit 31f7061caa74e7b8421d273570fe970192411644
Author: Panagiotis Apostolou <[email protected]>
Date:   Fri May 31 16:01:53 2024 +0300

    Try to detect p…
  • Loading branch information
bartosz-muszarski-arm committed Aug 22, 2024
1 parent 2bcbcfa commit a1adc19
Show file tree
Hide file tree
Showing 229 changed files with 81,280 additions and 30,392 deletions.
57 changes: 56 additions & 1 deletion .github/workflows/release_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,53 @@ jobs:
name: ${{ matrix.config.artifact }}
path: .\gfxreconstruct-dev

macOS:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- {
name: "macOS Release",
os: macos-latest,
artifact: "gfxreconstruct-macos-release",
type: "release",
build_dir: "build"
}
steps:
- name: Clone repository
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Cache dependencies
id: cache-deps
uses: actions/cache@v3
with:
path: ~/deps
key: ${{ matrix.config.os }} deps ${{ hashFiles('.github/workflows/scripts/build-dependencies-macos.sh') }}
- name: Build dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
run: .github/workflows/scripts/build-dependencies-macos.sh
- name: Run build script
run: |
python3 scripts/build.py --skip-check-code-style --skip-tests --config ${{ matrix.config.type }} --cmake-extra "CMAKE_PREFIX_PATH=$HOME/deps" --cmake-extra CMAKE_OSX_DEPLOYMENT_TARGET=11.0 --parallel 0
- name: Prepare artifacts
run: |
cp LICENSE.txt ${{ matrix.config.build_dir }}/darwin/universal/output/bin/
cp LICENSE_ThirdParty.txt ${{ matrix.config.build_dir }}/darwin/universal/output/bin/
cp USAGE_desktop_Vulkan.md ${{ matrix.config.build_dir }}/darwin/universal/output/bin/
cp layer/vk_layer_settings.txt ${{ matrix.config.build_dir }}/darwin/universal/output/bin/
mv ${{ matrix.config.build_dir }}/darwin/universal/output/bin gfxreconstruct-dev
mv ${{ matrix.config.build_dir }}/darwin/universal/output/lib*/*.dylib gfxreconstruct-dev/
mv ${{ matrix.config.build_dir }}/darwin/universal/output/share/vulkan/explicit_layer.d/*.json gfxreconstruct-dev/
- name: Upload artifacts
uses: actions/upload-artifact@v1
with:
name: ${{ matrix.config.artifact }}
path: ./gfxreconstruct-dev

android:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
Expand Down Expand Up @@ -147,7 +194,7 @@ jobs:
release:
name: Create Release for Tag
runs-on: ubuntu-latest
needs: [ linux, windows, android ]
needs: [ linux, windows, android, macOS ]
steps:
- name: Clone repository
uses: actions/checkout@v4
Expand Down Expand Up @@ -208,6 +255,14 @@ jobs:
suffix: "windows-msvc.zip",
type: "application/zip"
}
- {
name: "Upload MacOS Release Artifact",
os: ubuntu-latest,
artifact: "gfxreconstruct-macos-release",
command: "tar czf",
suffix: "macos.tar.gz",
type: "application/x-gtar"
}
- {
name: "Upload Android Release Artifact",
os: ubuntu-latest,
Expand Down
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
[submodule "external/Vulkan-Headers"]
path = external/Vulkan-Headers
url = https://github.com/KhronosGroup/Vulkan-Headers.git
[submodule "external/SPIRV-Headers"]
path = external/SPIRV-Headers
url = https://github.com/KhronosGroup/SPIRV-Headers.git
[submodule "external/SPIRV-Reflect"]
path = external/SPIRV-Reflect
url = https://github.com/KhronosGroup/SPIRV-Reflect.git
29 changes: 28 additions & 1 deletion BUILD.md
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ Building on MacOS requires the installation of the following packages:
- install e.g. via https://brew.sh/

### MacOS Build
The approach is identical to a linux-build with one addition.
The approach is identical to a linux-build with few additions.

#### Explicit CPU-Architecture
Building for specific cpu-architectures can be accomplished by using the cmake-variable `CMAKE_OSX_ARCHITECTURES`
Expand All @@ -365,6 +365,33 @@ cd build
make -j4
```

#### Code signing
Capturing applications that are code-signed will require `libVkLayer_gfxreconstruct.dylib` to be code-signed as well.

If a signed application tries to load an unsigned layer, an error-message will be issued by the OS:
```
ERROR: dlopen(/path/to/libVkLayer_gfxreconstruct.dylib, 0x0005): ...
'libVkLayer_gfxreconstruct.dylib' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs)
```

In this case the layer can be signed using the same certificate, allowing it to be loaded at runtime.
This can be achieved with either XCode or via command-line using `Apple's codesign utility`.

Example usage of Apple's codesign commandline utility:
```bash
# unlock keychain
security unlock-keychain

# invoke Apple's codesign-utility
codesign --force --timestamp --sign "Your Apple Developer Team ID" -v libVkLayer_gfxreconstruct.dylib

# optionally print/verify resulting information
codesign -dvvv libVkLayer_gfxreconstruct.dylib`
```

Apple's developer information about code-signing can be found here:
https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html
## Building for Android
### Android Development Requirements
Expand Down
16 changes: 16 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ if(MSVC)
"set D3D12_SUPPORT=OFF or configure the build with the recommended Windows SDK version. See BUILD.md "
"for more information.")
endif()

else()
set(BUILD_LAUNCHER_AND_INTERCEPTOR OFF)
endif()
Expand Down Expand Up @@ -212,6 +213,7 @@ if(MSVC)
endif() # GFXRECON_AGS_SUPPORT
endif() # D3D12_SUPPORT


else(MSVC)
# Turn off D3D12 support for non MSVC builds.
set(D3D12_SUPPORT OFF)
Expand Down Expand Up @@ -252,6 +254,10 @@ endif()# NOT LZ4_FOUND

find_package(ZSTD)

if(MSVC)
find_package(jsoncpp)
endif() # MSVC

if(UNIX AND NOT APPLE)
option(BUILD_WSI_XCB_SUPPORT "Build XCB WSI support" ON)
option(BUILD_WSI_WAYLAND_SUPPORT "Build Wayland WSI support" ON)
Expand Down Expand Up @@ -328,13 +334,23 @@ add_library(vulkan_registry INTERFACE)
target_include_directories(vulkan_registry INTERFACE ${CMAKE_SOURCE_DIR}/external/Vulkan-Headers/include)
target_compile_definitions(vulkan_registry INTERFACE VK_NO_PROTOTYPES VK_ENABLE_BETA_EXTENSIONS)

add_library(spirv_registry INTERFACE)
target_include_directories(spirv_registry INTERFACE ${CMAKE_SOURCE_DIR}/external/SPIRV-Headers/include)

add_library(vulkan_memory_allocator INTERFACE)
target_compile_options(vulkan_memory_allocator INTERFACE
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:
-Wno-nullability-completeness>
)
target_include_directories(vulkan_memory_allocator INTERFACE ${CMAKE_SOURCE_DIR}/external/VulkanMemoryAllocator/include)

# SPIRV-Reflect included as submodule -> libspirv-reflect-static.a
set(SPIRV_REFLECT_EXAMPLES OFF)
set(SPIRV_REFLECT_EXECUTABLE OFF)
set(SPIRV_REFLECT_STATIC_LIB ON)
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
add_subdirectory(external/SPIRV-Reflect EXCLUDE_FROM_ALL)

if (${RUN_TESTS})
add_library(catch2 INTERFACE)
target_include_directories(catch2 INTERFACE external)
Expand Down
103 changes: 101 additions & 2 deletions USAGE_android.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,45 @@ to one of these other documents:
5. [Key Controls](#key-controls)
6. [Limitations of Replay On Android](#limitations-of-replay-on-android)
7. [Troubleshooting Replay of Applications](#troubleshooting-replay-of-applications)
8. [Dumping resources](#dumping-resources)
3. [Android Detailed Examples](#android-detailed-examples)


## Behavior on Android

The purpose of this section is to describe some of the software changes made to
the GFXReconstruct software to add Android support.
This section will not provide a comprehensive list of changes, but will instead
highlight some of the primary adjustments required to adapt the GFXReconstruct
software to the Android ecosystem.

### Android Writable Locations

The contents of the traces should be written to external storage on the
Android device.
The final "external storage" result varies based on Android version but some
locations that can be tried are:

- `/sdcard/Download`
- `/storage/emulated/0/Download`
- `/sdcard/Android/data/${Application Full Name}`
- `/sdcard`
- `/mnt/shell/emulated/0`

Where `${Application Full Name}` is the full name of the application, such
as `com.khronos.vulkand_samples`.

Some devices won't allow access to those folders for certain applications.
In those cases, the following folders can be used, but will require `adb` root
access to retrieve the files:

- `/data/data/${Application Full Name}/`
- `/data/user/0/${Application Full Name}/`

**NOTE:** These directories may not be visible to other applications (including
gfxrecon-replay, adb pull), so any capture files will need to be copied to a
readable location with adb shell before they can be replayed.

## Capturing API Calls

The GFXReconstruct capture layer is a Vulkan layer that intercepts Vulkan API
Expand Down Expand Up @@ -226,7 +263,7 @@ Together, the last 4 commands look like the following:
adb shell settings put global enable_gpu_debug_layers 1
adb shell settings put global gpu_debug_app ${Package Name}
adb shell settings put global gpu_debug_layers VK_LAYER_LUNARG_gfxreconstruct
adb shell settings put global gpu_debug_layers_app com.lunarg.gfxreconstruct.replay
adb shell settings put global gpu_debug_layer_app com.lunarg.gfxreconstruct.replay
```

If you attempt to capture and nothing is happening, check the `logcat` output.
Expand Down Expand Up @@ -660,7 +697,18 @@ usage: gfxrecon.py replay [-h] [--push-file LOCAL_FILE] [--version] [--pause-fra
[--flush-measurement-range] [-m MODE]
[--swapchain MODE] [--use-captured-swapchain-indices]
[--use-colorspace-fallback] [--wait-before-present]
[file]
[--dump-resources <arg>]
[--dump-resources <filename>]
[--dump-resources <filename>.json]
[--dump-resources-before-draw] [--dump-resources-scale <scale>]
[--dump-resources-dir <dir>]
[--dump-resources-image-format <format>]
[--dump-resources-dump-depth-attachment]
[--dump-resources-dump-color-attachment-index <index>]
[--dump-resources-dump-vertex-index-buffers]
[--dump-resources-json-output-per-command]
[--dump-resources-dump-immutable-resources]
[--dump-resources-dump-all-image-subresources] [file]
Launch the replay tool.
Expand Down Expand Up @@ -803,6 +851,54 @@ optional arguments:
Force wait on completion of queue operations for all queues
before calling Present. This is needed for accurate acquisition
of instrumentation data on some platforms.
--dump-resources <arg>
<arg> is BeginCommandBuffer=<n>,Draw=<m>,BeginRenderPass=<o>,
NextSubpass=<p>,Dispatch=<q>,CmdTraceRays=<r>,QueueSubmit=<s>
GPU resources are dumped after the given vkCmdDraw*,
vkCmdDispatch, or vkCmdTraceRaysKHR is replayed.
Dump gpu resources after the given vmCmdDraw*, vkCmdDispatch, or
vkCmdTraceRaysKHR is replayed. The parameter for each is a block
index from the capture file. The additional parameters are used
to identify during which occurence of the vkCmdDraw/VkCmdDispath/
VkCmdTrancRaysKHR resources will be dumped. NextSubPass can be
repeated 0 or more times to indicate subpasses withing a render
pass. Note that the minimal set of parameters must be one of:
BeginCmdBuffer, Draw, BeginRenderPass, EndRenderPass, and QueueSubmit
BeginCmdBuffer, Dispatch and QueueSubmit
BeginCmdBuffer, TraceRays and QueueSubmit
--dump-resources <filename>
Extract --dump-resources args from the specified file, with each line in the file containing a comma or space separated
list of the parameters to --dump-resources. The file can contain multiple lines specifying multiple dumps.
--dump-resources <filename>.json
Extract --dump-resource args from the specified json file. The format for the json file is documented in detail
in the gfxreconstruct documentation.
--dump-resources-image-format <format>
Image file format to use for image resource dumping.
Available formats are:
bmp Bitmap file format. This is the default format.
png Png file format.
--dump-resources-before-draw
In addition to dumping gpu resources after the CmdDraw, CmdDispatch and CmdTraceRays calls specified by the
--dump-resources argument, also dump resources before those calls.
--dump-resources-scale <scale>
Scale images generated by dump resources by the given scale factor. The scale factor must be a floating point number
greater than 0. Values greater than 10 are capped at 10. Default value is 1.0.
--dump-resources-dir <dir>
Directory to write dump resources output files. Default is the current working directory.
--dump-resources-dump-depth-attachment
Configures whether to dump the depth attachment when dumping draw calls. Default is disabled.
--dump-resources-dump-color-attachment-index <index>
Specify which color attachment to dump when dumping draw calls. It should be an unsigned zero
based integer. Default is to dump all color attachment
--dump-resources-dump-vertex-index-buffers
Enables dumping of vertex and index buffers while dumping draw call resources.
--dump-resources-json-output-per-command
Enables storing a json output file for each dumped command. Overrides default behavior which
is generating one output json file that contains the information for all dumped commands.
--dump-resources-dump-immutable-resources
Enables dumping of resources that are used as inputs in the commands requested for dumping
--dump-resources-dump-all-image-subresources
Enables dumping of all image sub resources (mip map levels and array layers)
```

The command will force-stop an active replay process before starting the replay
Expand Down Expand Up @@ -944,6 +1040,9 @@ If the user wants to bypass the feature and use the captured indices to present
directly on the swapchain of the replay implementation, they should add the
`--use-captured-swapchain-indices` option when invoking `gfxrecon-replay`.

#### Dumping resources

GFXReconstruct offers the capability to dump resources when replaying a capture file. Detailed documentation of that feature can be found in [vulkan_dump_resources.md](./vulkan_dump_resources.md)

## Android Detailed Examples

Expand Down
10 changes: 10 additions & 0 deletions USAGE_desktop_D3D12.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,8 @@ Usage:
[--fwo <x,y> | --force-windowed-origin <x,y>]
[--log-level <level>] [--log-file <file>] [--log-debugview]
[--batching-memory-usage <pct>]
[--dump-resources <submit-index,command-index,drawcall-index>] <file>
[--pbi-all] [--pbis <index1,index2>]
Required arguments:
<file> Path to the capture file to replay.
Expand Down Expand Up @@ -269,6 +271,8 @@ Optional arguments:
returned by vkEnumeratePhysicalDevices or IDXGIFactory1::EnumAdapters1.
Replay may fail if the specified device is not compatible with the
original capture devices.
--pbi-all Print all block information.
--pbis <index1,index2>Print block information between block index1 and block index2.
Windows-only:
--fwo <x,y> Force windowed mode if not already, and allow setting of a custom window location.
Expand Down Expand Up @@ -334,6 +338,12 @@ D3D12-only:
for batching and does not guarantee overall max memory usage.
Acceptable values range from 0 to 100 (default: 80). 0 means no batching,
100 means use all available system and GPU memory.
--dump-resources <submit-index,command-index,drawcall-index>
Output binaray resources for a specific drawcall.
Include vertex, index, const buffer, shader resource, render target,
and depth stencil. And for before and after drawcall.
Arguments becomes three indices, submit index, command index,
drawcall index. The command index is based on its in ExecuteCommandLists.
```


Expand Down
Loading

0 comments on commit a1adc19

Please sign in to comment.