From d08b53fd64d2e6228c591ddaeeec28887681b1d1 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Fri, 21 Aug 2026 12:15:02 +0100 Subject: [PATCH] In Vk_Resource_Usage Python compute EIDs and reduce hard coded EIDs --- util/test/tests/Vulkan/VK_Resource_Usage.py | 447 ++++++++------------ 1 file changed, 180 insertions(+), 267 deletions(-) diff --git a/util/test/tests/Vulkan/VK_Resource_Usage.py b/util/test/tests/Vulkan/VK_Resource_Usage.py index 848ca9a6e..7ea41eee9 100644 --- a/util/test/tests/Vulkan/VK_Resource_Usage.py +++ b/util/test/tests/Vulkan/VK_Resource_Usage.py @@ -18,6 +18,9 @@ class VK_Resource_Usage(rdtest.TestCase): if len(usages) != len(expectedUsages): for u in usages: rdtest.log.print(f"Resource '{res.name}' {res.resourceId} usage EID:{u.eventId} usage:{u.usage.name}") + for u in expectedUsages: + eid, usage = u + rdtest.log.print(f"Resource '{res.name}' {res.resourceId} usage EID:{eid} usage:{usage.name}") raise rdtest.TestFailureException(f"'{res.name}' {res.resourceId} Incorrect resource usages count expected:{len(expectedUsages)} actual:{len(usages)}") for i, u in enumerate(usages): eid, usage = expectedUsages[i] @@ -51,12 +54,114 @@ class VK_Resource_Usage(rdtest.TestCase): countDescBuffer += countDescBufferCopy countMeshShader = 33 if meshShader else 0 + # Walk the actions finding all the Dispatch, Draw, DrawIndexed, DrawIndirect, DrawIndirectCount + sdfile = self.controller.GetStructuredFile() + actions = self.controller.GetRootActions().copy() + + drawEIDs = [] + meshDispatchEIDs = [] + indexedEIDs = [] + indexedSpecialEIDs = [] + dispatchEIDs = [] + indirectEIDs = [] + multiEIDs = [] + indirectCountEIDs = [] + submitEIDs = [] + waitFencesEIDs = [] + resetFencesEIDs = [] + descSetDrawEIDs = [] + descBufferDrawEIDs = [] + + markerGraphicsDescriptorSet = 0 + markerGraphicsSecondaryCommandBuffer = 0 + markerIndirect = 0 + markerIndirectEnd = 0 + markerNestedSecondaryCommandBuffer = 0 + markerDescriptorBuffer = 0 + markerBarrierCommandSubmitFence = 0 + markerCompute = 0 + markerComputeDescriptorSet = 0 + + markerGraphicsSecondaryCommandBuffer = self.find_action("Secondary Command Buffer").eventId + if nestedSecondaries: + markerNestedSecondaryCommandBuffer = self.find_action("Nested Secondary Command Buffer").eventId + if descBuffer: + markerDescriptorBuffer = self.find_action("Descriptor Buffer").eventId + markerBarrierCommandSubmitFence = self.find_action("Barrier Command Submit Fence").eventId + + while len(actions) > 0: + action = actions.pop(0) + actions += action.children + flags = action.flags + if flags & rd.ActionFlags.Drawcall: + drawEIDs.append(action.eventId) + if flags & rd.ActionFlags.Indexed: + # Special case remove this from the indexed list + # vkCmdDrawIndexedIndirect(1) => <3, 1> + if action.customName.endswith("<3, 1>"): + indexedSpecialEIDs.append(action.eventId) + else: + indexedEIDs.append(action.eventId) + if flags & rd.ActionFlags.Dispatch: + dispatchEIDs.append(action.eventId) + if flags & rd.ActionFlags.Indirect: + indirectEIDs.append(action.eventId) + if "Count" in action.customName: + indirectCountEIDs.append(action.eventId) + if flags & rd.ActionFlags.MeshDispatch: + meshDispatchEIDs.append(action.eventId) + if flags & rd.ActionFlags.MultiAction: + multiEIDs.append(action.eventId) + if flags & rd.ActionFlags.PushMarker: + parentName = action.parent.customName if action.parent is not None else None + markerPath = parentName + "." + action.customName if parentName is not None else action.customName + if not markerGraphicsDescriptorSet and markerPath == "Graphics.Descriptor Set": + rdtest.log.print(f"{action.parent.customName} {action.parent.eventId} {action.customName} {action.eventId}") + markerGraphicsDescriptorSet = action.eventId + if not markerIndirect and markerPath == "Indirect": + markerIndirect = action.eventId + markerIndirectEnd = action.children[-1].eventId + if not markerCompute and markerPath == "Compute": + markerCompute = action.eventId + if not markerComputeDescriptorSet and markerPath == "Compute.Descriptor Set": + markerComputeDescriptorSet = action.eventId + for e in action.events: + eventName = sdfile.chunks[e.chunkIndex].name + if "vkQueueSubmit" in eventName: + submitEIDs.append(e.eventId) + if "vkWaitForFences" in eventName: + waitFencesEIDs.append(e.eventId) + if "vkResetFences" in eventName: + resetFencesEIDs.append(e.eventId) + + for eid in drawEIDs: + if eid > markerGraphicsDescriptorSet and eid < markerGraphicsSecondaryCommandBuffer: + descSetDrawEIDs.append(eid) + elif eid > markerIndirect and (not nestedSecondaries or eid < markerNestedSecondaryCommandBuffer): + descSetDrawEIDs.append(eid) + elif descBuffer and eid > markerDescriptorBuffer: + descBufferDrawEIDs.append(eid) + + drawEIDs.sort() + indexedEIDs.sort() + indexedSpecialEIDs.sort() + dispatchEIDs.sort() + indirectEIDs.sort() + meshDispatchEIDs.sort() + multiEIDs.sort() + indirectCountEIDs.sort() + submitEIDs.sort() + waitFencesEIDs.sort() + resetFencesEIDs.sort() + descSetDrawEIDs.sort() + descBufferDrawEIDs.sort() + action = self.find_action("Draw") self.controller.SetFrameEvent(action.eventId, False) swapImage = self.controller.GetPipelineState().GetOutputTargets()[0].resource with rdtest.log.auto_section("Checking Resource Usage"): - for res in self.controller.GetResources(): + for res in resources: expectedUsage = [] if res.type == rd.ResourceType.Device: expectedUsage = [(0,rd.ResourceUsage.Unused)] @@ -67,76 +172,17 @@ class VK_Resource_Usage(rdtest.TestCase): elif res.type == rd.ResourceType.SwapchainImage: # the swap chain image has usage, anything else does not if res.resourceId == swapImage: - expectedUsage = [(6,rd.ResourceUsage.Barrier), + expectedUsage = [ + (6,rd.ResourceUsage.Barrier), (6,rd.ResourceUsage.Discard), (7,rd.ResourceUsage.Clear), - (8,rd.ResourceUsage.Barrier), - (32,rd.ResourceUsage.ColorTarget), - (35,rd.ResourceUsage.ColorTarget), - (42,rd.ResourceUsage.ColorTarget), - (45,rd.ResourceUsage.ColorTarget), - (59,rd.ResourceUsage.ColorTarget), - (62,rd.ResourceUsage.ColorTarget), - (73,rd.ResourceUsage.ColorTarget), - (76,rd.ResourceUsage.ColorTarget), - (120,rd.ResourceUsage.ColorTarget), - (124,rd.ResourceUsage.ColorTarget), - (128,rd.ResourceUsage.ColorTarget), - (129,rd.ResourceUsage.ColorTarget), - (130,rd.ResourceUsage.ColorTarget), - (131,rd.ResourceUsage.ColorTarget), - (136,rd.ResourceUsage.ColorTarget), - (137,rd.ResourceUsage.ColorTarget), - (138,rd.ResourceUsage.ColorTarget), - (142,rd.ResourceUsage.ColorTarget), - (177,rd.ResourceUsage.ColorTarget), - (181,rd.ResourceUsage.ColorTarget), - (182,rd.ResourceUsage.ColorTarget), - (183,rd.ResourceUsage.ColorTarget), - (184,rd.ResourceUsage.ColorTarget), - (189,rd.ResourceUsage.ColorTarget), - (190,rd.ResourceUsage.ColorTarget), - (191,rd.ResourceUsage.ColorTarget), - (208,rd.ResourceUsage.ColorTarget), - (212,rd.ResourceUsage.ColorTarget), - (213,rd.ResourceUsage.ColorTarget), - (214,rd.ResourceUsage.ColorTarget), - (215,rd.ResourceUsage.ColorTarget), - (220,rd.ResourceUsage.ColorTarget), - (221,rd.ResourceUsage.ColorTarget), - (222,rd.ResourceUsage.ColorTarget), - (227,rd.ResourceUsage.ColorTarget)] - if drawIndirectCount: - expectedUsage += [ - (232,rd.ResourceUsage.ColorTarget), - (235,rd.ResourceUsage.ColorTarget), - (239,rd.ResourceUsage.ColorTarget), - (243,rd.ResourceUsage.ColorTarget), - (248,rd.ResourceUsage.ColorTarget), - (249,rd.ResourceUsage.ColorTarget), - (250,rd.ResourceUsage.ColorTarget), - (255,rd.ResourceUsage.ColorTarget), - (256,rd.ResourceUsage.ColorTarget)] - if nestedSecondaries: - expectedUsage += [ - (251+countDrawIndirectCount+countDescBufferCopy,rd.ResourceUsage.ColorTarget), - (254+countDrawIndirectCount+countDescBufferCopy,rd.ResourceUsage.ColorTarget)] - if descBuffer: - expectedUsage += [ - (256+countDrawIndirectCount+countNested,rd.ResourceUsage.ColorTarget), - (259+countDrawIndirectCount+countNested,rd.ResourceUsage.ColorTarget)] - if meshShader: - expectedUsage += [ - (241+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.ColorTarget), - (245+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.ColorTarget), - (246+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.ColorTarget), - (249+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.ColorTarget), - (252+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.ColorTarget), - (256+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.ColorTarget), - (260+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.ColorTarget), - (264+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.ColorTarget)] - - expectedUsage += [(235+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier)] + (8,rd.ResourceUsage.Barrier)] + for eid in drawEIDs: + expectedUsage.append((eid,rd.ResourceUsage.ColorTarget)) + for eid in meshDispatchEIDs: + expectedUsage.append((eid,rd.ResourceUsage.ColorTarget)) + expectedUsage += [ + (235+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier)] else: expectedUsage = [] elif res.type == rd.ResourceType.RenderPass: @@ -154,116 +200,38 @@ class VK_Resource_Usage(rdtest.TestCase): elif res.type == rd.ResourceType.PipelineState: expectedUsage = [(0,rd.ResourceUsage.Unused)] elif res.type == rd.ResourceType.Buffer: - if (res.name == "Vertex Buffer"): - expectedUsage = [(32,rd.ResourceUsage.VertexBuffer), - (35,rd.ResourceUsage.VertexBuffer), - (42,rd.ResourceUsage.VertexBuffer), - (45,rd.ResourceUsage.VertexBuffer), - (59,rd.ResourceUsage.VertexBuffer), - (62,rd.ResourceUsage.VertexBuffer), - (73,rd.ResourceUsage.VertexBuffer), - (76,rd.ResourceUsage.VertexBuffer), - (120,rd.ResourceUsage.VertexBuffer), - (124,rd.ResourceUsage.VertexBuffer), - (128,rd.ResourceUsage.VertexBuffer), - (129,rd.ResourceUsage.VertexBuffer), - (130,rd.ResourceUsage.VertexBuffer), - (131,rd.ResourceUsage.VertexBuffer), - (136,rd.ResourceUsage.VertexBuffer), - (137,rd.ResourceUsage.VertexBuffer), - (138,rd.ResourceUsage.VertexBuffer), - (142,rd.ResourceUsage.VertexBuffer), - (177,rd.ResourceUsage.VertexBuffer), - (181,rd.ResourceUsage.VertexBuffer), - (182,rd.ResourceUsage.VertexBuffer), - (183,rd.ResourceUsage.VertexBuffer), - (184,rd.ResourceUsage.VertexBuffer), - (189,rd.ResourceUsage.VertexBuffer), - (190,rd.ResourceUsage.VertexBuffer), - (191,rd.ResourceUsage.VertexBuffer), - (208,rd.ResourceUsage.VertexBuffer), - (212,rd.ResourceUsage.VertexBuffer), - (213,rd.ResourceUsage.VertexBuffer), - (214,rd.ResourceUsage.VertexBuffer), - (215,rd.ResourceUsage.VertexBuffer), - (220,rd.ResourceUsage.VertexBuffer), - (221,rd.ResourceUsage.VertexBuffer), - (222,rd.ResourceUsage.VertexBuffer), - (227,rd.ResourceUsage.VertexBuffer)] - if drawIndirectCount: - expectedUsage += [ - (232,rd.ResourceUsage.VertexBuffer), - (235,rd.ResourceUsage.VertexBuffer), - (239,rd.ResourceUsage.VertexBuffer), - (243,rd.ResourceUsage.VertexBuffer), - (248,rd.ResourceUsage.VertexBuffer), - (249,rd.ResourceUsage.VertexBuffer), - (250,rd.ResourceUsage.VertexBuffer), - (255,rd.ResourceUsage.VertexBuffer), - (256,rd.ResourceUsage.VertexBuffer)] - if nestedSecondaries: - expectedUsage += [ - (251+countDrawIndirectCount+countDescBufferCopy,rd.ResourceUsage.VertexBuffer), - (254+countDrawIndirectCount+countDescBufferCopy,rd.ResourceUsage.VertexBuffer)] - if descBuffer: - expectedUsage += [ - (256+countDrawIndirectCount+countNested,rd.ResourceUsage.VertexBuffer), - (259+countDrawIndirectCount+countNested,rd.ResourceUsage.VertexBuffer)] - if (res.name == "Index Buffer"): - expectedUsage = [(35,rd.ResourceUsage.IndexBuffer), - (45,rd.ResourceUsage.IndexBuffer), - (62,rd.ResourceUsage.IndexBuffer), - (76,rd.ResourceUsage.IndexBuffer), - (136,rd.ResourceUsage.IndexBuffer), - (137,rd.ResourceUsage.IndexBuffer), - (138,rd.ResourceUsage.IndexBuffer), - (142,rd.ResourceUsage.IndexBuffer), - (189,rd.ResourceUsage.IndexBuffer), - (190,rd.ResourceUsage.IndexBuffer), - (191,rd.ResourceUsage.IndexBuffer), - (220,rd.ResourceUsage.IndexBuffer), - (221,rd.ResourceUsage.IndexBuffer), - (222,rd.ResourceUsage.IndexBuffer)] - if drawIndirectCount: - expectedUsage += [ - (235,rd.ResourceUsage.IndexBuffer), - (243,rd.ResourceUsage.IndexBuffer), - (255,rd.ResourceUsage.IndexBuffer), - (256,rd.ResourceUsage.IndexBuffer)] - if nestedSecondaries: - expectedUsage += [ - (254+countDrawIndirectCount+countDescBufferCopy,rd.ResourceUsage.IndexBuffer)] - if descBuffer: - expectedUsage += [ - (259+countDrawIndirectCount+countNested,rd.ResourceUsage.IndexBuffer)] - if (res.name == "Compute Buffer In"): - expectedUsage += [(89,rd.ResourceUsage.CS_Constants), - (96,rd.ResourceUsage.CS_Constants)] - if nestedSecondaries: - expectedUsage += [(267+countDrawIndirectCount+countDescBufferCopy,rd.ResourceUsage.CS_Constants)] - if descBuffer: - expectedUsage += [(264+countDrawIndirectCount+countNested,rd.ResourceUsage.CS_Constants)] - if (res.name == "Compute Buffer Out"): - expectedUsage += [(89,rd.ResourceUsage.CS_RWResource), - (96,rd.ResourceUsage.CS_RWResource)] - if nestedSecondaries: - expectedUsage += [(267+countDrawIndirectCount+countDescBufferCopy,rd.ResourceUsage.CS_RWResource)] - if descBuffer: - expectedUsage += [(264+countDrawIndirectCount+countNested,rd.ResourceUsage.CS_RWResource)] - if (res.name == "Indirect Data"): + if res.name == "Vertex Buffer": + for eid in drawEIDs: + expectedUsage.append((eid,rd.ResourceUsage.VertexBuffer)) + if res.name == "Index Buffer": + for eid in indexedEIDs: + expectedUsage.append((eid,rd.ResourceUsage.IndexBuffer)) + if res.name == "Compute Buffer In": + # All dispatches within "Compute" region + # All dispatches within "Nested Secondary Command Buffer" region + for eid in dispatchEIDs: + if eid > markerComputeDescriptorSet and eid < markerIndirect: + expectedUsage.append((eid,rd.ResourceUsage.CS_Constants)) + elif nestedSecondaries and eid > markerNestedSecondaryCommandBuffer: + expectedUsage.append((eid,rd.ResourceUsage.CS_Constants)) + if res.name == "Compute Buffer Out": + # All dispatches within "Compute" region + # All dispatches within "Nested Secondary Command Buffer" region + for eid in dispatchEIDs: + if eid > markerComputeDescriptorSet and eid < markerIndirect: + expectedUsage.append((eid,rd.ResourceUsage.CS_RWResource)) + elif nestedSecondaries and eid > markerNestedSecondaryCommandBuffer: + expectedUsage.append((eid,rd.ResourceUsage.CS_RWResource)) + if res.name == "Indirect Data": expectedUsage += [(14,rd.ResourceUsage.Barrier), (15,rd.ResourceUsage.Clear), (16,rd.ResourceUsage.Barrier), (20,rd.ResourceUsage.CS_RWResource), (21,rd.ResourceUsage.Barrier), (97,rd.ResourceUsage.Barrier), - (108,rd.ResourceUsage.CS_RWResource), - (108,rd.ResourceUsage.Indirect), (109,rd.ResourceUsage.Barrier), (120,rd.ResourceUsage.Indirect), (124,rd.ResourceUsage.Indirect), - (127,rd.ResourceUsage.Indirect), - (135,rd.ResourceUsage.Indirect), (142,rd.ResourceUsage.Indirect), (144,rd.ResourceUsage.Barrier), (149,rd.ResourceUsage.Barrier), @@ -271,35 +239,13 @@ class VK_Resource_Usage(rdtest.TestCase): (151,rd.ResourceUsage.Barrier), (155,rd.ResourceUsage.CS_RWResource), (157,rd.ResourceUsage.Barrier), - (159,rd.ResourceUsage.CS_RWResource), - (159,rd.ResourceUsage.Indirect), - (160,rd.ResourceUsage.CS_RWResource), - (160,rd.ResourceUsage.Indirect), (161,rd.ResourceUsage.Barrier), - (162,rd.ResourceUsage.CS_RWResource), - (162,rd.ResourceUsage.Indirect), (163,rd.ResourceUsage.Barrier), (177,rd.ResourceUsage.Indirect), - (180,rd.ResourceUsage.Indirect), - (188,rd.ResourceUsage.Indirect), - (208,rd.ResourceUsage.Indirect), - (211,rd.ResourceUsage.Indirect), - (219,rd.ResourceUsage.Indirect), - (227,rd.ResourceUsage.IndexBuffer), - (227,rd.ResourceUsage.Indirect)] + (208,rd.ResourceUsage.Indirect)] if drawIndirectCount: expectedUsage += [ - (232,rd.ResourceUsage.Indirect), - (232,rd.ResourceUsage.Indirect), - (235,rd.ResourceUsage.Indirect), - (235,rd.ResourceUsage.Indirect), - (239,rd.ResourceUsage.Indirect), - (239,rd.ResourceUsage.Indirect), - (243,rd.ResourceUsage.Indirect), - (243,rd.ResourceUsage.Indirect), (247,rd.ResourceUsage.Indirect), - (247,rd.ResourceUsage.Indirect), - (254,rd.ResourceUsage.Indirect), (254,rd.ResourceUsage.Indirect)] expectedUsage += [(231+countDrawIndirectCount,rd.ResourceUsage.Barrier)] if nestedSecondaries: @@ -307,32 +253,38 @@ class VK_Resource_Usage(rdtest.TestCase): (268+countDrawIndirectCount+countDescBufferCopy,rd.ResourceUsage.Barrier)] if meshShader: expectedUsage += [ - (244+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.Indirect), (249+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.Indirect), (252+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.Indirect), - (255+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.Indirect), - (255+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.Indirect), - (260+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.Indirect), - (260+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.Indirect), - (264+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.Indirect), - (264+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.Indirect)] - if (res.name == "Barrier Buffer"): - expectedUsage = [(242+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), - (250+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), - (258+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), - (266+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), - (274+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), - (282+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), - (290+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), - (298+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), - (306+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), - (314+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier)] - if (res.name == "Barrier2 Buffer"): - expectedUsage = [(322+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), - (327+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), - (332+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), - (337+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier)] - if (res.name == "Descriptor Buffer"): + (255+countDrawIndirectCount+countNested+countDescBuffer,rd.ResourceUsage.Indirect)] + for eid in indirectEIDs: + # Dispatch + Indirect + if eid in dispatchEIDs: + expectedUsage.append((eid,rd.ResourceUsage.CS_RWResource)) + expectedUsage.append((eid,rd.ResourceUsage.Indirect)) + for eid in multiEIDs: + expectedUsage.append((eid,rd.ResourceUsage.Indirect)) + for eid in indirectCountEIDs: + expectedUsage.append((eid,rd.ResourceUsage.Indirect)) + for eid in indexedSpecialEIDs: + expectedUsage.append((eid,rd.ResourceUsage.IndexBuffer)) + expectedUsage.append((eid,rd.ResourceUsage.Indirect)) + if res.name == "Barrier Buffer": + expectedUsage = [(243+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), + (251+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), + (259+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), + (267+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), + (275+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), + (283+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), + (291+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), + (299+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), + (307+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), + (315+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier)] + if res.name == "Barrier2 Buffer": + expectedUsage = [(323+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), + (328+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), + (333+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier), + (338+countDrawIndirectCount+countNested+countDescBuffer+countMeshShader,rd.ResourceUsage.Barrier)] + if res.name == "Descriptor Buffer": if descBuffer: expectedUsage = [(235+countDrawIndirectCount,rd.ResourceUsage.Barrier), (236+countDrawIndirectCount,rd.ResourceUsage.CopySrc), @@ -340,65 +292,25 @@ class VK_Resource_Usage(rdtest.TestCase): (238+countDrawIndirectCount,rd.ResourceUsage.Clear), (241+countDrawIndirectCount,rd.ResourceUsage.Barrier), (242+countDrawIndirectCount,rd.ResourceUsage.CopyDst)] - if (res.name == "Descriptor Backup Buffer"): + if res.name == "Descriptor Backup Buffer": if descBuffer: expectedUsage = [(235+countDrawIndirectCount,rd.ResourceUsage.Barrier), (236+countDrawIndirectCount,rd.ResourceUsage.CopyDst), (241+countDrawIndirectCount,rd.ResourceUsage.Barrier), (242+countDrawIndirectCount,rd.ResourceUsage.CopySrc)] elif res.type == rd.ResourceType.Texture: - if (res.name == "Offscreen MSAA Image"): + if res.name == "Offscreen MSAA Image": expectedUsage = [(11,rd.ResourceUsage.Barrier), (11,rd.ResourceUsage.Discard), (12,rd.ResourceUsage.Clear)] - if (res.name == "Offscreen Image"): + if res.name == "Offscreen Image": expectedUsage = [(9,rd.ResourceUsage.Barrier), (9,rd.ResourceUsage.Discard), - (10,rd.ResourceUsage.Clear), - (42,rd.ResourceUsage.PS_Resource), - (45,rd.ResourceUsage.PS_Resource), - (120,rd.ResourceUsage.PS_Resource), - (124,rd.ResourceUsage.PS_Resource), - (128,rd.ResourceUsage.PS_Resource), - (129,rd.ResourceUsage.PS_Resource), - (130,rd.ResourceUsage.PS_Resource), - (131,rd.ResourceUsage.PS_Resource), - (136,rd.ResourceUsage.PS_Resource), - (137,rd.ResourceUsage.PS_Resource), - (138,rd.ResourceUsage.PS_Resource), - (142,rd.ResourceUsage.PS_Resource), - (177,rd.ResourceUsage.PS_Resource), - (181,rd.ResourceUsage.PS_Resource), - (182,rd.ResourceUsage.PS_Resource), - (183,rd.ResourceUsage.PS_Resource), - (184,rd.ResourceUsage.PS_Resource), - (189,rd.ResourceUsage.PS_Resource), - (190,rd.ResourceUsage.PS_Resource), - (191,rd.ResourceUsage.PS_Resource), - (208,rd.ResourceUsage.PS_Resource), - (212,rd.ResourceUsage.PS_Resource), - (213,rd.ResourceUsage.PS_Resource), - (214,rd.ResourceUsage.PS_Resource), - (215,rd.ResourceUsage.PS_Resource), - (220,rd.ResourceUsage.PS_Resource), - (221,rd.ResourceUsage.PS_Resource), - (222,rd.ResourceUsage.PS_Resource), - (227,rd.ResourceUsage.PS_Resource)] - if drawIndirectCount: - expectedUsage += [ - (232,rd.ResourceUsage.PS_Resource), - (235,rd.ResourceUsage.PS_Resource), - (239,rd.ResourceUsage.PS_Resource), - (243,rd.ResourceUsage.PS_Resource), - (248,rd.ResourceUsage.PS_Resource), - (249,rd.ResourceUsage.PS_Resource), - (250,rd.ResourceUsage.PS_Resource), - (255,rd.ResourceUsage.PS_Resource), - (256,rd.ResourceUsage.PS_Resource)] - if descBuffer: - expectedUsage += [ - (256+countDrawIndirectCount+countNested,rd.ResourceUsage.PS_Resource), - (259+countDrawIndirectCount+countNested,rd.ResourceUsage.PS_Resource)] + (10,rd.ResourceUsage.Clear)] + for eid in descSetDrawEIDs: + expectedUsage.append((eid,rd.ResourceUsage.PS_Resource)) + for eid in descBufferDrawEIDs: + expectedUsage.append((eid,rd.ResourceUsage.PS_Resource)) elif res.type == rd.ResourceType.CommandBuffer: expectedUsage = [(0,rd.ResourceUsage.Unused)] elif res.type == rd.ResourceType.DescriptorStore: @@ -407,7 +319,8 @@ class VK_Resource_Usage(rdtest.TestCase): expectedUsage = [(0,rd.ResourceUsage.Unused)] else: raise rdtest.TestFailureException(f"'{res.name}' {res.resourceId} Unexpected resource type {res.type.name}") - rdtest.log.print(f"Resource '{res.name}' type:{res.type.name} {res.resourceId} usages:{len(self.controller.GetUsage(res.resourceId))} expectedUsages:{len(expectedUsage)}") + rdtest.log.print(f"Resource '{res.name}' type:{res.type.name} {res.resourceId} usages:{len(self.resourceUsages[res.resourceId])} expectedUsages:{len(expectedUsage)}") + expectedUsage.sort(key=lambda x: x[0]) self.check_resource_usage(res, expectedUsage) actions = self.controller.GetRootActions() @@ -416,7 +329,7 @@ class VK_Resource_Usage(rdtest.TestCase): # Select every event of the resource usage to ensure the EID is valid with rdtest.log.auto_section("Checking Resource Usage Events can be replayed"): - for res in self.controller.GetResources(): + for res in resources: rdtest.log.print(f"Resource '{res.name}' type:{res.type.name} {res.resourceId}") usages = self.resourceUsages[res.resourceId] for u in usages: