Browse Source

r300g: remove always_dirty flag and correct leftovers

tags/mesa-7.9-rc1
Marek Olšák 15 years ago
parent
commit
905fa3a07b
2 changed files with 5 additions and 7 deletions
  1. 0
    2
      src/gallium/drivers/r300/r300_context.h
  2. 5
    5
      src/gallium/drivers/r300/r300_emit.c

+ 0
- 2
src/gallium/drivers/r300/r300_context.h View File

unsigned size; unsigned size;
/* Whether this atom should be emitted. */ /* Whether this atom should be emitted. */
boolean dirty; boolean dirty;
/* Another dirty flag that is never automatically cleared. */
boolean always_dirty;
}; };


struct r300_blend_state { struct r300_blend_state {

+ 5
- 5
src/gallium/drivers/r300/r300_emit.c View File

if (count == 0) if (count == 0)
return; return;


BEGIN_CS(count * 5);
BEGIN_CS(size);
for(i = first; i < end; ++i) { for(i = first; i < end; ++i) {
if (constants->Constants[i].Type == RC_CONSTANT_STATE) { if (constants->Constants[i].Type == RC_CONSTANT_STATE) {
const float *data = get_shader_constant(r300, const float *data = get_shader_constant(r300,
if (count == 0) if (count == 0)
return; return;


BEGIN_CS(count * 4 + 3);
BEGIN_CS(size);
OUT_CS_REG(R500_GA_US_VECTOR_INDEX, R500_GA_US_VECTOR_INDEX_TYPE_CONST); OUT_CS_REG(R500_GA_US_VECTOR_INDEX, R500_GA_US_VECTOR_INDEX_TYPE_CONST);
OUT_CS_ONE_REG(R500_GA_US_VECTOR_DATA, count * 4); OUT_CS_ONE_REG(R500_GA_US_VECTOR_DATA, count * 4);
for(i = 0; i < count; ++i) { for(i = 0; i < count; ++i) {
if (count == 0) if (count == 0)
return; return;


BEGIN_CS(count * 7);
BEGIN_CS(size);
for(i = first; i < end; ++i) { for(i = first; i < end; ++i) {
if (constants->Constants[i].Type == RC_CONSTANT_STATE) { if (constants->Constants[i].Type == RC_CONSTANT_STATE) {
const float *data = get_shader_constant(r300, const float *data = get_shader_constant(r300,
unsigned dwords = 0; unsigned dwords = 0;


foreach(atom, &r300->atom_list) { foreach(atom, &r300->atom_list) {
if (atom->dirty || atom->always_dirty) {
if (atom->dirty) {
dwords += atom->size; dwords += atom->size;
} }
} }
struct r300_atom* atom; struct r300_atom* atom;


foreach(atom, &r300->atom_list) { foreach(atom, &r300->atom_list) {
if (atom->dirty || atom->always_dirty) {
if (atom->dirty) {
atom->emit(r300, atom->size, atom->state); atom->emit(r300, atom->size, atom->state);
atom->dirty = FALSE; atom->dirty = FALSE;
} }

Loading…
Cancel
Save