&ctx->constbuf[PIPE_SHADER_VERTEX]);
ir3_emit_ubos(ctx->screen, vp, vsconstobj,
&ctx->constbuf[PIPE_SHADER_VERTEX]);
- ir3_emit_immediates(ctx->screen, vp, vsconstobj);
ir3_emit_ssbo_sizes(ctx->screen, vp, vsconstobj,
&ctx->shaderbuf[PIPE_SHADER_VERTEX]);
ir3_emit_image_dims(ctx->screen, vp, vsconstobj,
&ctx->constbuf[PIPE_SHADER_FRAGMENT]);
ir3_emit_ubos(ctx->screen, fp, fsconstobj,
&ctx->constbuf[PIPE_SHADER_FRAGMENT]);
- ir3_emit_immediates(ctx->screen, fp, fsconstobj);
ir3_emit_ssbo_sizes(ctx->screen, fp, fsconstobj,
&ctx->shaderbuf[PIPE_SHADER_FRAGMENT]);
ir3_emit_image_dims(ctx->screen, fp, fsconstobj,
}
static void
-setup_stateobj(struct fd_ringbuffer *ring, struct fd6_program_state *state,
- const struct ir3_shader_key *key, bool binning_pass)
+setup_stateobj(struct fd_ringbuffer *ring, struct fd_screen *screen,
+ struct fd6_program_state *state, const struct ir3_shader_key *key,
+ bool binning_pass)
{
uint32_t pos_regid, psize_regid, color_regid[8], posz_regid;
uint32_t face_regid, coord_regid, zwcoord_regid, samp_id_regid;
OUT_PKT4(ring, REG_A6XX_GRAS_SU_DEPTH_PLANE_CNTL, 1);
OUT_RING(ring, COND(fragz, A6XX_GRAS_SU_DEPTH_PLANE_CNTL_FRAG_WRITES_Z));
+
+ ir3_emit_immediates(screen, vs, ring);
+ if (!binning_pass)
+ ir3_emit_immediates(screen, fs, ring);
}
/* emits the program state which is not part of the stateobj because of
state->stateobj = fd_ringbuffer_new_object(ctx->pipe, 0x1000);
setup_config_stateobj(state->config_stateobj, state);
- setup_stateobj(state->binning_stateobj, state, key, true);
- setup_stateobj(state->stateobj, state, key, false);
+ setup_stateobj(state->binning_stateobj, ctx->screen, state, key, true);
+ setup_stateobj(state->stateobj, ctx->screen, state, key, false);
return &state->base;
}