+ shader_type == PIPE_SHADER_TESS_EVAL ||
+ shader_type == PIPE_SHADER_COMPUTE);
+
+ /* update the ATI constants before rendering */
+ if (shader_type == PIPE_SHADER_FRAGMENT && st->fp->ati_fs) {
+ struct ati_fragment_shader *ati_fs = st->fp->ati_fs;
+ unsigned c;
+
+ for (c = 0; c < MAX_NUM_FRAGMENT_CONSTANTS_ATI; c++) {
+ unsigned offset = params->ParameterValueOffset[c];
+ if (ati_fs->LocalConstDef & (1 << c))
+ memcpy(params->ParameterValues + offset,
+ ati_fs->Constants[c], sizeof(GLfloat) * 4);
+ else
+ memcpy(params->ParameterValues + offset,
+ st->ctx->ATIFragmentShader.GlobalConstants[c],
+ sizeof(GLfloat) * 4);
+ }
+ }
+
+ /* Make all bindless samplers/images bound texture/image units resident in
+ * the context.
+ */
+ st_make_bound_samplers_resident(st, prog);
+ st_make_bound_images_resident(st, prog);