`WrappedVulkan::vkCreateInstance` sets instance extension support based
on whether:
- Extension is enabled
- Instance version >= core version in which ext is promoted
- etc
However, the code that looped through the extensions was inside a loop
over the enabled extensions. If there are no enabled extensions, this
led to extensions promoted to core never being inspected.
The code is split such that enabled extensions are checked within a
loop, and promoted extensions are separately checked.
* Don't process DebugValue that we encounter in scopes other than those where
the variable it's declaring is supposed to be visible. Instead put these in a
queue and process them if that scope is later reached.
* During capture we don't insert references as we're recording descriptor binds,
just once at queue submit time, as an optimisation. However this loses
ordering relative to more direct references. Since descriptor binds are more
conservative (either read, or read before write) we ensure to insert them
first before any direct references like copies or fills which could mark the
resource as completely written before read.
* When searching for the start of a range of instructions mapped to a single
line when stepping backwards, we need to ignore instructions that don't have
any debug info because they will look like a 'different' smaller stack.
* If we have an OpAccessChain which only looks up a resource index and not
anything else, we need to ensure that both we don't consume the first index
next time, AND that we preserve the resource index for future access chains.
Serialize the presented texture (presentedImage) as part of "presentDrawable" serialization.
Use the present texture resource ID in the action name ie. "presentDrawable(Texture 23219)"
Track the most recently presented image and use that in SystemChunk::CaptureEnd if the PresentedImage serialized data is empty resource.
Track the CAMetalDrawable's created via the hooked CAMetalLayer::nextDrawable() method.
Implements TODO in WrappedMTLCommandBuffer::presentDrawable
"remove the (CA::MetalDrawable*) cast. Associate created texture and layer in hooked nextDrawable with MTL::Drawable*"
Deduplicating code between BeginRenderPassAndApplyState and
FinishSuspendedRenderPass. Fixes a bug where FinishSuspendedRenderPass
was using the depth attachment for stencil.
This change, along with changes in the GPA library, allows the user
to collect AMD counters from a Samsung Xclipse GPU. Previous to this,
the AMD counters could be collected only from GPUs with an AMD PCI
vendor ID.
Most of the changes are related to the fact that the Xclipse GPU has
a unique (Samsung) PCI vendor ID, but is ultimately an AMD
(RDNA2) derivative. So, we need the code to take the AMD path
while technically being its own (non-AMD) GPU.
bool WrappedMTLDevice::ProcessChunk(ReadSerialiser &ser, MetalChunk chunk)
SystemChunk::InitialContentsList is handled but not implemented
Added declarations for dummy objects used for serialization replay
WrappedMTLBuffer *m_DummyBuffer;
WrappedMTLCommandBuffer *m_DummyReplayCommandBuffer;
WrappedMTLCommandQueue *m_DummyReplayCommandQueue;
WrappedMTLLibrary *m_DummyReplayLibrary;
WrappedMTLRenderCommandEncoder *m_DummyReplayRenderCommandEncoder;
WrappedMTLBlitCommandEncoder *m_DummyReplayBlitCommandEncoder;
The dummy objects are not created in this commit.
This change exposes the
VkPipelineViewportDepthClipControlCreateInfoEXT::negativeOneToOne
pipeline state in the UI. While not a per-viewport state, this state is
output alongside viewport information.
If the extension is not used, or if this flag is false, [0, 1] is shown
as the depth clip range. If the flag is true, [-1, 1] is shown.