mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 11:28:05 +02:00
gallivm: Handle invalid image format/op combinations
Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23515>
This commit is contained in:
parent
1841dd7549
commit
a2159dfe8a
1 changed files with 35 additions and 3 deletions
|
|
@ -4650,9 +4650,41 @@ lp_build_do_atomic_soa(struct gallivm_state *gallivm,
|
||||||
{
|
{
|
||||||
const enum pipe_format format = format_desc->format;
|
const enum pipe_format format = format_desc->format;
|
||||||
|
|
||||||
if (format != PIPE_FORMAT_R32_UINT &&
|
bool valid = format == PIPE_FORMAT_R32_UINT ||
|
||||||
format != PIPE_FORMAT_R32_SINT &&
|
format == PIPE_FORMAT_R32_SINT ||
|
||||||
format != PIPE_FORMAT_R32_FLOAT) {
|
format == PIPE_FORMAT_R32_FLOAT;
|
||||||
|
|
||||||
|
bool integer = format != PIPE_FORMAT_R32_FLOAT;
|
||||||
|
if (img_op == LP_IMG_ATOMIC) {
|
||||||
|
switch (op) {
|
||||||
|
case LLVMAtomicRMWBinOpAdd:
|
||||||
|
case LLVMAtomicRMWBinOpSub:
|
||||||
|
case LLVMAtomicRMWBinOpAnd:
|
||||||
|
case LLVMAtomicRMWBinOpNand:
|
||||||
|
case LLVMAtomicRMWBinOpOr:
|
||||||
|
case LLVMAtomicRMWBinOpXor:
|
||||||
|
case LLVMAtomicRMWBinOpMax:
|
||||||
|
case LLVMAtomicRMWBinOpMin:
|
||||||
|
case LLVMAtomicRMWBinOpUMax:
|
||||||
|
case LLVMAtomicRMWBinOpUMin:
|
||||||
|
valid &= integer;
|
||||||
|
break;
|
||||||
|
case LLVMAtomicRMWBinOpFAdd:
|
||||||
|
case LLVMAtomicRMWBinOpFSub:
|
||||||
|
#if LLVM_VERSION_MAJOR >= 15
|
||||||
|
case LLVMAtomicRMWBinOpFMax:
|
||||||
|
case LLVMAtomicRMWBinOpFMin:
|
||||||
|
#endif
|
||||||
|
valid &= !integer;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
valid &= integer;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!valid) {
|
||||||
atomic_result[0] = lp_build_zero(gallivm, type);
|
atomic_result[0] = lp_build_zero(gallivm, type);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue