From e2976e662d9215b5a466b108efc89e19fc718616 Mon Sep 17 00:00:00 2001 From: Philip Langdale Date: Thu, 13 Jun 2019 12:30:18 -0700 Subject: video/out/gpu: Add a `storable` flag to ra_format While `ra` supports the concept of a texture as a storage destination, it does not support the concept of a texture format being usable for a storage texture. This can lead to us attempting to create a texture from an incompatible format, with undefined results. So, let's introduce an explicit format flag for storage and use it. In `ra_pl` we can simply reflect the `storable` flag. For GL and D3D, we'll need to write some new code to do the compatibility checks. I'm not going to do it here because it's not a regression; we were already implicitly assuming all formats were storable. Fixes #6657 --- video/out/gpu/ra.h | 1 + 1 file changed, 1 insertion(+) (limited to 'video/out/gpu/ra.h') diff --git a/video/out/gpu/ra.h b/video/out/gpu/ra.h index f35489e25d..58bf55357b 100644 --- a/video/out/gpu/ra.h +++ b/video/out/gpu/ra.h @@ -107,6 +107,7 @@ struct ra_format { // only applies to 2-component textures bool linear_filter; // linear filtering available from shader bool renderable; // can be used for render targets + bool storable; // can be used for storage images bool dummy_format; // is not a real ra_format but a fake one (e.g. FBO). // dummy formats cannot be used to create textures -- cgit v1.2.3