Support us on Patreon to keep GamingOnLinux alive. This ensures all of our main content remains free for everyone. Just good, fresh content! Alternatively, you can donate through PayPal. You can also buy games using our partner links for GOG and Humble Store.
We do often include affiliate links to earn us some pennies. See more here.

A fresh announcement for developers today is GPU Reshape, a free and open source tool that could be really useful for game developers working with Vulkan and DirectX 12 to deal with potentially undefined behaviour. 

According to the post it's a collaboration between AMD and Avalanche Studios Group, which then continued externally with Miguel Petersen of Striking Distance Studios (prev at Avalanche) who is the author of GPU Reshape with help from various other developers. Great to see AMD and more game developers value open source.

What is it actually for? If you're not a game developer, it's probably complicated to understand. It's not my expertise either, but I love seeing game developer toolkits like this release as open source. Petersen even clearly states in the post that Linux support is planned for it! For more games to support Linux / Steam Deck well — developers need the tools too. As per the blog post Petersen explained it as:

A toolset that leverages on-the-fly instrumentation of GPU operations with instruction-level validation of potentially undefined behavior, supporting both DX12 and Vulkan. A standalone desktop application with no integration required, all open source (MIT), is now available in Beta.

Pictured - GPU Reshape, credit to Miguel Petersen

Features:

GPU Reshape brings powerful features typical of CPU tooling to the GPU, providing validation of dynamic behaviour, such as:

  • Resource Bounds Validation of resource read / write coordinates against its bounds.
  • Export Stability Numeric stability validation of floating point exports (UAV writes, render targets, vertex exports), e.g. NaN / Inf.
  • Descriptor Validation Validation of descriptors, potentially dynamically indexed. This includes undefined, mismatched (compile-time to runtime), out of bounds descriptor indexing, and missing table bindings.
  • Concurrency Validation Validation of resource concurrency, i.e. single-producer or multiple-consumer, between queues and events.
  • Resource Initialization Validation of resource initialization, ensures any read was preceded by a write. (*1)
  • Infinite Loops Detection of infinite loops. Experimental.

There's a number of other planned additions, as they hope to see it evolve into a general purpose tool including:

  • Shader debugging, providing the ability to inspect live data as the shader sees it.
  • Shader assertions, in source assertions typical of CPU code.
  • Branch hot spots, live hot spot profiling of all branches.
  • Branch coherence, live coherence analysis of all branches.
  • And more!

See more on the AMD blog post.

Article taken from GamingOnLinux.com.
18 Likes
About the author -
author picture
I am the owner of GamingOnLinux. After discovering Linux back in the days of Mandrake in 2003, I constantly checked on the progress of Linux until Ubuntu appeared on the scene and it helped me to really love it. You can reach me easily by emailing GamingOnLinux directly.
See more from me
2 comments

“Detection of infinite loops. Experimental.”

Good luck solving the halting problem 😂
kokoko3k Jan 21
Definitely waiting for everything shader related, Linux really needs something like that.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register


Or login with...
Sign in with Steam Sign in with Google
Social logins require cookies to stay logged in.