Add replay API initialisation/shutdown to python examples

This commit is contained in:
baldurk
2020-03-05 13:32:06 +00:00
parent bc56fd091d
commit 4e4ef40612
12 changed files with 65 additions and 2 deletions
@@ -275,6 +275,8 @@ def loadCapture(filename):
if 'pyrenderdoc' in globals():
pyrenderdoc.Replay().BlockInvoke(sampleCode)
else:
rd.InitialiseReplay(rd.GlobalEnvironment(), [])
if len(sys.argv) <= 1:
print('Usage: python3 {} filename.rdc'.format(sys.argv[0]))
sys.exit(0)
@@ -286,3 +288,5 @@ else:
controller.Shutdown()
cap.Shutdown()
rd.ShutdownReplay()
@@ -37,6 +37,8 @@ else:
print('Usage: python3 {} filename.rdc'.format(sys.argv[0]))
sys.exit(0)
rd.InitialiseReplay(rd.GlobalEnvironment(), [])
cap,controller = loadCapture(sys.argv[1])
# Use tkinter to create windows
@@ -139,3 +141,6 @@ window.mainloop()
controller.Shutdown()
cap.Shutdown()
if 'pyrenderdoc' not in globals():
rd.ShutdownReplay()
@@ -90,6 +90,8 @@ def loadCapture(filename):
if 'pyrenderdoc' in globals():
pyrenderdoc.Replay().BlockInvoke(sampleCode)
else:
rd.InitialiseReplay(rd.GlobalEnvironment(), [])
if len(sys.argv) <= 1:
print('Usage: python3 {} filename.rdc'.format(sys.argv[0]))
sys.exit(0)
@@ -101,3 +103,5 @@ else:
controller.Shutdown()
cap.Shutdown()
rd.ShutdownReplay()
@@ -81,6 +81,8 @@ def loadCapture(filename):
if 'pyrenderdoc' in globals():
pyrenderdoc.Replay().BlockInvoke(sampleCode)
else:
rd.InitialiseReplay(rd.GlobalEnvironment(), [])
if len(sys.argv) <= 1:
print('Usage: python3 {} filename.rdc'.format(sys.argv[0]))
sys.exit(0)
@@ -92,3 +94,5 @@ else:
controller.Shutdown()
cap.Shutdown()
rd.ShutdownReplay()
@@ -84,6 +84,8 @@ def loadCapture(filename):
if 'pyrenderdoc' in globals():
pyrenderdoc.Replay().BlockInvoke(sampleCode)
else:
rd.InitialiseReplay(rd.GlobalEnvironment(), [])
if len(sys.argv) <= 1:
print('Usage: python3 {} filename.rdc'.format(sys.argv[0]))
sys.exit(0)
@@ -95,3 +97,5 @@ else:
controller.Shutdown()
cap.Shutdown()
rd.ShutdownReplay()
@@ -9,6 +9,8 @@ import time
# the executable and trigger the capture at the desired time
raise RuntimeError("This sample should not be run directly, read the source")
rd.InitialiseReplay(rd.GlobalEnvironment(), [])
protocols = rd.GetSupportedDeviceProtocols()
print(f"Supported device protocols: {protocols}")
@@ -194,3 +196,5 @@ controller.Shutdown()
# save the capture, etc
remote.ShutdownServerAndConnection()
rd.ShutdownReplay()
@@ -99,10 +99,18 @@ def loadCapture(filename):
if 'pyrenderdoc' in globals():
pyrenderdoc.Replay().BlockInvoke(sampleCode)
else:
cap,controller = loadCapture('test.rdc')
rd.InitialiseReplay(rd.GlobalEnvironment(), [])
if len(sys.argv) <= 1:
print('Usage: python3 {} filename.rdc'.format(sys.argv[0]))
sys.exit(0)
cap,controller = loadCapture(sys.argv[1])
sampleCode(controller)
controller.Shutdown()
cap.Shutdown()
rd.ShutdownReplay()
@@ -1,5 +1,7 @@
import renderdoc as rd
rd.InitialiseReplay(rd.GlobalEnvironment(), [])
# Open a capture file handle
cap = rd.OpenCaptureFile()
@@ -26,3 +28,5 @@ print("%d top-level drawcalls" % len(controller.GetDrawcalls()))
controller.Shutdown()
cap.Shutdown()
rd.ShutdownReplay()
@@ -47,6 +47,14 @@ Loading a Capture
Given a capture file ``test.rdc`` we want to load it, begin the replay and get ready to perform analysis on it.
Before doing anything, we must initialise the replay API. We do that by calling :py:meth:`~renderdoc.InitialiseReplay`. Generally no special configuration is needed so passing a default :py:class:`~renderdoc.GlobalEnvironment` and an empty list of arguments is fine.
.. highlight:: python
.. code:: python
rd.InitialiseReplay(rd.GlobalEnvironment(), [])
To begin with, we use :py:meth:`~renderdoc.OpenCaptureFile` to obtain a :py:class:`~renderdoc.CaptureFile` instance. This gives us access to control over a capture file at a meta level. For more information see the :py:class:`CaptureFile` reference - the interface can also be used to create.
To open a file, use :py:meth:`~renderdoc.CaptureFile.OpenFile` on the :py:class:`~renderdoc.CaptureFile` instance. This function allows conversion from other formats via an importer, but here we'll use it just for opening a regular ``rdc`` file. It returns a :py:class:`~renderdoc.ReplayStatus` which can be used to determine what went wrong in the event that there was a problem. We then check that the capture uses an API which can be replayed locally - for example not every platform supports ``D3D11``, so on linux this would return no local replay support.
@@ -89,6 +97,8 @@ This function call will open the capture and begin to replay it, and initialise
Once we're done with the interfaces, we should call the ``Shutdown`` function on each, this allows the C++ interface to release the resources allocated.
Once all work is done we can shutdown the replay API.
.. highlight:: python
.. code:: python
@@ -97,6 +107,8 @@ Once we're done with the interfaces, we should call the ``Shutdown`` function on
cap.Shutdown()
rd.ShutdownReplay()
Example Source
--------------
+6
View File
@@ -5,6 +5,12 @@ Functions
.. module:: renderdoc
Initialisation and Shutdown
---------------------------
.. autofunction:: renderdoc.InitialiseReplay
.. autofunction:: renderdoc.ShutdownReplay
Capture File Access
-------------------
@@ -46,3 +46,10 @@ CaptureFile
.. autoclass:: renderdoc.CaptureFile
:members:
:undoc-members:
GlobalEnvironment
-----------------
.. autoclass:: renderdoc.GlobalEnvironment
:members:
:undoc-members: