mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-29 18:06:37 +00:00
55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
# these imports are not strictly necessary, but are convenient
|
|
import renderdoc
|
|
import qrenderdoc
|
|
|
|
# this is here to give autocomplete when editing the example
|
|
# in VS Code where it doesn't know about this global
|
|
from typing import TYPE_CHECKING
|
|
|
|
if TYPE_CHECKING:
|
|
pyrenderdoc = qrenderdoc.CaptureContext()
|
|
|
|
if not pyrenderdoc.IsCaptureLoaded():
|
|
filename = pyrenderdoc.Extensions().OpenFileName("Choose a capture", "", "*.rdc")
|
|
|
|
pyrenderdoc.LoadCapture(filename, renderdoc.ReplayOptions(), filename, False, True)
|
|
|
|
pipe = pyrenderdoc.CurPipelineState()
|
|
|
|
depth = pipe.GetDepthTarget().resource
|
|
ib = pipe.GetIBuffer().resourceId
|
|
|
|
if depth == renderdoc.ResourceId() or ib == renderdoc.ResourceId():
|
|
raise RuntimeError(
|
|
"Can't run example!\n"
|
|
"Current event doesn't use both index buffer and depth target"
|
|
)
|
|
|
|
eid = pyrenderdoc.CurEvent()
|
|
|
|
controller = pyrenderdoc.GetBlockingController()
|
|
|
|
for name, id in [("Depth Target", depth), ("Index Buffer", ib)]:
|
|
usagelist = controller.GetUsage(id)
|
|
|
|
cur_usage = next(u for u in usagelist if u.eventId == eid).usage
|
|
|
|
prev_usages = [u for u in usagelist if u.eventId < eid and u.usage != cur_usage]
|
|
later_usages = [u for u in usagelist if u.eventId > eid and u.usage != cur_usage]
|
|
|
|
if len(prev_usages) == 0:
|
|
print(f"{name} {pyrenderdoc.GetResourceName(id)} was never used before {eid}!")
|
|
else:
|
|
print(
|
|
f"{name} {pyrenderdoc.GetResourceName(id)} was used as "
|
|
f"{str(prev_usages[-1].usage)} at {str(prev_usages[-1].eventId)}."
|
|
)
|
|
|
|
if len(later_usages) == 0:
|
|
print(f"{name} {pyrenderdoc.GetResourceName(id)} is never used after {eid}!")
|
|
else:
|
|
print(
|
|
f"{name} {pyrenderdoc.GetResourceName(id)} will be used as "
|
|
f"{str(later_usages[0].usage)} at {str(later_usages[0].eventId)}."
|
|
)
|