[Bug 60802] Corruption with DMA ring on cayman

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Mar 14 16:33:25 PDT 2013


https://bugs.freedesktop.org/show_bug.cgi?id=60802

--- Comment #50 from Anthony Waters <awaters1 at gmail.com> ---
I believe I have the source of the bug, it appears that there is a special case
for Caymen GPUs that isn't handled in the DMA code path.  In evergreen_state.c
within the method evergreen_create_sampler_view_custom there is the chunk of
code

    /* 128 bit formats require tile type = 1 */
    if (rscreen->chip_class == CAYMAN) {
        if (util_format_get_blocksize(pipe_format) >= 16)
            non_disp_tiling = 1;
    }

however, within evergreen_dma_copy_tile in the same source file no such code
exists.  I tested whether this was the case or not by placing the lines of code

        if (util_format_get_blocksize(dst->format) >= 16) {
            printf("Caymen non disp tiling skipping dma tile\n");
            return FALSE;
        }

before the call to evergreen_dma_copy_tile in evergreen_dma_blit, and the
corruption no longer appeared. (having this checks skips the DMA path for this
case and goes through the normal path, which would be
evergreen_create_sampler_view_custom I believe)

I'm not sure which bits in the DMA packet control this setting.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20130314/ea81bb07/attachment.html>


More information about the dri-devel mailing list