freedreno: fixes handling draw info
index_bias is undefined if index_size == 0. index bounds are undefined if index_bounds_valid == false. Reviewed-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7679>
This commit is contained in:
parent
26dcbdb8e2
commit
7e1d03f0df
|
@ -117,8 +117,8 @@ draw_impl(struct fd_context *ctx, const struct pipe_draw_info *info,
|
|||
|
||||
OUT_PKT3(ring, CP_SET_CONSTANT, 3);
|
||||
OUT_RING(ring, CP_REG(REG_A2XX_VGT_MAX_VTX_INDX));
|
||||
OUT_RING(ring, info->max_index); /* VGT_MAX_VTX_INDX */
|
||||
OUT_RING(ring, info->min_index); /* VGT_MIN_VTX_INDX */
|
||||
OUT_RING(ring, info->index_bounds_valid ? info->max_index : ~0); /* VGT_MAX_VTX_INDX */
|
||||
OUT_RING(ring, info->index_bounds_valid ? info->min_index : 0); /* VGT_MIN_VTX_INDX */
|
||||
}
|
||||
|
||||
/* binning shader will take offset from C64 */
|
||||
|
|
|
@ -67,8 +67,8 @@ draw_impl(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
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->index_bounds_valid ? add_sat(info->min_index, info->index_size ? info->index_bias : 0) : 0); /* VFD_INDEX_MIN */
|
||||
OUT_RING(ring, info->index_bounds_valid ? add_sat(info->max_index, info->index_size ? info->index_bias : 0) : ~0); /* VFD_INDEX_MAX */
|
||||
OUT_RING(ring, info->start_instance); /* VFD_INSTANCEID_OFFSET */
|
||||
OUT_RING(ring, info->index_size ? info->index_bias : emit->draw->start); /* VFD_INDEX_OFFSET */
|
||||
|
||||
|
|
|
@ -239,6 +239,7 @@ fd_blitter_clear(struct pipe_context *pctx, unsigned buffers,
|
|||
|
||||
struct pipe_draw_info info = {
|
||||
.mode = PIPE_PRIM_MAX, /* maps to DI_PT_RECTLIST */
|
||||
.index_bounds_valid = true,
|
||||
.max_index = 1,
|
||||
.instance_count = MAX2(1, pfb->layers),
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue