diff options
author | Ilia Mirkin <[email protected]> | 2015-03-17 01:02:32 -0400 |
---|---|---|
committer | Ilia Mirkin <[email protected]> | 2015-03-28 14:54:41 -0400 |
commit | 995f55a6cedfd47a2aed75178a1b0caed7059f20 (patch) | |
tree | d04dc337c527a61aaef5d90ef2fe0b93641e9ca5 /src/gallium/drivers/freedreno/a3xx | |
parent | 7fc5da8b9392042b5f8a989d2afa49ea1944f9a9 (diff) |
freedreno/a3xx: make vs-set point size work
This appears to need the A2XX version of the point list, so select it at
draw time if necessary.
Experimentally, always using the A2XX version causes hangs when PSIZE
isn't actually emitted.
Signed-off-by: Ilia Mirkin <[email protected]>
Diffstat (limited to 'src/gallium/drivers/freedreno/a3xx')
-rw-r--r-- | src/gallium/drivers/freedreno/a3xx/fd3_draw.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_draw.c b/src/gallium/drivers/freedreno/a3xx/fd3_draw.c index 179bf9ce92d..48dd8da782a 100644 --- a/src/gallium/drivers/freedreno/a3xx/fd3_draw.c +++ b/src/gallium/drivers/freedreno/a3xx/fd3_draw.c @@ -58,6 +58,7 @@ 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); @@ -77,7 +78,12 @@ draw_impl(struct fd_context *ctx, struct fd_ringbuffer *ring, 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); } |