<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Gpgpu | Ben Ahlbrand CV</title><link>https://benjamin.ahlbrand.me/tags/gpgpu/</link><atom:link href="https://benjamin.ahlbrand.me/tags/gpgpu/index.xml" rel="self" type="application/rss+xml"/><description>Gpgpu</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Fri, 24 Jun 2022 00:00:00 +0000</lastBuildDate><image><url>https://benjamin.ahlbrand.me/media/sharing.png</url><title>Gpgpu</title><link>https://benjamin.ahlbrand.me/tags/gpgpu/</link></image><item><title>Quickstart: Renderdoc debugging OpenGL apps</title><link>https://benjamin.ahlbrand.me/post/2022-06-27-tutorial-quickstart-renderdoc-debugging/</link><pubDate>Fri, 24 Jun 2022 00:00:00 +0000</pubDate><guid>https://benjamin.ahlbrand.me/post/2022-06-27-tutorial-quickstart-renderdoc-debugging/</guid><description>&lt;p>There&amp;rsquo;s pretty much nothing worse in graphics programming, when you have a black screen and have no idea why. Renderdoc seeks to remedy this inability to debug the blackbox GPU APIs being interfaced with by capturing the context data and providing visualization tooling. I had a hard time finding any results for higher level advice on how to use Renderdoc with your OpenGL program, this tutorial is an attempt to fill that gap with some &amp;ldquo;quick start advice&amp;rdquo;.&lt;/p>
&lt;p>My first image shows some good recommended default settings to get an idea of what Renderdoc exposes. Getting the call stacks for each frame&amp;rsquo;s draw calls is pretty amazing, and if you also enable `Ref all Resources` then you&amp;rsquo;ll have a dump of the buffers / textures used in your program each frame.&lt;/p>
&lt;p>One of the more useful features once you know you need it, is the buffer viewer. The official docs are fairly descriptive &lt;em>&lt;strong>&lt;a href="https://renderdoc.org/docs/window/buffer_viewer.html" target="_blank" rel="noopener">here&lt;/a>&lt;/strong>&lt;/em>. I found it useful when digging into headless compute applications. For instance, should you find that you need to manually set capture boundaries, there&amp;rsquo;s also an &lt;em>&lt;strong>&lt;a href="https://renderdoc.org/docs/in_application_api.html" target="_blank" rel="noopener">in-application API&lt;/a>&lt;/strong>&lt;/em> exposed by Renderdoc. I wrote some &lt;em>&lt;strong>&lt;a href="https://github.com/bmahlbrand/renderdoc-python-bindings" target="_blank" rel="noopener">python bindings&lt;/a>&lt;/strong>&lt;/em> on top of this with &lt;em>&lt;strong>&lt;a href="https://github.com/wjakob/nanobind" target="_blank" rel="noopener">nanobind&lt;/a>&lt;/strong>&lt;/em> in order to interact w/my python application***.***&lt;/p></description></item></channel></rss>