radeonsi: fix undefined left-shift into sign bit
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Fri, 13 May 2016 05:04:04 +0000 (00:04 -0500)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Wed, 15 Jun 2016 07:27:56 +0000 (09:27 +0200)
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/radeonsi/cik_sdma.c

index d8ec2a32629e96d961a714d4fe82f2f54104f346..a36bbcee3930ac3367bab9ef04dc75ff2c52c810 100644 (file)
@@ -370,12 +370,13 @@ static bool cik_sdma_copy_texture(struct si_context *sctx,
                    copy_height <= (1 << 14) &&
                    copy_depth <= (1 << 11)) {
                        struct radeon_winsys_cs *cs = sctx->b.dma.cs;
+                       uint32_t direction = linear == rdst ? 1u << 31 : 0;
 
                        r600_need_dma_space(&sctx->b, 14, &rdst->resource, &rsrc->resource);
 
                        radeon_emit(cs, CIK_SDMA_PACKET(CIK_SDMA_OPCODE_COPY,
                                                        CIK_SDMA_COPY_SUB_OPCODE_TILED_SUB_WINDOW, 0) |
-                                       ((linear == rdst) << 31));
+                                       direction);
                        radeon_emit(cs, tiled_address);
                        radeon_emit(cs, tiled_address >> 32);
                        radeon_emit(cs, tiled_x | (tiled_y << 16));