Example #1
0
static void
draw_impl(struct fd_context *ctx, struct fd_ringbuffer *ring,
		struct fd3_emit *emit)
{
	const struct pipe_draw_info *info = emit->info;
	enum pc_di_primtype primtype = ctx->primtypes[info->mode];

	fd3_emit_state(ctx, ring, emit);

	if (emit->dirty & (FD_DIRTY_VTXBUF | FD_DIRTY_VTXSTATE))
		fd3_emit_vertex_bufs(ring, emit);

	OUT_PKT0(ring, REG_A3XX_PC_VERTEX_REUSE_BLOCK_CNTL, 1);
	OUT_RING(ring, 0x0000000b);             /* PC_VERTEX_REUSE_BLOCK_CNTL */

	OUT_PKT0(ring, REG_A3XX_VFD_INDEX_MIN, 4);
	OUT_RING(ring, add_sat(info->min_index, info->index_bias)); /* VFD_INDEX_MIN */
	OUT_RING(ring, add_sat(info->max_index, info->index_bias)); /* VFD_INDEX_MAX */
	OUT_RING(ring, info->start_instance);   /* VFD_INSTANCEID_OFFSET */
	OUT_RING(ring, info->indexed ? info->index_bias : info->start); /* VFD_INDEX_OFFSET */

	OUT_PKT0(ring, REG_A3XX_PC_RESTART_INDEX, 1);
	OUT_RING(ring, info->primitive_restart ? /* PC_RESTART_INDEX */
			info->restart_index : 0xffffffff);

	if (ctx->rasterizer && ctx->rasterizer->point_size_per_vertex &&
		info->mode == PIPE_PRIM_POINTS)
		primtype = DI_PT_POINTLIST_A2XX;

	fd_draw_emit(ctx, ring,
			primtype,
			emit->key.binning_pass ? IGNORE_VISIBILITY : USE_VISIBILITY,
			info);
}
static void
draw_impl(struct fd_context *ctx, struct fd_ringbuffer *ring,
		struct fd3_emit *emit)
{
	const struct pipe_draw_info *info = emit->info;

	fd3_emit_state(ctx, ring, emit);

	if (emit->dirty & (FD_DIRTY_VTXBUF | FD_DIRTY_VTXSTATE))
		fd3_emit_vertex_bufs(ring, emit);

	OUT_PKT0(ring, REG_A3XX_PC_VERTEX_REUSE_BLOCK_CNTL, 1);
	OUT_RING(ring, 0x0000000b);             /* PC_VERTEX_REUSE_BLOCK_CNTL */

	OUT_PKT0(ring, REG_A3XX_VFD_INDEX_MIN, 4);
	OUT_RING(ring, add_sat(info->min_index, info->index_bias)); /* VFD_INDEX_MIN */
	OUT_RING(ring, add_sat(info->max_index, info->index_bias)); /* VFD_INDEX_MAX */
	OUT_RING(ring, info->start_instance);   /* VFD_INSTANCEID_OFFSET */
	OUT_RING(ring, info->indexed ? info->index_bias : info->start); /* VFD_INDEX_OFFSET */

	OUT_PKT0(ring, REG_A3XX_PC_RESTART_INDEX, 1);
	OUT_RING(ring, info->primitive_restart ? /* PC_RESTART_INDEX */
			info->restart_index : 0xffffffff);

	fd_draw_emit(ctx, ring,
			emit->key.binning_pass ? IGNORE_VISIBILITY : USE_VISIBILITY,
			info);
}
Example #3
0
ushort16 add_sat(ushort16 x, ushort16 y){
  ushort16 rst;
  for (int i = 0; i < 16; i++) {
    rst[i] = add_sat(x[i], y[i]);
  }
  return rst;
}
Example #4
0
ushort4 add_sat(ushort4 x, ushort4 y){
  ushort4 rst;
  for (int i = 0; i < 4; i++) {
    rst[i] = add_sat(x[i], y[i]);
  }
  return rst;
}
Example #5
0
ushort8 add_sat(ushort8 x, ushort8 y){
  ushort8 rst;
  for (int i = 0; i < 8; i++) {
    rst[i] = add_sat(x[i], y[i]);
  }
  return rst;
}
Example #6
0
ushort2 add_sat(ushort2 x, ushort2 y){
  ushort2 rst;
  for (int i = 0; i < 2; i++) {
    rst[i] = add_sat(x[i], y[i]);
  }
  return rst;
}
Example #7
0
ushort3 add_sat(ushort3 x, ushort3 y){
  ushort3 rst;
  for (int i = 0; i < 3; i++) {
    rst[i] = add_sat(x[i], y[i]);
  }
  return rst;
}
Example #8
0
char16 add_sat(char16 x, char16 y){
  char16 rst;
  for (int i = 0; i < 16; i++) {
    rst[i] = add_sat(x[i], y[i]);
  }
  return rst;
}
Example #9
0
char8 add_sat(char8 x, char8 y){
  char8 rst;
  for (int i = 0; i < 8; i++) {
    rst[i] = add_sat(x[i], y[i]);
  }
  return rst;
}
Example #10
0
char4 add_sat(char4 x, char4 y){
  char4 rst;
  for (int i = 0; i < 4; i++) {
    rst[i] = add_sat(x[i], y[i]);
  }
  return rst;
}
Example #11
0
char3 add_sat(char3 x, char3 y){
  char3 rst;
  for (int i = 0; i < 3; i++) {
    rst[i] = add_sat(x[i], y[i]);
  }
  return rst;
}
Example #12
0
char2 add_sat(char2 x, char2 y){
  char2 rst;
  for (int i = 0; i < 2; i++) {
    rst[i] = add_sat(x[i], y[i]);
  }
  return rst;
}