nvc0: increase alignment to 256 for texture buffers on fermi
authorIlia Mirkin <imirkin@alum.mit.edu>
Wed, 1 Mar 2017 16:09:30 +0000 (11:09 -0500)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Sat, 4 Mar 2017 16:48:27 +0000 (17:48 +0100)
When binding as textures, the alignment can be 16. However when binding
as an image, the address has to be aligned to 256. (Also when binding as
an RT, but that can't happen with GL or current gallium APIs.)

Reported-by: Roy Spliet <nouveau@spliet.org>
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/gallium/drivers/nouveau/nvc0/nvc0_screen.c

index 25c60f92ce345eaf3207f91b8c1cbf0192f5a6b9..643eb4305f8b2f659463353acfd0becad8ac87c1 100644 (file)
@@ -147,7 +147,9 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
    case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
       return 256;
    case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
-      return 16; /* 256 for binding as RT, but that's not possible in GL */
+      if (class_3d < NVE4_3D_CLASS)
+         return 256; /* IMAGE bindings require alignment to 256 */
+      return 16;
    case PIPE_CAP_SHADER_BUFFER_OFFSET_ALIGNMENT:
       return 16;
    case PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT: