mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
i965: Add a helper for populating constant buffers
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
d640627159
commit
9b3f917f9e
3 changed files with 33 additions and 12 deletions
|
|
@ -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++) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue