lds_base = get_tcs_in_current_patch_offset(ctx);
lds_base = LLVMBuildAdd(gallivm->builder, lds_base, lds_vertex_offset, "");
- inputs = ctx->shader->key.mono.u.ff_tcs_inputs_to_copy;
+ inputs = ctx->shader->key.mono.u.ff_tcs_inputs_to_copy[0] |
+ ((uint64_t)ctx->shader->key.mono.u.ff_tcs_inputs_to_copy[1] << 32);
while (inputs) {
unsigned i = u_bit_scan64(&inputs);
"part.tcs.ls_prolog", f);
}
fprintf(f, " part.tcs.epilog.prim_mode = %u\n", key->part.tcs.epilog.prim_mode);
- fprintf(f, " mono.u.ff_tcs_inputs_to_copy = 0x%"PRIx64"\n", key->mono.u.ff_tcs_inputs_to_copy);
+ fprintf(f, " mono.u.ff_tcs_inputs_to_copy[0] = 0x%x\n",
+ key->mono.u.ff_tcs_inputs_to_copy[0]);
+ fprintf(f, " mono.u.ff_tcs_inputs_to_copy[1] = 0x%x\n",
+ key->mono.u.ff_tcs_inputs_to_copy[1]);
break;
case PIPE_SHADER_TESS_EVAL:
uint8_t vs_fix_fetch[SI_MAX_ATTRIBS];
union {
- uint64_t ff_tcs_inputs_to_copy; /* for fixed-func TCS */
+ /* Don't use "uint64_t" in order to get 32-bit alignment. */
+ uint32_t ff_tcs_inputs_to_copy[2]; /* for fixed-func TCS */
/* When PS needs PrimID and GS is disabled. */
unsigned vs_export_prim_id:1;
} u;
key->part.tcs.epilog.tes_reads_tess_factors =
sctx->tes_shader.cso->info.reads_tess_factors;
- if (sel == sctx->fixed_func_tcs_shader.cso)
- key->mono.u.ff_tcs_inputs_to_copy = sctx->vs_shader.cso->outputs_written;
+ if (sel == sctx->fixed_func_tcs_shader.cso) {
+ uint64_t outputs_written = sctx->vs_shader.cso->outputs_written;
+
+ key->mono.u.ff_tcs_inputs_to_copy[0] = outputs_written;
+ key->mono.u.ff_tcs_inputs_to_copy[1] = outputs_written >> 32;
+ }
break;
case PIPE_SHADER_TESS_EVAL:
if (sctx->gs_shader.cso)