[GPU] Only apply exp_bias to RGB not alpha for k_2_10_10_10_FLOAT

k_2_10_10_10_FLOAT has 7e3 float RGB but 2-bit fixed-point alpha [0, 1],
exp_bias (exponent adjustment) should only apply to the floating-point RGB, not the fixed-point alpha
This commit is contained in:
Herman S.
2026-01-12 18:58:55 +09:00
parent 29f1c0645e
commit 529e43754a
17 changed files with 24899 additions and 23952 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+28 -6
View File
@@ -613,8 +613,18 @@ uint XeResolveEdramPixelStrideInts(XeResolveInfo resolve_info) {
pixel_1 += msaa_resolve_pixel_1;
}
}
pixel_0 *= exp_bias;
pixel_1 *= exp_bias;
// For k_2_10_10_10_FLOAT, only apply exp_bias to RGB (7e3 float), not
// alpha (2-bit fixed-point [0, 1]).
dont_flatten_xe if (resolve_info.edram_format ==
kXenosColorRenderTargetFormat_2_10_10_10_FLOAT ||
resolve_info.edram_format ==
kXenosColorRenderTargetFormat_2_10_10_10_FLOAT_AS_16_16_16_16) {
pixel_0.xyz *= exp_bias;
pixel_1.xyz *= exp_bias;
} else {
pixel_0 *= exp_bias;
pixel_1 *= exp_bias;
}
dont_flatten_xe if (resolve_info.dest_swap) {
pixel_0 = pixel_0.bgra;
pixel_1 = pixel_1.bgra;
@@ -682,10 +692,22 @@ uint XeResolveEdramPixelStrideInts(XeResolveInfo resolve_info) {
pixel_3 += msaa_resolve_pixel_3;
}
}
pixel_0 *= exp_bias;
pixel_1 *= exp_bias;
pixel_2 *= exp_bias;
pixel_3 *= exp_bias;
// For k_2_10_10_10_FLOAT, only apply exp_bias to RGB (7e3 float), not
// alpha (2-bit fixed-point [0, 1]).
dont_flatten_xe if (resolve_info.edram_format ==
kXenosColorRenderTargetFormat_2_10_10_10_FLOAT ||
resolve_info.edram_format ==
kXenosColorRenderTargetFormat_2_10_10_10_FLOAT_AS_16_16_16_16) {
pixel_0.xyz *= exp_bias;
pixel_1.xyz *= exp_bias;
pixel_2.xyz *= exp_bias;
pixel_3.xyz *= exp_bias;
} else {
pixel_0 *= exp_bias;
pixel_1 *= exp_bias;
pixel_2 *= exp_bias;
pixel_3 *= exp_bias;
}
dont_flatten_xe if (resolve_info.dest_swap) {
pixel_0 = pixel_0.bgra;
pixel_1 = pixel_1.bgra;