summaryrefslogtreecommitdiffstats
path: root/source/slang/emit.cpp
diff options
context:
space:
mode:
authorTim Foley <tfoleyNV@users.noreply.github.com>2018-07-26 14:48:48 -0700
committerGitHub <noreply@github.com>2018-07-26 14:48:48 -0700
commit171f524d7ca2922084a33f50c77a1e8797e80949 (patch)
tree849b11a72a43aceccfbea5a88d8cc00c8d5b0492 /source/slang/emit.cpp
parent66f5f18037602751ebce3c5e12d0466a9ee97462 (diff)
Fix translation of RWTexture subscript operations for Vulkan (#618)
Partially fixes #615 There's kind of a mess going on here, and it is difficult to be sure which of the changes here are strictly necessary. Also, our testing isn't setup to run tests that use `RWTexture2D`, so the only testing I can really run is manual tests using Falcor. The most basic issue here is that in an earlier change I added `ref` accessors for the subscript operation on various `RW*` types in the standard library, and that included `RWTexture2D` (and the other `RWTexture*` types). The compiler ended up favoring a `ref` accessor over a `set` accessor even when the `set` would suffice, but only the `set` accessor could be lowerd to GLSL/SPIR-V. This change ends up implementing two different fixes for the same problem: * Logic has been added to try and favor a `set` accessor over a `ref` accessor in the cases where either could be used (but still require a `ref` accessor to be used when it is really needed) * The `ref` accessor for `RWTexture*` has been removed, since it turns out that the operations that might have benefited from it (atomics, and component-granularity stores) aren't actually allowed on typed UAVs anyway. There is a deeper issue here that somebody needs to go through and rationalize our representation and handling of accessors like this, but I'm not going to be able to do that in the time I can put into this PR.
Diffstat (limited to 'source/slang/emit.cpp')
0 files changed, 0 insertions, 0 deletions