<div dir="ltr"><div dir="ltr">On Wed, Sep 11, 2024 at 10:19 AM Jocelyn Falempe <<a href="mailto:jfalempe@redhat.com">jfalempe@redhat.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 06/09/2024 21:36, James Jones wrote:<br>
> Right, there are 3 iterations of block linear tiling actually. NV50 does <br>
> support scanout of block linear surfaces. All block-linear-capable GPUs <br>
> do. The 3 generations are:<br>
> <br>
> NV5x/G8x/GTXXX line: Original block size.<br>
> GFXXX(nvc0 I believe in nouveau terms)-GV100: double the block height I <br>
> believe.<br>
> GTXXX+: Same block size, but the layout within a block is subtly <br>
> different, at least as visible in CPU mappings.<br>
> <br>
<br>
I'm looking at how to check for specific chip in nouveau, and fix the <br>
tiling for other cards than Turing.<br>
It looks like in most case nouveau uses device->info.chipset, with <br>
hardcoded hex value. so for nvc0+ I should check device->info.chipset >= <br>
0xc0 ?<br>
<br>
chipset < c0 : block_height 4, "old layout"<br>
chipset >= c0 : block_height 8, "old layout"<br>
chispet >= ?? : block_height 8, "new layout"<br>
<br>
For testing, I have at hand a GTX1650 (Turing) and an old Geforce <br>
8800GTS (Tesla?), so it's a NV92, and still uses this nv50+ code ?<br></blockquote><div><br></div><div><a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c#n2399">https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c#n2399</a><br></div><div><br></div><div>So probably >= 0x160</div><div><br></div><div>There should also be a device->card_type which is an enum that you can use too, depending on what you have available? Set here:</div><div><br></div><div><a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c#n3177">https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c#n3177</a><br></div><div><br></div><div>Once you have a patch tested, ideally someone with the hardware should test on a >= fermi && < turing card.</div><div><br></div><div>Hope this helps,</div><div><br></div><div>  -ilia</div></div></div>