Skip to content

Commit caa8009

Browse files
committed
Vulkan: Guard access to pipeline DynamicState and push constants
1 parent 711f2a7 commit caa8009

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

gapis/api/vulkan/api/descriptor.api

+7-3
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,9 @@ vkCmdPushConstantsArgs {
868868
sub void dovkCmdPushConstants(ref!vkCmdPushConstantsArgs args) {
869869
_ = PipelineLayouts[args.Layout]
870870
pushConstants := lastPushConstants()
871-
write(pushConstants.Data[args.Offset:args.Offset+args.Size])
871+
if pushConstants != null {
872+
write(pushConstants.Data[args.Offset:args.Offset+args.Size])
873+
}
872874
}
873875

874876
@indirect("VkCommandBuffer", "VkDevice")
@@ -899,8 +901,10 @@ cmd void vkCmdPushConstants(
899901
sub void readPushConstants(VkPipelineBindPoint bindPoint) {
900902
layout := boundPipelineLayout(bindPoint)
901903
pushConstants := lastPushConstants()
902-
for _, _, r in layout.PushConstantRanges {
903-
read(pushConstants.Data[r.offset:r.offset+r.size])
904+
if pushConstants != null {
905+
for _, _, r in layout.PushConstantRanges {
906+
read(pushConstants.Data[r.offset:r.offset+r.size])
907+
}
904908
}
905909
}
906910

gapis/api/vulkan/api/draw_commands.api

+5-3
Original file line numberDiff line numberDiff line change
@@ -436,9 +436,11 @@ sub void readWriteMemoryInBoundComputeDescriptorSets() {
436436

437437
sub ref!DynamicStateSet unpackDynamicState(ref!DynamicData data) {
438438
obj := new!DynamicStateSet()
439-
for _, _, s in data.DynamicStates {
440-
if as!s32(s) < 9 {
441-
obj.contains[as!s32(s)] = true
439+
if data != null {
440+
for _, _, s in data.DynamicStates {
441+
if as!s32(s) < 9 {
442+
obj.contains[as!s32(s)] = true
443+
}
442444
}
443445
}
444446
return obj

0 commit comments

Comments
 (0)