|
@@ -729,6 +729,12 @@ static int r300_packet0_check(struct radeon_cs_parser *p,
|
|
|
/* VAP_VF_MAX_VTX_INDX */
|
|
|
track->max_indx = idx_value & 0x00FFFFFFUL;
|
|
|
break;
|
|
|
+ case 0x2088:
|
|
|
+ /* VAP_ALT_NUM_VERTICES - only valid on r500 */
|
|
|
+ if (p->rdev->family < CHIP_RV515)
|
|
|
+ goto fail;
|
|
|
+ track->vap_alt_nverts = idx_value & 0xFFFFFF;
|
|
|
+ break;
|
|
|
case 0x43E4:
|
|
|
/* SC_SCISSOR1 */
|
|
|
track->maxy = ((idx_value >> 13) & 0x1FFF) + 1;
|
|
@@ -766,7 +772,6 @@ static int r300_packet0_check(struct radeon_cs_parser *p,
|
|
|
tmp = idx_value & ~(0x7 << 16);
|
|
|
tmp |= tile_flags;
|
|
|
ib[idx] = tmp;
|
|
|
-
|
|
|
i = (reg - 0x4E38) >> 2;
|
|
|
track->cb[i].pitch = idx_value & 0x3FFE;
|
|
|
switch (((idx_value >> 21) & 0xF)) {
|
|
@@ -1051,11 +1056,13 @@ static int r300_packet0_check(struct radeon_cs_parser *p,
|
|
|
break;
|
|
|
/* fallthrough do not move */
|
|
|
default:
|
|
|
- printk(KERN_ERR "Forbidden register 0x%04X in cs at %d\n",
|
|
|
- reg, idx);
|
|
|
- return -EINVAL;
|
|
|
+ goto fail;
|
|
|
}
|
|
|
return 0;
|
|
|
+fail:
|
|
|
+ printk(KERN_ERR "Forbidden register 0x%04X in cs at %d\n",
|
|
|
+ reg, idx);
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
|
|
|
static int r300_packet3_check(struct radeon_cs_parser *p,
|