| Age | Commit message (Collapse) | Author |
|
|
|
The new init mechanism always uses GetInstanceProcAddr
to query the next layer's CreateInstance or CreateDevice
function. Thus no reason to cache those function pointers
in the instance dispatch table.
|
|
Appears there is some difference in behavior between
vkCreateDevice addr that we get initially vs. one
later. Not sure what difference is yet.
-------------------------------
|
|
|
|
New layer init method requires the construction of
Link information for CreateInstance and CreateDevice
that is accessible to layers via the CreateInfo.pNext pointer.
The layer can then use the Get*ProcAddr from the Link
structure to initialize their dispatch table if the
call down the chain returns successfully.
This removes the need to do special initialization work
at Get*ProcAddr time.
Layer Get*ProcAddr now return their internal function
pointers regardless of the value of instance or device.
Only need to have valid instance & device when looking
up extensions or when passing the request down the chain.
This mechanism allows us to remove object wrapping used
by the loader previously. Also simplifies the dispatch table
setup.
Conflicts:
layers/device_limits.cpp
layers/draw_state.cpp
loader/loader.c
loader/trampoline.c
|
|
The threading layer was using the generic destroy_instance
utility when it should be using the utility that takes
a map.
|
|
These utilities will find the appropriate CreateInfo
extension that defines the layer link information.
|
|
|
|
These structures will be used to extend CreateInstance
and CreateDevice to support layers. The loader will
create a chain of these structures - one per layer -
that tells the layer the Get*ProcAddr for the next
lower part.
|
|
|
|
|
|
Remove memset of PIPELINE_NODE from Compute Pipeline creation.
Default constructor handles initialization so no need to memset and this was
causing a crash due to corrupting the active_sets std::set.
|
|
Move pCmds vector<CMD_NODE*> to be cmds vector<CMD_NODE> instead. This simplifies
cleanup of the data structure as we don't have to manage the ptr new/delete lifecycle.
|
|
|
|
|
|
When FreeCommandBuffers was called the helper routine was not
properly removing the command buffer tracking data.
|
|
Embedded InheritanceInfo struct within command buffer BeginInfo was not correctly
mirrored in draw_state. Correctly copy this data as appropriate and correctly
clear it when command buffer is reset.
Conflicts:
layers/draw_state.cpp
|
|
|
|
On vkBeginCommandBuffer an implicit reset occurred late and would overwrite the
beginInfo. Moved implicit reset earlier so that beginInfo is maintained
regardless of whether or not implicit reset is triggered.
Also removed some dead code from resetCB().
|
|
Other uses of pUserData in Vulkan do not have a const qualifier,
remove it for this pUserData.
|
|
When vkUpdateDescriptorSets() is called, if an imageView was being updated, we
were not including swapchain images in the check to verify a valid image.
Adding these to the check to avoid false positives.
|
|
vkUpdateDescriptorSets->VkWriteDescriptorSet: object_tracker should only validate
array specified by VkDescriptorType.
|
|
- Set the layerCount member of VkImageSubresourceLayers
- Add image transition memory barriers (needed for some drivers)
- Add dispatch table to command buffer object created by this layer.
This lets it get dispatched by a downstream layer, if present.
|
|
|
|
|
|
|
|
|
|
|
|
Fix's issue with layers that wrap instance.
|
|
Apply David's fix to force the registry to be created.
|
|
|
|
|
|
There's definitely still room for improvement here (SPIRV-Tools might have some stuff that will make some of these more complex module walks a little clearer); however, this adds enough support for interface blocks for us to generate all the same kinds of mismatch errors we were previously generating for loose inputs and outputs.
Signed-off-by: Chris Forbes <chrisforbes@google.com>
|
|
This wasn't quite correct. We'd end up trying to run it_a off beyond attribs.end(),
which is invalid and upsets the MS debug stdlib. This is most likely the root cause
of the weirdness that caused people to add _at_end, _first, etc to this function long ago,
so that can all disappear -- but for now, let's just deal with the actual bug.
Signed-off-by: Chris Forbes <chrisforbes@google.com>
|
|
Previously this was just left uninitialized. Image layer would then randomly fail image creation based on comparisons against junk.
Signed-off-by: Chris Forbes <chrisforbes@google.com>
|
|
Again not OK to claim success but return junk rather than a proper handle. Fixes various layers exploding when running against nulldrv.
Signed-off-by: Chris Forbes <chrisforbes@google.com>
|
|
It's not really OK to claim success but leave junk in the caller's memory rather than a real handle. This prevents object tracker randomly exploding when running against the null driver.
Signed-off-by: Chris Forbes <chrisforbes@google.com>
|
|
Previously if an app would be unable to find any color renderable format, so only
an app that didn't bother (and wasn't running under validation) would get anywhere.
Signed-off-by: Chris Forbes <chrisforbes@google.com>
|
|
Signed-off-by: Chris Forbes <chrisforbes@google.com>
|
|
Previously we just left whatever junk the caller had in this memory, which generally crashed a caller.
Signed-off-by: Chris Forbes <chrisforbes@google.com>
|
|
Previously this just left whatever junk the caller had, with unpredictable results.
Signed-off-by: Chris Forbes <chrisforbes@google.com>
|
|
Previously apps would randomly succeed or fail to find a matching memory type based on whatever junk happened to be here. Instead, claim to support all memory types.
Signed-off-by: Chris Forbes <chrisforbes@google.com>
|
|
|
|
|
|
Gitlab #58
CreateInstance shouldn't update output parameter on failure.
|
|
From 0.210.0
|
|
|
|
|
|
mem_tracker:initializeAndTrackMemory
VK_WHOLE_SIZE is ~0ull. If this were passed as `size`, we'd try to allocate ~1ull
bytes, and then memset them all to 0xb. This tends to explode.
|
|
For apps that run with multiple instances, it's perfectly valid to have instances
remaining at DestroyInstace() time so removing that assert from param_checker.
Also, the assert appears to have been cut-and-pasted into DestroyDevice of both
param_checker and object_tracker. The same logic applies for apps that use
multiple devices. Running vulkancts with layers enabled found these issues.
|