nouveau: always align buffers to 0x100
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 20 Jul 2015 16:47:17 +0000 (18:47 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 20 Jul 2015 16:48:27 +0000 (18:48 +0200)
Only constbufs must be aligned to 0x100, but since all buffers can be
rebinded as constant buffers they must be also aligned.

This patch prevents this behaviour by aligning everything to 256-byte
increments at buffer creation.

This fixes dmesg fails for the following piglit test:
  ext_transform_feedback-immediate-reuse-uniform-buffer -auto -fbo

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/nouveau/nouveau_buffer.c

index 23619467231cfc739177fea34d804a018a7f3d96..83d528846fd403e74495d53e6b0ebb2fa2fe7fcc 100644 (file)
@@ -40,13 +40,7 @@ static INLINE boolean
 nouveau_buffer_allocate(struct nouveau_screen *screen,
                         struct nv04_resource *buf, unsigned domain)
 {
-   uint32_t size = buf->base.width0;
-
-   if (buf->base.bind & (PIPE_BIND_CONSTANT_BUFFER |
-                         PIPE_BIND_COMPUTE_RESOURCE |
-                         PIPE_BIND_SHADER_BUFFER |
-                         PIPE_BIND_SHADER_IMAGE))
-      size = align(size, 0x100);
+   uint32_t size = align(buf->base.width0, 0x100);
 
    if (domain == NOUVEAU_BO_VRAM) {
       buf->mm = nouveau_mm_allocate(screen->mm_VRAM, size,