Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

RenderDoc Switch: Difference between revisions

From GameBrew
No edit summary
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Infobox Switch Homebrews
{{Infobox Switch Homebrews
|title=RenderDoc
|title=RenderDoc
|image=renderdocswitch.png
|image=renderdocnx.png
|description=RenderDoc is a stand-alone graphics debugging tool.
|description=A stand-alone graphics debugging tool.
|author=baldurk
|author=baldurk
|lastupdated=2023/04/01
|lastupdated=2023/06/02
|type=Developments
|type=Developments
|version=1.26
|version=1.27
|license=MIT
|license=MIT
|download=https://dlhb.gamebrew.org/switchhomebrews/renderdocswitch.7z
|download=https://renderdoc.org/builds
|website=https://github.com/baldurk/renderdoc
|website=https://github.com/baldurk/renderdoc
|source=https://github.com/baldurk/renderdoc
|source=https://github.com/baldurk/renderdoc
|donation=  
|donation=  
}}
}}
{{#seo:
RenderDoc is a frame-capture based graphics debugger, currently available for Vulkan, D3D11, D3D12, OpenGL, and OpenGL ES development on Windows, Linux, Android, and Nintendo Switch™. It is completely open-source under the MIT license.
|title=Switch Homebrew PC Tools (Developments) - GameBrew
 
|title_mode=append
RenderDoc is intended for debugging your own programs only. Any discussion of capturing programs that you did not create will not be allowed in any official public RenderDoc setting, including the issue tracker, discord, or via email. For example this includes capturing commercial games that you did not create, or capturing Google Maps or Google Earth. Note: Capturing projects you created that use a third party engine like Unreal or Unity, or open source and free projects is completely fine and supported.
|image=renderdocswitch.png
 
|image_alt=RenderDoc
==Installation==
}}
There are [https://renderdoc.org/builds binary releases] available, built from the release targets. It's recommended that if you're new you start with the stable builds. [https://renderdoc.org/builds#nightly Nightly builds] are available every day from the v1.x branch here if you need it, but correspondingly may be less stable.
RenderDoc is a graphics debugger that captures frames and is presently accessible for Vulkan, D3D11, D3D12, OpenGL, and OpenGL ES development. It can be used on Windows, Linux, Android, and Nintendo Switch™, and is released under the MIT license as open-source software.


If you have any inquiries, feedback, or concerns, you can submit an issue on [https://github.com/baldurk/renderdoc/issues/new/choose GitHub], contact me via [baldurk@baldurk.org email], or join the [https://webchat.oftc.net/?channels=renderdoc IRC] or [https://discord.gg/ahq6yRB Discord] channels for discussion.
To install on windows run the appropriate installer for your OS ([https://renderdoc.org/stable/latest/RenderDoc_latest_64.msi 64-bit] | [https://renderdoc.org/stable/latest/RenderDoc_latest_32.msi 32-bit]) or download the portable zip from the [https://renderdoc.org/builds builds page]. The 64-bit windows build fully supports capturing from 32-bit programs.  


To install RenderDoc on Windows, download the appropriate installer based on your OS (64-bit or 32-bit) or obtain the portable ZIP from the builds page. The 64-bit version of the software can capture frames from 32-bit programs. RenderDoc is only supported on 64-bit x86 Linux, but a precompiled binary tarball is available, and it can be installed via your distribution's package manager. Alternatively, you can build the software from the [https://github.com/baldurk/renderdoc source code].
On linux only 64-bit x86 is supported - there is a precompiled [https://renderdoc.org/stable/latest/renderdoc_latest.tar.gz binary tarball] available, or your distribution may package it. If not you can [https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Compiling.md build from source].


==Media==
==User guide==
'''How to use renderDoc tool - ([https://www.youtube.com/watch?v=ngz4NHiigIw Arkadiusz Lachowicz])'''<br>
Links:
<youtube>ngz4NHiigIw</youtube>
*Stable and nightly builds - https://renderdoc.org/builds ([https://renderdoc.org/symbols Symbol server])
*Documentation - [https://renderdoc.org/docs HTML online], [https://renderdoc.org/docs/renderdoc.chm CHM in builds], [https://www.youtube.com/user/baldurkarlsson Videos]
*Code of Conduct - [https://github.com/baldurk/renderdoc/blob/v1.x/docs/CODE_OF_CONDUCT.md Contributor Covenant]
*Information for contributors - [https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING.md All contribution information], [https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Compiling.md Compilation instructions]
*Community extensions - [https://github.com/baldurk/renderdoc-contrib Extensions repository]


==Screenshots==
==Screenshots==
https://dlhb.gamebrew.org/switchhomebrews/renderdocswitch-01.png
https://dlhb.gamebrew.org/switchhomebrews/renderdocnx2.png
https://dlhb.gamebrew.org/switchhomebrews/renderdocswitch-02.png
https://dlhb.gamebrew.org/switchhomebrews/renderdocnx3.png
https://dlhb.gamebrew.org/switchhomebrews/renderdocswitch-03.png
https://dlhb.gamebrew.org/switchhomebrews/renderdocnx4.png
https://dlhb.gamebrew.org/switchhomebrews/renderdocswitch-04.png
https://dlhb.gamebrew.org/switchhomebrews/renderdocnx5.png
 
==Media==
'''RenderDoc - An overview ([https://www.youtube.com/@baldurkarlsson/videos baldurkarlsson])'''<br>
<youtube>EMFG5wmng-M</youtube>


==Changelog==  
==Changelog==  
'''(v.1.26)'''
'''v1.27'''
* OpenGL: Pixel history is now supported on OpenGL.
 
* Vulkan: Improve the heuristic for when to use a GPU readback for reading mapped memory over CPU reads.
*This release includes a number of bugfixes since v1.26, as well as support for the latest D3D12 SDK 1.610.1.
* D3D12: Enable that same heuristic that was accidentally disabled in a previous release.
*As always binary builds with installers, zips and tarballs are available on [https://renderdoc.org/builds renderdoc.org].
* D3D12: DXIL handling refactored once again, to more closely clone LLVM's codebase and be more reliable at editing/patching.
 
* All: Fix an issue with thumbnails being stale in some situations.
Python API changes:
* All: Fix a crash when a completion modifier like ctrl-space or ctrl-E is used in an edit box with no completion options.
*<code>D3D12Sampler.borderColor</code> has been split into <code>D3D12Sampler.borderColorType</code> and <code>D3D12Sampler.borderColorValue</code>, and similarly for <code>VKSampler.borderColor</code> into <code>VKSampler.borderColorType and VKSampler.borderColorValue</code>, to allow for integer border colour types.
* All: Speculative fix for a race condition with performance counter viewer windows.
*<code>D3D12RasterizerState.multisampleEnable</code> and <code>D3D12RasterizerState.lineRasterMode</code> have been removed and replaced with <code>D3D12RasterizerState.lineRasterMode</code> of type <code>LineRaster</code>.
* All: Fix RGP captures being unable to trigger remotely.
 
* All: Fix cumulative calculation of durations for fake profile markers.
Features/Improvements:
* All: Disable Qt behaviour where typing a key in the buffer viewer would try to 'find' that letter, causing large hangs on very large meshes.
*D3D12: Add support for new SDK 1.610.1:
* All: Fix a crash in rare cases when showing tooltips for some columns in mesh viewer.
*New state functionality
* All: Fix a problem where editing an environment variable modification to have an empty value made it unselectable.
*New sampler creation parameters and PSO chunks
* All: Fix terminology being reversed between D3D and GL/Vulkan for the shader stages in resource usage.
*New barrier API
* Linux: Create utility GL contexts as explicitly matching the used API, in case GLES is being used.
*All: Show explicit dropdown arrow for tool buttons with menus.
* Android: Increase timeout for remote servers starting to 5 seconds because Android is a garbage platform and a tiny program can't start in under a second.
*All: Report Windows 11 separately in analytics.
* D3D: Fix an issue with debugging pixel shaders trying to artificially create matching I/O signatures with preceeding stages when SV_PrimitiveID is used.
*Vulkan & D3D12: Optimisations to capture time overhead and GPU Syncs.
* D3D: Fix an issue where a missing callstack on the first instruction of debugging could cause step-over/step-into to misbehave.
*D3D11: Disable query for undocumented internal D3D interface in composition API.
* D3D12: Fix a crash that can happen when device lost happens during load.
 
* D3D12: Stop using dxc type annotations as they are broken.
Bugfixes:
* D3D12: Fix several new DXIL formulations or features.
*All: Fix potential crash when reading large amounts of data from sockets.
* D3D12: Don't initialise AMD extensions when AMD driver is detected as loaded, if it's not currently in use.
*All: Fix potential crash when serialising strings if length is corrupted.
* D3D12: Fix a problem capturing when a mapped buffer is not used directly but instead aliased with buffers on the same heap that are then used.
*All: Fix potential crashes/fatal errors rendering 0x0 thumbnails.
* D3D12: Fix missing specified colour formats on internal PSO.
*All: Remove fatal errors in XML codec and have error handling for corrupted XML.
* D3D12: Fix a deadlock if a resource is mapped while a capturing is finishing and cleaning up captured maps.
*All: Sanitise strings printed when received from target control/remote server.
* Vulkan: Fix a crash when using extension-only defined queue families.
*All: Save any capture changes (renames/bookmarks) to local file when remotely replaying.
* Vulkan: Fix a crash when external/foreign queue families are used.
*UI: Fix potential race when destroying windows while command is in flight
* Vulkan: Fix a crash deleting a BDA buffer while another is being created.
*Linux: Don't open symlinks when opening logfile.
* Vulkan: Fix handling of dynamic rendering shading rate attachments.
*Linux: Try to handle processes on linux that fork without exec.
* Vulkan/GL: Fix handling of stencil-only multisampled textures.
*Linux: Work around bash overriding getenv/setenv with custom implementation.
* GLES: Remove unsupported EGL extensions (currently only EGL_KHR_no_config_context) which cannot be supported.
*Android: Make timeouts waiting for process to start just depressingly high.
* GL: Work around driver issue on Intel windows by declaring extra extension in internal shaders
*Android: Speculative fix for Android thread race condition.
* GL: Update window size before processing context activation, to fix an issue with incorrect window size on captures of frame 0.
*Windows: Ignore <code>windows.storage.dll</code> which spams a huge number of LoadLibrary calls.
*D3D: Fix shader debugging using wrong operand to look up resources in some gather4 opcodes.
*D3D11: Fix handling of RestoreDeferredContextState during capture if state isn't restored.
*D3D12: Add fatal error handling if a map fails during replay.
*D3D12: Add GPU syncs between potential moves of work across different queues.
*D3D12: Fix a bug with incorrect forward reference detection in DXIL.
*D3D12: Fix a discrepancy in DXIL disassembly from dxc.
*D3D12: Fix crash when D3D12 descriptor table is bound off the end of a heap.
*D3D12: Handle some unusually formatted DXIL shaders with missing implicit pointer types.
*OpenGL: Add workaround for Intel bug in pixel history.
*OpenGL: Don't show stencil for non-final fragments.
*OpenGL: Fix pixel history being affected by pixel pack/unpack state.
*OpenGL: Fix pixel history not using full precision depth.
*OpenGL: Fix pixel history on framebuffers that don't have stencil.
*OpenGL: Fix reporting of 10:10:10:2 resource formats.
*OpenGL: Fix some GL pixel history cases where not all events would be replayed correctly.
*OpenGL: Fix state tracking issues in GL pixel history.
*OpenGL: Handle drawbuffers when they aren't simple direct 1:1 with attachments
*OpenGL: Work around nvidia bug with failing GLX query.
*GLES: Fix requiring some proper GL GLSL extensions on GLES for blit shader.
*GLES: Fix use of proper GL function that's not available on GLES.
*GLES: Remove reset notification EGL context attribute preventing context sharing.
*Vulkan: Add fallback for shader feedback on Intel GPUs without int64 support.
*Vulkan: Disable buggy vulkan layers.
*Vulkan: Don't include discard in resource usage until end of renderpass.
*Vulkan: Fix a bug causing present fence extension to crash.
*Vulkan: Fix a missing flush for mapped non-coherent memory.
*Vulkan: Fix a potential GPU timeout on draws with huge number of instances with GS.
*Vulkan: Fix an incorrect use of GetInstanceProcAddr when initialising vkCreateDevice.
*Vulkan: Fix crashes for input structures with builtins.
*Vulkan: Fix depth results for fragments in pixel history.
*Vulkan: Fix detection of scalar packing from only matrix layout.
*Vulkan: Fix pixel history on framebuffers that don't have stencil.
*Vulkan: Fix separate stencil operations being applied properly with dynamic rendering.
*Vulkan: Fix uint/int bindings being broken in custom shader templates.
*Vulkan: Manually check and report depth bounds test in vulkan pixel history.
*Vulkan: Work around further broken Intel occlusion queries in pixel history.


== External links ==
== External links ==
* Github - https://github.com/baldurk/renderdoc
* Official website - https://renderdoc.org/
* GitHub - https://github.com/baldurk/renderdoc

Latest revision as of 13:33, 4 August 2023

RenderDoc
Renderdocnx.png
General
Authorbaldurk
TypeDevelopments
Version1.27
LicenseMIT License
Last Updated2023/06/02
Links
Download
Website
Source

RenderDoc is a frame-capture based graphics debugger, currently available for Vulkan, D3D11, D3D12, OpenGL, and OpenGL ES development on Windows, Linux, Android, and Nintendo Switch™. It is completely open-source under the MIT license.

RenderDoc is intended for debugging your own programs only. Any discussion of capturing programs that you did not create will not be allowed in any official public RenderDoc setting, including the issue tracker, discord, or via email. For example this includes capturing commercial games that you did not create, or capturing Google Maps or Google Earth. Note: Capturing projects you created that use a third party engine like Unreal or Unity, or open source and free projects is completely fine and supported.

Installation

There are binary releases available, built from the release targets. It's recommended that if you're new you start with the stable builds. Nightly builds are available every day from the v1.x branch here if you need it, but correspondingly may be less stable.

To install on windows run the appropriate installer for your OS (64-bit | 32-bit) or download the portable zip from the builds page. The 64-bit windows build fully supports capturing from 32-bit programs.

On linux only 64-bit x86 is supported - there is a precompiled binary tarball available, or your distribution may package it. If not you can build from source.

User guide

Links:

Screenshots

renderdocnx2.png renderdocnx3.png renderdocnx4.png renderdocnx5.png

Media

RenderDoc - An overview (baldurkarlsson)

Changelog

v1.27

  • This release includes a number of bugfixes since v1.26, as well as support for the latest D3D12 SDK 1.610.1.
  • As always binary builds with installers, zips and tarballs are available on renderdoc.org.

Python API changes:

  • D3D12Sampler.borderColor has been split into D3D12Sampler.borderColorType and D3D12Sampler.borderColorValue, and similarly for VKSampler.borderColor into VKSampler.borderColorType and VKSampler.borderColorValue, to allow for integer border colour types.
  • D3D12RasterizerState.multisampleEnable and D3D12RasterizerState.lineRasterMode have been removed and replaced with D3D12RasterizerState.lineRasterMode of type LineRaster.

Features/Improvements:

  • D3D12: Add support for new SDK 1.610.1:
  • New state functionality
  • New sampler creation parameters and PSO chunks
  • New barrier API
  • All: Show explicit dropdown arrow for tool buttons with menus.
  • All: Report Windows 11 separately in analytics.
  • Vulkan & D3D12: Optimisations to capture time overhead and GPU Syncs.
  • D3D11: Disable query for undocumented internal D3D interface in composition API.

Bugfixes:

  • All: Fix potential crash when reading large amounts of data from sockets.
  • All: Fix potential crash when serialising strings if length is corrupted.
  • All: Fix potential crashes/fatal errors rendering 0x0 thumbnails.
  • All: Remove fatal errors in XML codec and have error handling for corrupted XML.
  • All: Sanitise strings printed when received from target control/remote server.
  • All: Save any capture changes (renames/bookmarks) to local file when remotely replaying.
  • UI: Fix potential race when destroying windows while command is in flight
  • Linux: Don't open symlinks when opening logfile.
  • Linux: Try to handle processes on linux that fork without exec.
  • Linux: Work around bash overriding getenv/setenv with custom implementation.
  • Android: Make timeouts waiting for process to start just depressingly high.
  • Android: Speculative fix for Android thread race condition.
  • Windows: Ignore windows.storage.dll which spams a huge number of LoadLibrary calls.
  • D3D: Fix shader debugging using wrong operand to look up resources in some gather4 opcodes.
  • D3D11: Fix handling of RestoreDeferredContextState during capture if state isn't restored.
  • D3D12: Add fatal error handling if a map fails during replay.
  • D3D12: Add GPU syncs between potential moves of work across different queues.
  • D3D12: Fix a bug with incorrect forward reference detection in DXIL.
  • D3D12: Fix a discrepancy in DXIL disassembly from dxc.
  • D3D12: Fix crash when D3D12 descriptor table is bound off the end of a heap.
  • D3D12: Handle some unusually formatted DXIL shaders with missing implicit pointer types.
  • OpenGL: Add workaround for Intel bug in pixel history.
  • OpenGL: Don't show stencil for non-final fragments.
  • OpenGL: Fix pixel history being affected by pixel pack/unpack state.
  • OpenGL: Fix pixel history not using full precision depth.
  • OpenGL: Fix pixel history on framebuffers that don't have stencil.
  • OpenGL: Fix reporting of 10:10:10:2 resource formats.
  • OpenGL: Fix some GL pixel history cases where not all events would be replayed correctly.
  • OpenGL: Fix state tracking issues in GL pixel history.
  • OpenGL: Handle drawbuffers when they aren't simple direct 1:1 with attachments
  • OpenGL: Work around nvidia bug with failing GLX query.
  • GLES: Fix requiring some proper GL GLSL extensions on GLES for blit shader.
  • GLES: Fix use of proper GL function that's not available on GLES.
  • GLES: Remove reset notification EGL context attribute preventing context sharing.
  • Vulkan: Add fallback for shader feedback on Intel GPUs without int64 support.
  • Vulkan: Disable buggy vulkan layers.
  • Vulkan: Don't include discard in resource usage until end of renderpass.
  • Vulkan: Fix a bug causing present fence extension to crash.
  • Vulkan: Fix a missing flush for mapped non-coherent memory.
  • Vulkan: Fix a potential GPU timeout on draws with huge number of instances with GS.
  • Vulkan: Fix an incorrect use of GetInstanceProcAddr when initialising vkCreateDevice.
  • Vulkan: Fix crashes for input structures with builtins.
  • Vulkan: Fix depth results for fragments in pixel history.
  • Vulkan: Fix detection of scalar packing from only matrix layout.
  • Vulkan: Fix pixel history on framebuffers that don't have stencil.
  • Vulkan: Fix separate stencil operations being applied properly with dynamic rendering.
  • Vulkan: Fix uint/int bindings being broken in custom shader templates.
  • Vulkan: Manually check and report depth bounds test in vulkan pixel history.
  • Vulkan: Work around further broken Intel occlusion queries in pixel history.

External links

Advertising: