Fixes validation error related to dependencies:
VUID-vkCmdDraw-renderPass-02684] Validation Error: [ VUID-vkCmdDraw-renderPass-02684 ] Object 0: handle = 0x61ee4f000000021b, type = VK_OBJECT_TYPE_RENDER_PASS; Object 1: handle = 0x1c2336000000021a, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x50685725 | vkCmdDraw: RenderPasses incompatible between active render pass w/ VkRenderPass 0x61ee4f000000021b[] with a dependencyCount of 0 and pipeline state object w/ VkRenderPass 0x1c2336000000021a[] with a dependencyCount of 2. The Vulkan spec states: The current render pass must be compatible with the renderPass member of the VkGraphicsPipelineCreateInfo structure specified when creating the VkPipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS (https://vulkan.lunarg.com/doc/view/1.3.261.1/windows/1.3-extensions/vkspec.html#VUID-vkCmdDraw-renderPass-02684)
The implementation usage of m_BufferAddresses assumes the container is sorted and requires the use of lower_bound() API
Added rdcsortedflatmap subclass of rdcflatmap
Only expose upper_bound(), lower_bound() APIs in rdcsortedflatmap
The upper/lower bound APIs require a sorted container
* We handle support for trivially supported exts like KHR_index_type_uint8 and
KHR_calibrated_timestamps as it would be more churn and work to temporarily
make them unsupported, given how they are almost entirely just aliased.
* Cache indirect parameters pre-callback so they can be used for replay.
* Move ReplayDraw implementation to device so it can be re-used.
* Non-callback support left as a TODO + Assert.
* For capture resources, use the actual resource state at the time of
the event rather than a hardcoded state.
* When hardcoded RT source state was used, on UAV events attempting to
transition a texture which was not created with the RTV flag from that
state caused a device removal.
* Includes a fix provided by Jake to ApplyBarriers that caused an
incorrect state to be returned in this usage.
The state tracking will not be complete during loading and can cause a crash trying to rebind the current pipeline after filling the image with the discard pattern
Do not use the "VkGraphicsPipelineCreateInfo" because this does not include the dynamic state.
Fixes Mesh Output being incorrect when dynamic state for vertex input is used.
D3D12 ERROR: ID3D12CommandList::CopyTextureRegion: D3D12_SUBRESOURCE_FOOTPRINT::RowPitch must be a multiple of 256 (aka. D3D12_TEXTURE_DATA_PITCH_ALIGNMENT) and greater or equal to the pitch implied by the width.[ RESOURCE_MANIPULATION ERROR #855: COPYTEXTUREREGION_INVALIDDSTROWPITCH]
Only increase the number of bytes to read when crossing an execute boundary and doing a partial execute.
Fixes out of bounds access on the source argument buffer when going from a complete execute to the next complete execute i.e. selecting the draw actions in sequence in the Event Browser
The argument buffers are used fully used with no spare bytes
The python test iterates over every draw to check the replay has a valid output target count
This verifies the replay did not crash when replaying ExecuteIndirect with multiple draws and an argument buffer with no spare bytes
Add "-Wno-deprecated-declarations"
util/test/demos/3rdparty/fmt/core.h:378:30: error: 'char_traits<fmt::internal::char8_type>' is deprecated: char_traits<T> for T not equal to char, wchar_t, char8_t, char16_t or char32_t is non-standard and is provided for a temporary period. It will be removed in LLVM 18, so please migrate off of it. [-Werror,-Wdeprecated-declarations]
: data_(s), size_(std::char_traits<Char>::length(s)) {}
^
util/test/demos/3rdparty/fmt/format.h:580:9: note: in instantiation of member function 'fmt::basic_string_view<fmt::internal::char8_type>::basic_string_view' requested here
: basic_string_view<internal::char8_type>(
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__string/char_traits.h:79:8: note: 'char_traits<fmt::internal::char8_type>' has been explicitly marked deprecated here
struct _LIBCPP_DEPRECATED_("char_traits<T> for T not equal to char, wchar_t, char8_t, char16_t or char32_t is non-standard and is provided for a temporary period. It will be removed in LLVM 18, so please migrate off of it.")
* This seems to crash if no pipeline is bound when SetViewInstanceMask() is
called. We can't make this completely conditional and still be legal, but at
least we can avoid triggering it if view instancing isn't being used anyway.