summaryrefslogtreecommitdiffstats
path: root/video/out/d3d11/ra_d3d11.c
diff options
context:
space:
mode:
authorPhilip Langdale <philipl@cloudera.com>2019-06-13 12:30:18 -0700
committersfan5 <sfan5@live.de>2019-07-08 00:59:28 +0200
commite2976e662d9215b5a466b108efc89e19fc718616 (patch)
treead5b58e82af5477dfe640e775efad85f2b45de25 /video/out/d3d11/ra_d3d11.c
parentc379950ce08932dec839f18926183c7b05b57d00 (diff)
downloadmpv-e2976e662d9215b5a466b108efc89e19fc718616.tar.bz2
mpv-e2976e662d9215b5a466b108efc89e19fc718616.tar.xz
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
Diffstat (limited to 'video/out/d3d11/ra_d3d11.c')
-rw-r--r--video/out/d3d11/ra_d3d11.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/video/out/d3d11/ra_d3d11.c b/video/out/d3d11/ra_d3d11.c
index df9b3c0095..e6b37ef2b9 100644
--- a/video/out/d3d11/ra_d3d11.c
+++ b/video/out/d3d11/ra_d3d11.c
@@ -233,6 +233,9 @@ static void setup_formats(struct ra *ra)
.pixel_size = d3dfmt->bytes,
.linear_filter = (support & sup_filter) == sup_filter,
.renderable = (support & sup_render) == sup_render,
+ // TODO: Check whether it's a storage format
+ // https://docs.microsoft.com/en-us/windows/desktop/direct3d12/typed-unordered-access-view-loads
+ .storable = true,
};
if (support & D3D11_FORMAT_SUPPORT_TEXTURE1D)