checksum: 86d678c70b8adf27095ace1a6bbfe2d2
- path: gputest/plot3d.trace
expectations:
- # Actually incorrect rendering, it's supposed to be a mesh but
- # we're not doing polygon modes apparently.
- device: freedreno-a630
- checksum: 8ec42780bfd9df16c49d876aa2f4cb8a
+ checksum: 67a9eb692e694b11107860bbcd47d493
# Note: Requires GL4 for tess.
- path: gputest/tessmark.trace
expectations:
WRITE(REG_A6XX_VPC_UNKNOWN_9210, 0);
WRITE(REG_A6XX_VPC_UNKNOWN_9211, 0);
WRITE(REG_A6XX_VPC_UNKNOWN_9602, 0);
- WRITE(REG_A6XX_PC_POLYGON_MODE, POLYMODE6_TRIANGLES);
WRITE(REG_A6XX_PC_UNKNOWN_9E72, 0);
- WRITE(REG_A6XX_VPC_POLYGON_MODE, POLYMODE6_TRIANGLES);
WRITE(REG_A6XX_SP_TP_SAMPLE_CONFIG, 0);
/* NOTE blob seems to (mostly?) use 0xb2 for SP_TP_UNKNOWN_B309
* but this seems to kill texture gather offsets.
__fd6_setup_rasterizer_stateobj(struct fd_context *ctx,
const struct pipe_rasterizer_state *cso, bool primitive_restart)
{
- struct fd_ringbuffer *ring = fd_ringbuffer_new_object(ctx->pipe, 14 * 4);
+ struct fd_ringbuffer *ring = fd_ringbuffer_new_object(ctx->pipe, 18 * 4);
float psize_min, psize_max;
if (cso->point_size_per_vertex) {
.primitive_restart = primitive_restart,
));
+ enum a6xx_polygon_mode mode = POLYMODE6_TRIANGLES;
+ switch (cso->fill_front) {
+ case PIPE_POLYGON_MODE_POINT:
+ mode = POLYMODE6_POINTS;
+ break;
+ case PIPE_POLYGON_MODE_LINE:
+ mode = POLYMODE6_LINES;
+ break;
+ default:
+ assert(cso->fill_front == PIPE_POLYGON_MODE_FILL);
+ break;
+ }
+
+ OUT_REG(ring, A6XX_VPC_POLYGON_MODE(.mode = mode));
+ OUT_REG(ring, A6XX_PC_POLYGON_MODE(.mode = mode));
+
return ring;
}