summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2015-07-30 17:38:44 +0200
committerMarek Olšák <marek.olsak@amd.com>2015-07-31 16:49:17 +0200
commit30509788641a413742098f21a4ee0087b1f86e18 (patch)
tree58fb1f904204206d960304c401eb626d9bb1bcb5
parent64d3130994bde98b0be44a5c54511e376b6d994e (diff)
radeonsi: copy *8_SNORM bits exactly in resource_copy_region
Disabling the FP16 mode didn't help. If needed, we can use this trick for blits too, but not for scaled blits. + 4 piglits Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
-rw-r--r--src/gallium/drivers/radeonsi/si_blit.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c
index c892623894..61ca2a8219 100644
--- a/src/gallium/drivers/radeonsi/si_blit.c
+++ b/src/gallium/drivers/radeonsi/si_blit.c
@@ -522,7 +522,9 @@ void si_resource_copy_region(struct pipe_context *ctx,
src_box = &sbox;
src_force_level = src_level;
- } else if (!util_blitter_is_copy_supported(sctx->blitter, dst, src)) {
+ } else if (!util_blitter_is_copy_supported(sctx->blitter, dst, src) ||
+ /* also *8_SNORM has precision issues, use UNORM instead */
+ util_format_is_snorm(src->format)) {
if (util_format_is_subsampled_422(src->format)) {
src_templ.format = PIPE_FORMAT_R8G8B8A8_UINT;
dst_templ.format = PIPE_FORMAT_R8G8B8A8_UINT;