if (params && params->NumParameters) {
const uint paramBytes = params->NumParameters * sizeof(GLfloat) * 4;
+ /* Update the constants which come from fixed-function state, such as
+ * transformation matrices, fog factors, etc. The rest of the values in
+ * the parameters list are explicitly set by the user with glUniform,
+ * glProgramParameter(), etc.
+ */
_mesa_load_state_parameters(st->ctx, params);
/* We always need to get a new buffer, to keep the drivers simple and
st->pipe->set_constant_buffer(st->pipe, shader_type, 0, *cbuf);
}
- else {
+ else if (*cbuf) {
st->constants.tracked_state[shader_type].dirty.mesa = 0x0;
+
+ pipe_resource_reference(cbuf, NULL);
+ st->pipe->set_constant_buffer(st->pipe, shader_type, 0, NULL);
}
}