<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW --- - Corruption with DMA ring on cayman"
href="https://bugs.freedesktop.org/show_bug.cgi?id=60802#c50">Comment # 50</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW --- - Corruption with DMA ring on cayman"
href="https://bugs.freedesktop.org/show_bug.cgi?id=60802">bug 60802</a>
from <span class="vcard"><a class="email" href="mailto:awaters1@gmail.com" title="Anthony Waters <awaters1@gmail.com>"> <span class="fn">Anthony Waters</span></a>
</span></b>
<pre>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.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>