r300-gallium: Fix hardlock when no colors or textures are present.
This commit is contained in:
parent
7620b3943b
commit
a56020fe17
|
@ -211,7 +211,6 @@ static void r300_update_rs_block(struct r300_context* r300)
|
||||||
rs->ip[0] |= R500_RS_COL_FMT(R300_RS_COL_FMT_0001);
|
rs->ip[0] |= R500_RS_COL_FMT(R300_RS_COL_FMT_0001);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set up at least one texture pointer or RS will not be happy. */
|
|
||||||
if (tex_count == 0) {
|
if (tex_count == 0) {
|
||||||
rs->ip[0] |=
|
rs->ip[0] |=
|
||||||
R500_RS_SEL_S(R500_RS_IP_PTR_K0) |
|
R500_RS_SEL_S(R500_RS_IP_PTR_K0) |
|
||||||
|
@ -220,15 +219,20 @@ static void r300_update_rs_block(struct r300_context* r300)
|
||||||
R500_RS_SEL_Q(R500_RS_IP_PTR_K1);
|
R500_RS_SEL_Q(R500_RS_IP_PTR_K1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Rasterize at least one color, or bad things happen. */
|
||||||
|
if ((col_count == 0) && (tex_count == 0)) {
|
||||||
|
col_count++;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < tex_count; i++) {
|
for (i = 0; i < tex_count; i++) {
|
||||||
rs->inst[i] |= R500_RS_INST_TEX_ID(i) | R500_RS_INST_TEX_CN_WRITE |
|
rs->inst[i] |= R500_RS_INST_TEX_ID(i) |
|
||||||
R500_RS_INST_TEX_ADDR(fp_offset);
|
R500_RS_INST_TEX_CN_WRITE | R500_RS_INST_TEX_ADDR(fp_offset);
|
||||||
fp_offset++;
|
fp_offset++;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < col_count; i++) {
|
for (i = 0; i < col_count; i++) {
|
||||||
rs->inst[i] |= R500_RS_INST_COL_ID(i) | R500_RS_INST_COL_CN_WRITE |
|
rs->inst[i] |= R500_RS_INST_COL_ID(i) |
|
||||||
R500_RS_INST_COL_ADDR(fp_offset);
|
R500_RS_INST_COL_CN_WRITE | R500_RS_INST_COL_ADDR(fp_offset);
|
||||||
fp_offset++;
|
fp_offset++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -268,15 +272,20 @@ static void r300_update_rs_block(struct r300_context* r300)
|
||||||
R300_RS_SEL_Q(R300_RS_SEL_K1);
|
R300_RS_SEL_Q(R300_RS_SEL_K1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Rasterize at least one color, or bad things happen. */
|
||||||
|
if ((col_count == 0) && (tex_count == 0)) {
|
||||||
|
col_count++;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < tex_count; i++) {
|
for (i = 0; i < tex_count; i++) {
|
||||||
rs->inst[i] |= R300_RS_INST_TEX_ID(i) | R300_RS_INST_TEX_CN_WRITE |
|
rs->inst[i] |= R300_RS_INST_TEX_ID(i) |
|
||||||
R300_RS_INST_TEX_ADDR(fp_offset);
|
R300_RS_INST_TEX_CN_WRITE | R300_RS_INST_TEX_ADDR(fp_offset);
|
||||||
fp_offset++;
|
fp_offset++;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < col_count; i++) {
|
for (i = 0; i < col_count; i++) {
|
||||||
rs->inst[i] |= R300_RS_INST_COL_ID(i) | R300_RS_INST_COL_CN_WRITE |
|
rs->inst[i] |= R300_RS_INST_COL_ID(i) |
|
||||||
R300_RS_INST_COL_ADDR(fp_offset);
|
R300_RS_INST_COL_CN_WRITE | R300_RS_INST_COL_ADDR(fp_offset);
|
||||||
fp_offset++;
|
fp_offset++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue