From: Tom Stellard <thomas.stell...@amd.com> --- src/gallium/drivers/r600/r600_pipe.c | 3 +-- src/gallium/drivers/r600/r600_shader.c | 6 +++++- 2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index abe7ad7..c95d6df 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -549,6 +549,7 @@ static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, e case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ARRAY_ADDR: return 1; case PIPE_SHADER_CAP_SUBROUTINES: return 0; @@ -563,8 +564,6 @@ static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, e return PIPE_SHADER_IR_TGSI; } } - case PIPE_SHADER_CAP_INDIRECT_TEMP_ARRAY_ADDR: - return 0; return 0; } diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 4634c30..f9f4c9d 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -884,6 +884,7 @@ static int tgsi_declaration(struct r600_shader_ctx *ctx) break; case TGSI_FILE_CONSTANT: case TGSI_FILE_TEMPORARY: + case TGSI_FILE_TEMPORARY_ARRAY: case TGSI_FILE_SAMPLER: case TGSI_FILE_ADDRESS: break; @@ -1275,8 +1276,10 @@ static int r600_shader_from_tgsi(struct r600_screen *rscreen, ctx.file_offset[TGSI_FILE_INPUT] + ctx.info.file_max[TGSI_FILE_INPUT] + 1; } - ctx.file_offset[TGSI_FILE_TEMPORARY] = ctx.file_offset[TGSI_FILE_OUTPUT] + + ctx.file_offset[TGSI_FILE_TEMPORARY_ARRAY] = ctx.file_offset[TGSI_FILE_OUTPUT] + ctx.info.file_max[TGSI_FILE_OUTPUT] + 1; + ctx.file_offset[TGSI_FILE_TEMPORARY] = ctx.file_offset[TGSI_FILE_TEMPORARY_ARRAY] + + ctx.info.file_max[TGSI_FILE_TEMPORARY_ARRAY] + 1; /* Outside the GPR range. This will be translated to one of the * kcache banks later. */ @@ -3808,6 +3811,7 @@ static inline boolean tgsi_tex_src_requires_loading(struct r600_shader_ctx *ctx, { struct tgsi_full_instruction *inst = &ctx->parse.FullToken.FullInstruction; return (inst->Src[index].Register.File != TGSI_FILE_TEMPORARY && + inst->Src[index].Register.File != TGSI_FILE_TEMPORARY_ARRAY && inst->Src[index].Register.File != TGSI_FILE_INPUT && inst->Src[index].Register.File != TGSI_FILE_OUTPUT) || ctx->src[index].neg || ctx->src[index].abs; -- 1.7.11.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev