mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 11:08:03 +02:00
a4xx: add polygon offset clamp, fix units
For some reason, in order to get all tests to pass, pretty much all hardware (across vendors) has to program in offset_units * 2. This fixes dEQP-GLES3.functional.polygon_offset.float32_displacement_with_units. While we're at it, add polygon offset clamp support. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5763>
This commit is contained in:
parent
00f9d4b1fd
commit
42c814158b
4 changed files with 7 additions and 3 deletions
|
|
@ -613,9 +613,10 @@ fd4_emit_state(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
OUT_RING(ring, rasterizer->gras_su_point_minmax);
|
||||
OUT_RING(ring, rasterizer->gras_su_point_size);
|
||||
|
||||
OUT_PKT0(ring, REG_A4XX_GRAS_SU_POLY_OFFSET_SCALE, 2);
|
||||
OUT_PKT0(ring, REG_A4XX_GRAS_SU_POLY_OFFSET_SCALE, 3);
|
||||
OUT_RING(ring, rasterizer->gras_su_poly_offset_scale);
|
||||
OUT_RING(ring, rasterizer->gras_su_poly_offset_offset);
|
||||
OUT_RING(ring, rasterizer->gras_su_poly_offset_clamp);
|
||||
|
||||
OUT_PKT0(ring, REG_A4XX_GRAS_CL_CLIP_CNTL, 1);
|
||||
OUT_RING(ring, rasterizer->gras_cl_clip_cntl);
|
||||
|
|
|
|||
|
|
@ -71,7 +71,9 @@ fd4_rasterizer_state_create(struct pipe_context *pctx,
|
|||
so->gras_su_poly_offset_scale =
|
||||
A4XX_GRAS_SU_POLY_OFFSET_SCALE(cso->offset_scale);
|
||||
so->gras_su_poly_offset_offset =
|
||||
A4XX_GRAS_SU_POLY_OFFSET_OFFSET(cso->offset_units);
|
||||
A4XX_GRAS_SU_POLY_OFFSET_OFFSET(cso->offset_units * 2.0f);
|
||||
so->gras_su_poly_offset_clamp =
|
||||
A4XX_GRAS_SU_POLY_OFFSET_CLAMP(cso->offset_clamp);
|
||||
|
||||
so->gras_su_mode_control =
|
||||
A4XX_GRAS_SU_MODE_CONTROL_LINEHALFWIDTH(cso->line_width/2.0);
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ struct fd4_rasterizer_stateobj {
|
|||
uint32_t gras_su_point_size;
|
||||
uint32_t gras_su_poly_offset_scale;
|
||||
uint32_t gras_su_poly_offset_offset;
|
||||
uint32_t gras_su_poly_offset_clamp;
|
||||
|
||||
uint32_t gras_su_mode_control;
|
||||
uint32_t gras_cl_clip_cntl;
|
||||
|
|
|
|||
|
|
@ -263,7 +263,7 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
return is_a3xx(screen) || is_a4xx(screen);
|
||||
|
||||
case PIPE_CAP_POLYGON_OFFSET_CLAMP:
|
||||
return is_a5xx(screen) || is_a6xx(screen);
|
||||
return is_a4xx(screen) || is_a5xx(screen) || is_a6xx(screen);
|
||||
|
||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||
if (is_a3xx(screen)) return 16;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue