Ken? On Sat, Apr 22, 2017 at 6:09 PM, Grazvydas Ignotas <nota...@gmail.com> wrote:
> Fixes: 651ec926fc1 "anv: Add support for 48-bit addresses" > Tested-by: Grazvydas Ignotas <nota...@gmail.com> > > On Sun, Apr 23, 2017 at 1:55 AM, Jason Ekstrand <ja...@jlekstrand.net> > wrote: > >> This fixes rendering corruptions in DOOM. Hopefully, it will also make >> Jenkins a bit more stable as we've been seeing some random failures and >> GPU hangs ever since turning on 48bit. >> >> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100620 >> Cc: "17.1" <mesa-sta...@lists.freedesktop.org> >> --- >> src/intel/vulkan/anv_allocator.c | 16 ++++++++++++++++ >> 1 file changed, 16 insertions(+) >> >> diff --git a/src/intel/vulkan/anv_allocator.c >> b/src/intel/vulkan/anv_allocator.c >> index 78327df..28bfac4 100644 >> --- a/src/intel/vulkan/anv_allocator.c >> +++ b/src/intel/vulkan/anv_allocator.c >> @@ -994,6 +994,22 @@ anv_scratch_pool_alloc(struct anv_device *device, >> struct anv_scratch_pool *pool, >> >> anv_bo_init_new(&bo->bo, device, size); >> >> + /* Even though the Scratch base pointers in 3DSTATE_*S are 64 bits, >> they >> + * are still relative to the general state base address. When we emit >> + * STATE_BASE_ADDRESS, we set general state base address to 0 and the >> size >> + * to the maximum (1 page under 4GB). This allows us to just place >> the >> + * scratch buffers anywhere we wish in the bottom 32 bits of address >> space >> + * and just set the scratch base pointer in 3DSTATE_*S using a >> relocation. >> + * However, in order to do so, we need to ensure that the kernel does >> not >> + * place the scratch BO above the 32-bit boundary. >> + * >> + * NOTE: Technically, it can't go "anywhere" because the top page is >> off >> + * limits. However, it will never end up getting placed that high >> because >> + * the surface state and general state buffers will get placed first >> and >> + * the kernel likes to work top-down. >> + */ >> + bo->bo.flags &= ~EXEC_OBJECT_SUPPORTS_48B_ADDRESS; >> + >> /* Set the exists last because it may be read by other threads */ >> __sync_synchronize(); >> bo->exists = true; >> -- >> 2.5.0.400.gff86faf >> >> _______________________________________________ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/mesa-dev >> > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev