a4xx: add noperspective interpolation support
[mesa.git] / src / gallium / drivers / freedreno / a4xx / fd4_emit.c
index ff5a6a3127111917e36b5987b48e6b7ea49fd9a3..e6848a1aecc1e882378a73cb8d0d85282921ddcd 100644 (file)
@@ -140,7 +140,7 @@ emit_const_bo(struct fd_ringbuffer *ring,
                uint32_t num, struct pipe_resource **prscs, uint32_t *offsets)
 {
        /* TODO inline this */
-       assert(dst_offset + num < v->constlen * 4);
+       assert(dst_offset + num <= v->constlen * 4);
        fd4_emit_const_bo(ring, v->type, dst_offset, num, prscs, offsets);
 }
 
@@ -437,7 +437,7 @@ fd4_emit_vertex_bufs(struct fd_ringbuffer *ring, struct fd4_emit *emit)
                        uint32_t fs = util_format_get_blocksize(pfmt);
                        uint32_t off = vb->buffer_offset + elem->src_offset;
                        uint32_t size = fd_bo_size(rsc->bo) - off;
-                       debug_assert(fmt != ~0);
+                       debug_assert(fmt != VFMT4_NONE);
 
 #ifdef DEBUG
                        /* see dEQP-GLES31.stress.vertex_attribute_binding.buffer_bounds.bind_vertex_buffer_offset_near_wrap_10
@@ -581,7 +581,7 @@ fd4_emit_state(struct fd_context *ctx, struct fd_ringbuffer *ring,
 
        if (dirty & (FD_DIRTY_ZSA | FD_DIRTY_RASTERIZER | FD_DIRTY_PROG)) {
                struct fd4_zsa_stateobj *zsa = fd4_zsa_stateobj(ctx->zsa);
-               bool fragz = fp->no_earlyz | fp->writes_pos;
+               bool fragz = fp->no_earlyz | fp->has_kill | fp->writes_pos;
                bool clamp = !ctx->rasterizer->depth_clip_near;
 
                OUT_PKT0(ring, REG_A4XX_RB_DEPTH_CONTROL, 1);
@@ -924,9 +924,6 @@ fd4_emit_restore(struct fd_batch *batch, struct fd_ringbuffer *ring)
        OUT_PKT0(ring, REG_A4XX_RB_FS_OUTPUT, 1);
        OUT_RING(ring, A4XX_RB_FS_OUTPUT_SAMPLE_MASK(0xffff));
 
-       OUT_PKT0(ring, REG_A4XX_GRAS_CLEAR_CNTL, 1);
-       OUT_RING(ring, A4XX_GRAS_CLEAR_CNTL_NOT_FASTCLEAR);
-
        OUT_PKT0(ring, REG_A4XX_GRAS_ALPHA_CONTROL, 1);
        OUT_RING(ring, 0x0);