On Mon, Feb 28, 2011 at 1:07 AM, Dave Airlie <airlied@xxxxxxxxx> wrote: > From: Dave Airlie <airlied@xxxxxxxxxx> > > This is required for NV_conditional_render and EXT_transform_feedback. Need to add this packet to evergreen_cs.c as well. Otherwise, looks good. Alex > > Signed-off-by: Dave Airlie <airlied@xxxxxxxxxx> > --- > drivers/gpu/drm/radeon/r600_cs.c | 32 ++++++++++++++++++++++++++++++++ > 1 files changed, 32 insertions(+), 0 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c > index 00f153d..0a0848f 100644 > --- a/drivers/gpu/drm/radeon/r600_cs.c > +++ b/drivers/gpu/drm/radeon/r600_cs.c > @@ -1421,6 +1421,38 @@ static int r600_packet3_check(struct radeon_cs_parser *p, > idx_value = radeon_get_ib_value(p, idx); > > switch (pkt->opcode) { > + case PACKET3_SET_PREDICATION: > + { > + int pred_op; > + int tmp; > + if (pkt->count != 1) { > + DRM_ERROR("bad SET PREDICATION\n"); > + return -EINVAL; > + } > + > + tmp = radeon_get_ib_value(p, idx + 1); > + pred_op = (tmp >> 16) & 0x7; > + > + /* for the clear predicate operation */ > + if (pred_op == 0) > + return 0; > + > + if (pred_op > 2) { > + DRM_ERROR("bad SET PREDICATION operation %d\n", pred_op); > + return -EINVAL; > + } > + > + r = r600_cs_packet_next_reloc(p, &reloc); > + if (r) { > + DRM_ERROR("bad SET PREDICATION\n"); > + return -EINVAL; > + } > + > + ib[idx + 0] = idx_value + (u32)(reloc->lobj.gpu_offset & 0xffffffff); > + ib[idx + 1] = tmp + (upper_32_bits(reloc->lobj.gpu_offset) & 0xff); > + } > + break; > + > case PACKET3_START_3D_CMDBUF: > if (p->family >= CHIP_RV770 || pkt->count) { > DRM_ERROR("bad START_3D\n"); > -- > 1.7.3.2 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel