radeonsi: add start_instance parameter to get_instance_index_for_fetch
authorMarek Olšák <marek.olsak@amd.com>
Tue, 26 Jan 2016 20:55:28 +0000 (21:55 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Sun, 21 Feb 2016 20:08:57 +0000 (21:08 +0100)
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_shader.c

index 4f4243306d8a7247d750811e72f0414d64c36394..f43d25db8657622f5263fccf7e5595bedea1976b 100644 (file)
@@ -376,7 +376,7 @@ static LLVMValueRef build_indexed_load_const(
 
 static LLVMValueRef get_instance_index_for_fetch(
        struct radeon_llvm_context *radeon_bld,
-       unsigned divisor)
+       unsigned param_start_instance, unsigned divisor)
 {
        struct si_shader_context *ctx =
                si_shader_context(&radeon_bld->soa.bld_base);
@@ -390,8 +390,8 @@ static LLVMValueRef get_instance_index_for_fetch(
                result = LLVMBuildUDiv(gallivm->builder, result,
                                lp_build_const_int32(gallivm, divisor), "");
 
-       return LLVMBuildAdd(gallivm->builder, result, LLVMGetParam(
-                       radeon_bld->main_fn, SI_PARAM_START_INSTANCE), "");
+       return LLVMBuildAdd(gallivm->builder, result,
+                           LLVMGetParam(radeon_bld->main_fn, param_start_instance), "");
 }
 
 static void declare_input_vs(
@@ -429,7 +429,9 @@ static void declare_input_vs(
        if (divisor) {
                /* Build index from instance ID, start instance and divisor */
                ctx->shader->uses_instanceid = true;
-               buffer_index = get_instance_index_for_fetch(&ctx->radeon_bld, divisor);
+               buffer_index = get_instance_index_for_fetch(&ctx->radeon_bld,
+                                                           SI_PARAM_START_INSTANCE,
+                                                           divisor);
        } else {
                /* Load the buffer index for vertices. */
                LLVMValueRef vertex_id = LLVMGetParam(ctx->radeon_bld.main_fn,