freedreno/ir3: support non-user_buffer consts
authorRob Clark <robclark@freedesktop.org>
Wed, 22 Jun 2016 18:45:25 +0000 (14:45 -0400)
committerRob Clark <robdclark@gmail.com>
Sat, 2 Jul 2016 12:58:50 +0000 (08:58 -0400)
Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/freedreno_screen.c
src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c

index 93b70e0884e50df3d76d5f0c016136991455a527..5255c10411d4284f1b877aebe5b135a76b2de296 100644 (file)
@@ -156,12 +156,14 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
        case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
        case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
        case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
-       case PIPE_CAP_USER_CONSTANT_BUFFERS:
        case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
        case PIPE_CAP_VERTEXID_NOBASE:
        case PIPE_CAP_STRING_MARKER:
                return 1;
 
+       case PIPE_CAP_USER_CONSTANT_BUFFERS:
+               return is_ir3(screen) ? 0 : 1;
+
        case PIPE_CAP_SHADER_STENCIL_EXPORT:
        case PIPE_CAP_TGSI_TEXCOORD:
        case PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER:
@@ -214,7 +216,7 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
                return is_a4xx(screen);
 
        case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
-               return 256;
+               return 64;
 
        case PIPE_CAP_GLSL_FEATURE_LEVEL:
                if (glsl120)
index 04c99d1db021fe215841a9e7d45d3dfb45f96eb9..5c7ad84c25064c80c60f93346ff1fa5e8681fd47 100644 (file)
@@ -181,7 +181,7 @@ compile_init(struct ir3_compiler *compiler,
                nir_print_shader(ctx->s, stdout);
        }
 
-       so->first_driver_param = so->first_immediate = ctx->s->num_uniforms;
+       so->first_driver_param = so->first_immediate = align(ctx->s->num_uniforms, 4);
 
        /* Layout of constant registers:
         *