Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>tags/17.3-branchpoint
| @@ -227,9 +227,9 @@ brw_upload_constant_buffer(struct brw_context *brw) | |||
| GLuint offset = brw->curbe.wm_start * 16; | |||
| /* BRW_NEW_FS_PROG_DATA | _NEW_PROGRAM_CONSTANTS: copy uniform values */ | |||
| for (i = 0; i < brw->wm.base.prog_data->nr_params; i++) { | |||
| buf[offset + i] = *brw->wm.base.prog_data->param[i]; | |||
| } | |||
| brw_populate_constant_data(brw, fp, brw->wm.base.prog_data, &buf[offset], | |||
| brw->wm.base.prog_data->param, | |||
| brw->wm.base.prog_data->nr_params); | |||
| } | |||
| /* clipper constants */ | |||
| @@ -268,9 +268,9 @@ brw_upload_constant_buffer(struct brw_context *brw) | |||
| GLuint offset = brw->curbe.vs_start * 16; | |||
| /* BRW_NEW_VS_PROG_DATA | _NEW_PROGRAM_CONSTANTS: copy uniform values */ | |||
| for (i = 0; i < brw->vs.base.prog_data->nr_params; i++) { | |||
| buf[offset + i] = *brw->vs.base.prog_data->param[i]; | |||
| } | |||
| brw_populate_constant_data(brw, vp, brw->vs.base.prog_data, &buf[offset], | |||
| brw->vs.base.prog_data->param, | |||
| brw->vs.base.prog_data->nr_params); | |||
| } | |||
| if (0) { | |||
| @@ -235,6 +235,13 @@ void brw_emit_sampler_state(struct brw_context *brw, | |||
| /* gen6_constant_state.c */ | |||
| void | |||
| brw_populate_constant_data(struct brw_context *brw, | |||
| const struct gl_program *prog, | |||
| const struct brw_stage_prog_data *prog_data, | |||
| void *dst, | |||
| const union gl_constant_value **param, | |||
| unsigned nr_params); | |||
| void | |||
| brw_upload_pull_constants(struct brw_context *brw, | |||
| GLbitfield64 brw_new_constbuf, | |||
| const struct gl_program *prog, | |||
| @@ -28,6 +28,20 @@ | |||
| #include "intel_buffer_objects.h" | |||
| #include "program/prog_parameter.h" | |||
| void | |||
| brw_populate_constant_data(struct brw_context *brw, | |||
| const struct gl_program *prog, | |||
| const struct brw_stage_prog_data *prog_data, | |||
| void *void_dst, | |||
| const union gl_constant_value **param, | |||
| unsigned nr_params) | |||
| { | |||
| gl_constant_value *dst = void_dst; | |||
| for (unsigned i = 0; i < nr_params; i++) | |||
| dst[i] = *param[i]; | |||
| } | |||
| /** | |||
| * Creates a streamed BO containing the push constants for the VS or GS on | |||
| * gen6+. | |||
| @@ -82,9 +96,9 @@ gen6_upload_push_constants(struct brw_context *brw, | |||
| * side effect of dereferencing uniforms, so _NEW_PROGRAM_CONSTANTS | |||
| * wouldn't be set for them. | |||
| */ | |||
| for (i = 0; i < prog_data->nr_params; i++) { | |||
| param[i] = *prog_data->param[i]; | |||
| } | |||
| brw_populate_constant_data(brw, prog, prog_data, param, | |||
| prog_data->param, | |||
| prog_data->nr_params); | |||
| if (0) { | |||
| fprintf(stderr, "%s constants:\n", | |||
| @@ -169,9 +183,9 @@ brw_upload_pull_constants(struct brw_context *brw, | |||
| STATIC_ASSERT(sizeof(gl_constant_value) == sizeof(float)); | |||
| for (i = 0; i < prog_data->nr_pull_params; i++) { | |||
| constants[i] = *prog_data->pull_param[i]; | |||
| } | |||
| brw_populate_constant_data(brw, prog, prog_data, constants, | |||
| prog_data->pull_param, | |||
| prog_data->nr_pull_params); | |||
| if (0) { | |||
| for (i = 0; i < ALIGN(prog_data->nr_pull_params, 4) / 4; i++) { | |||