mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 06:30:10 +01:00
i915: Eliminate redundant CONSTANTS updates
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
41260a9bf6
commit
87641cffd9
1 changed files with 23 additions and 22 deletions
|
|
@ -538,6 +538,7 @@ i915_upload_program(struct i915_context *i915,
|
|||
{
|
||||
GLuint program_size = p->csr - p->program;
|
||||
GLuint decl_size = p->decl - p->declarations;
|
||||
GLuint nr;
|
||||
|
||||
if (p->error)
|
||||
return;
|
||||
|
|
@ -554,32 +555,32 @@ i915_upload_program(struct i915_context *i915,
|
|||
i915->state.ProgramSize = decl_size + program_size;
|
||||
}
|
||||
|
||||
/* Always seemed to get a failure if I used memcmp() to
|
||||
* shortcircuit this state upload. Needs further investigation?
|
||||
*/
|
||||
if (p->nr_constants) {
|
||||
GLuint nr = p->nr_constants;
|
||||
nr = p->nr_constants;
|
||||
if (i915->state.ConstantSize != 2 + nr*4 ||
|
||||
memcmp(i915->state.Constant + 2,
|
||||
p->constant, 4*sizeof(int)*nr)) {
|
||||
if (nr) {
|
||||
I915_ACTIVESTATE(i915, I915_UPLOAD_CONSTANTS, 1);
|
||||
I915_STATECHANGE(i915, I915_UPLOAD_CONSTANTS);
|
||||
|
||||
I915_ACTIVESTATE(i915, I915_UPLOAD_CONSTANTS, 1);
|
||||
I915_STATECHANGE(i915, I915_UPLOAD_CONSTANTS);
|
||||
i915->state.Constant[0] = _3DSTATE_PIXEL_SHADER_CONSTANTS | (nr * 4);
|
||||
i915->state.Constant[1] = (1 << nr) -1;
|
||||
|
||||
i915->state.Constant[0] = _3DSTATE_PIXEL_SHADER_CONSTANTS | ((nr) * 4);
|
||||
i915->state.Constant[1] = (1 << (nr - 1)) | ((1 << (nr - 1)) - 1);
|
||||
memcpy(&i915->state.Constant[2], p->constant, 4 * sizeof(int) * nr);
|
||||
i915->state.ConstantSize = 2 + nr * 4;
|
||||
|
||||
memcpy(&i915->state.Constant[2], p->constant, 4 * sizeof(int) * (nr));
|
||||
i915->state.ConstantSize = 2 + (nr) * 4;
|
||||
|
||||
if (0) {
|
||||
GLuint i;
|
||||
for (i = 0; i < nr; i++) {
|
||||
fprintf(stderr, "const[%d]: %f %f %f %f\n", i,
|
||||
p->constant[i][0],
|
||||
p->constant[i][1], p->constant[i][2], p->constant[i][3]);
|
||||
}
|
||||
if (0) {
|
||||
GLuint i;
|
||||
for (i = 0; i < nr; i++) {
|
||||
fprintf(stderr, "const[%d]: %f %f %f %f\n", i,
|
||||
p->constant[i][0],
|
||||
p->constant[i][1], p->constant[i][2], p->constant[i][3]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
I915_ACTIVESTATE(i915, I915_UPLOAD_CONSTANTS, 0);
|
||||
}
|
||||
}
|
||||
else {
|
||||
I915_ACTIVESTATE(i915, I915_UPLOAD_CONSTANTS, 0);
|
||||
}
|
||||
|
||||
p->on_hardware = 1;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue