mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
swr: [rasterizer jit] use signed integer representation for logic op
Instead of (incorrectly) biasing the snorm value to make it look like a unorm, just use signed integer math. This fixes arb_color_buffer_float-render GL_RGBA8_SNORM Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Tim Rowley <timothy.o.rowley@intel.com>
This commit is contained in:
parent
8ed703cfa6
commit
ddf0f097e7
1 changed files with 12 additions and 5 deletions
|
|
@ -692,9 +692,13 @@ struct BlendJit : public Builder
|
|||
dst[i] = BITCAST(dst[i], mSimdInt32Ty);
|
||||
break;
|
||||
case SWR_TYPE_SNORM:
|
||||
src[i] = FADD(src[i], VIMMED1(0.5f));
|
||||
dst[i] = FADD(dst[i], VIMMED1(0.5f));
|
||||
/* fallthrough */
|
||||
src[i] = FP_TO_SI(
|
||||
FMUL(src[i], VIMMED1(scale[i])),
|
||||
mSimdInt32Ty);
|
||||
dst[i] = FP_TO_SI(
|
||||
FMUL(dst[i], VIMMED1(scale[i])),
|
||||
mSimdInt32Ty);
|
||||
break;
|
||||
case SWR_TYPE_UNORM:
|
||||
src[i] = FP_TO_UI(
|
||||
FMUL(src[i], VIMMED1(scale[i])),
|
||||
|
|
@ -728,11 +732,14 @@ struct BlendJit : public Builder
|
|||
result[i] = BITCAST(result[i], mSimdFP32Ty);
|
||||
break;
|
||||
case SWR_TYPE_SNORM:
|
||||
result[i] = SHL(result[i], C(32 - info.bpc[i]));
|
||||
result[i] = ASHR(result[i], C(32 - info.bpc[i]));
|
||||
result[i] = FMUL(SI_TO_FP(result[i], mSimdFP32Ty),
|
||||
VIMMED1(1.0f / scale[i]));
|
||||
break;
|
||||
case SWR_TYPE_UNORM:
|
||||
result[i] = FMUL(UI_TO_FP(result[i], mSimdFP32Ty),
|
||||
VIMMED1(1.0f / scale[i]));
|
||||
if (info.type[i] == SWR_TYPE_SNORM)
|
||||
result[i] = FADD(result[i], VIMMED1(-0.5f));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue