Mesa (master): nir: Allow 64-bit image atomics
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Nov 9 17:35:47 UTC 2020
Module: Mesa
Branch: master
Commit: 5a3e22018d11234bb83c24e153c6c2649aed678f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a3e22018d11234bb83c24e153c6c2649aed678f
Author: Jason Ekstrand <jason at jlekstrand.net>
Date: Tue Mar 17 17:45:28 2020 -0500
nir: Allow 64-bit image atomics
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7509>
---
src/compiler/nir/nir_validate.c | 26 +++++++++++++++++---------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/src/compiler/nir/nir_validate.c b/src/compiler/nir/nir_validate.c
index 2b0df24405a..b974bc9f46d 100644
--- a/src/compiler/nir/nir_validate.c
+++ b/src/compiler/nir/nir_validate.c
@@ -722,10 +722,14 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state)
case nir_intrinsic_bindless_image_atomic_xor:
case nir_intrinsic_bindless_image_atomic_comp_swap: {
enum pipe_format format = image_intrin_format(instr);
- validate_assert(state, format == PIPE_FORMAT_COUNT ||
- format == PIPE_FORMAT_R32_UINT ||
- format == PIPE_FORMAT_R32_SINT);
- validate_assert(state, nir_dest_bit_size(instr->dest) == 32);
+ if (format != PIPE_FORMAT_COUNT) {
+ validate_assert(state, format == PIPE_FORMAT_R32_UINT ||
+ format == PIPE_FORMAT_R32_SINT ||
+ format == PIPE_FORMAT_R64_UINT ||
+ format == PIPE_FORMAT_R64_SINT);
+ validate_assert(state, nir_dest_bit_size(instr->dest) ==
+ util_format_get_blocksizebits(format));
+ }
break;
}
@@ -733,11 +737,15 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state)
case nir_intrinsic_image_atomic_exchange:
case nir_intrinsic_bindless_image_atomic_exchange: {
enum pipe_format format = image_intrin_format(instr);
- validate_assert(state, format == PIPE_FORMAT_COUNT ||
- format == PIPE_FORMAT_R32_UINT ||
- format == PIPE_FORMAT_R32_SINT ||
- format == PIPE_FORMAT_R32_FLOAT);
- validate_assert(state, nir_dest_bit_size(instr->dest) == 32);
+ if (format != PIPE_FORMAT_COUNT) {
+ validate_assert(state, format == PIPE_FORMAT_R32_UINT ||
+ format == PIPE_FORMAT_R32_SINT ||
+ format == PIPE_FORMAT_R32_FLOAT ||
+ format == PIPE_FORMAT_R64_UINT ||
+ format == PIPE_FORMAT_R64_SINT);
+ validate_assert(state, nir_dest_bit_size(instr->dest) ==
+ util_format_get_blocksizebits(format));
+ }
break;
}
More information about the mesa-commit
mailing list