Mesa (master): freedreno/a5xx: Add support for clip distances and use them for userclip.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Mar 29 21:57:31 UTC 2021
Module: Mesa
Branch: master
Commit: 99838513aee4aeb100ff82fa7e2424c2d8e4f845
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=99838513aee4aeb100ff82fa7e2424c2d8e4f845
Author: Eric Anholt <eric at anholt.net>
Date: Fri Mar 26 16:28:46 2021 -0700
freedreno/a5xx: Add support for clip distances and use them for userclip.
A little low-stakes RE effort as I unwind from fighting CI all day. Comes
from diffing dEQP-VK.clipping.user_defined.clip_distance.vert.* on the
blob and comparing to a6xx behavior. (My blob doesn't do tess, so if
there are equivalent tess fields for some of these, I didn't find them)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9870>
---
src/freedreno/registers/adreno/a5xx.xml | 21 ++++-
src/gallium/drivers/freedreno/a5xx/fd5_draw.c | 1 -
src/gallium/drivers/freedreno/a5xx/fd5_emit.c | 9 --
src/gallium/drivers/freedreno/a5xx/fd5_program.c | 35 ++++++-
.../freedreno/ci/piglit-freedreno-a530-fails.txt | 103 ---------------------
src/gallium/drivers/freedreno/freedreno_screen.c | 6 +-
6 files changed, 55 insertions(+), 120 deletions(-)
diff --git a/src/freedreno/registers/adreno/a5xx.xml b/src/freedreno/registers/adreno/a5xx.xml
index e4991f270d3..aea009637aa 100644
--- a/src/freedreno/registers/adreno/a5xx.xml
+++ b/src/freedreno/registers/adreno/a5xx.xml
@@ -1812,7 +1812,11 @@ xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd">
<reg32 offset="0xe000" name="GRAS_CL_CNTL">
<bitfield name="ZERO_GB_SCALE_Z" pos="6" type="boolean"/>
</reg32>
- <reg32 offset="0xe001" name="UNKNOWN_E001"/> <!-- always 00000000? -->
+ <bitset name="a5xx_gras_xs_cl_cntl" inline="yes">
+ <bitfield name="CLIP_MASK" low="0" high="7"/>
+ <bitfield name="CULL_MASK" low="8" high="15"/>
+ </bitset>
+ <reg32 offset="0xe001" name="GRAS_VS_CL_CNTL" type="a5xx_gras_xs_cl_cntl"/>
<reg32 offset="0xe004" name="UNKNOWN_E004"/> <!-- always 00000000? -->
<reg32 offset="0xe005" name="GRAS_CNTL">
<!-- see also RB_RENDER_CONTROL0 -->
@@ -2279,7 +2283,16 @@ bit 7 for RECTLIST (clear) when z32s8 (used for clear of depth32? not set
<reg32 offset="0" name="DISABLE"/>
</array>
<reg32 offset="0xe298" name="VPC_GS_SIV_CNTL"/>
- <reg32 offset="0xe29a" name="UNKNOWN_E29A"/>
+ <reg32 offset="0xe29a" name="VPC_CLIP_CNTL">
+ <bitfield name="CLIP_MASK" low="0" high="7" type="uint"/>
+ <!-- there can be up to 8 total clip/cull distance outputs,
+ but apparenly VPC can only deal with vec4, so when there are
+ more than 4 outputs a second location needs to be programmed
+ -->
+ <bitfield name="CLIP_DIST_03_LOC" low="8" high="15" type="uint"/>
+ <bitfield name="CLIP_DIST_47_LOC" low="16" high="23" type="uint"/>
+ </reg32>
+
<reg32 offset="0xe29d" name="VPC_PACK">
<bitfield name="NUMNONPOSVAR" low="0" high="7" type="uint"/>
<!--
@@ -2374,7 +2387,9 @@ bit 7 for RECTLIST (clear) when z32s8 (used for clear of depth32? not set
<bitfield name="POLYMODE_BACK_PTYPE" low="3" high="5" type="adreno_pa_su_sc_draw"/>
<bitfield name="POLYMODE_ENABLE" pos="6" type="boolean"/>
</reg32>
- <reg32 offset="0xe389" name="UNKNOWN_E389"/>
+ <reg32 offset="0xe389" name="PC_CLIP_CNTL">
+ <bitfield name="CLIP_MASK" low="0" high="7"/>
+ </reg32>
<reg32 offset="0xe38c" name="PC_RESTART_INDEX"/>
<reg32 offset="0xe38d" name="PC_GS_LAYERED"/>
<reg32 offset="0xe38e" name="PC_GS_PARAM">
diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_draw.c b/src/gallium/drivers/freedreno/a5xx/fd5_draw.c
index 2643427b767..038519d53dd 100644
--- a/src/gallium/drivers/freedreno/a5xx/fd5_draw.c
+++ b/src/gallium/drivers/freedreno/a5xx/fd5_draw.c
@@ -86,7 +86,6 @@ fd5_draw_vbo(struct fd_context *ctx, const struct pipe_draw_info *info,
.fs = ctx->prog.fs,
.key = {
.rasterflat = ctx->rasterizer->flatshade,
- .ucp_enables = ctx->rasterizer->clip_plane_enable,
.has_per_samp = fd5_ctx->fastc_srgb || fd5_ctx->vastc_srgb,
.vastc_srgb = fd5_ctx->vastc_srgb,
.fastc_srgb = fd5_ctx->fastc_srgb,
diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_emit.c b/src/gallium/drivers/freedreno/a5xx/fd5_emit.c
index 8d75b2b3d67..62b6bcf8af4 100644
--- a/src/gallium/drivers/freedreno/a5xx/fd5_emit.c
+++ b/src/gallium/drivers/freedreno/a5xx/fd5_emit.c
@@ -1024,27 +1024,18 @@ t7 opcode: CP_WAIT_FOR_IDLE (26) (1 dwords)
OUT_PKT4(ring, REG_A5XX_TPL1_TP_FS_ROTATION_CNTL, 1);
OUT_RING(ring, 0x00000000); /* TPL1_TP_FS_ROTATION_CNTL */
- OUT_PKT4(ring, REG_A5XX_UNKNOWN_E001, 1);
- OUT_RING(ring, 0x00000000); /* UNKNOWN_E001 */
-
OUT_PKT4(ring, REG_A5XX_UNKNOWN_E004, 1);
OUT_RING(ring, 0x00000000); /* UNKNOWN_E004 */
OUT_PKT4(ring, REG_A5XX_GRAS_SU_LAYERED, 1);
OUT_RING(ring, 0x00000000); /* GRAS_SU_LAYERED */
- OUT_PKT4(ring, REG_A5XX_UNKNOWN_E29A, 1);
- OUT_RING(ring, 0x00ffff00); /* UNKNOWN_E29A */
-
OUT_PKT4(ring, REG_A5XX_VPC_SO_BUF_CNTL, 1);
OUT_RING(ring, 0x00000000); /* VPC_SO_BUF_CNTL */
OUT_PKT4(ring, REG_A5XX_VPC_SO_BUFFER_OFFSET(0), 1);
OUT_RING(ring, 0x00000000); /* UNKNOWN_E2AB */
- OUT_PKT4(ring, REG_A5XX_UNKNOWN_E389, 1);
- OUT_RING(ring, 0x00000000); /* UNKNOWN_E389 */
-
OUT_PKT4(ring, REG_A5XX_PC_GS_LAYERED, 1);
OUT_RING(ring, 0x00000000); /* PC_GS_LAYERED */
diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_program.c b/src/gallium/drivers/freedreno/a5xx/fd5_program.c
index cc70f7b9014..c0e228b2738 100644
--- a/src/gallium/drivers/freedreno/a5xx/fd5_program.c
+++ b/src/gallium/drivers/freedreno/a5xx/fd5_program.c
@@ -240,7 +240,7 @@ fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
struct stage s[MAX_STAGES];
uint32_t pos_regid, psize_regid, color_regid[8];
uint32_t face_regid, coord_regid, zwcoord_regid, samp_id_regid, samp_mask_regid;
- uint32_t ij_regid[IJ_COUNT], vertex_regid, instance_regid;
+ uint32_t ij_regid[IJ_COUNT], vertex_regid, instance_regid, clip0_regid, clip1_regid;
enum a3xx_threadsize fssz;
uint8_t psize_loc = ~0;
int i, j;
@@ -248,11 +248,15 @@ fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
setup_stages(emit, s);
bool do_streamout = (s[VS].v->shader->stream_output.num_outputs > 0);
+ uint8_t clip_mask = s[VS].v->clip_mask, cull_mask = s[VS].v->cull_mask;
+ uint8_t clip_cull_mask = clip_mask | cull_mask;
fssz = (s[FS].i->double_threadsize) ? FOUR_QUADS : TWO_QUADS;
pos_regid = ir3_find_output_regid(s[VS].v, VARYING_SLOT_POS);
psize_regid = ir3_find_output_regid(s[VS].v, VARYING_SLOT_PSIZ);
+ clip0_regid = ir3_find_output_regid(s[VS].v, VARYING_SLOT_CLIP_DIST0);
+ clip1_regid = ir3_find_output_regid(s[VS].v, VARYING_SLOT_CLIP_DIST1);
vertex_regid = ir3_find_sysval_regid(s[VS].v, SYSTEM_VALUE_VERTEX_ID_ZERO_BASE);
instance_regid = ir3_find_sysval_regid(s[VS].v, SYSTEM_VALUE_INSTANCE_ID);
@@ -378,6 +382,9 @@ fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
struct ir3_shader_linkage l = {0};
ir3_link_shaders(&l, s[VS].v, link_fs, true);
+ uint8_t clip0_loc = l.clip0_loc;
+ uint8_t clip1_loc = l.clip1_loc;
+
OUT_PKT4(ring, REG_A5XX_VPC_VAR_DISABLE(0), 4);
OUT_RING(ring, ~l.varmask[0]); /* VPC_VAR[0].DISABLE */
OUT_RING(ring, ~l.varmask[1]); /* VPC_VAR[1].DISABLE */
@@ -396,6 +403,20 @@ fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
ir3_link_add(&l, psize_regid, 0x1, l.max_loc);
}
+ /* Handle the case where clip/cull distances aren't read by the FS. Make
+ * sure to avoid adding an output with an empty writemask if the user
+ * disables all the clip distances in the API so that the slot is unused.
+ */
+ if (clip0_loc == 0xff && clip0_regid != regid(63,0) && (clip_cull_mask & 0xf) != 0) {
+ clip0_loc = l.max_loc;
+ ir3_link_add(&l, clip0_regid, clip_cull_mask & 0xf, l.max_loc);
+ }
+
+ if (clip1_loc == 0xff && clip1_regid != regid(63,0) && (clip_cull_mask >> 4) != 0) {
+ clip1_loc = l.max_loc;
+ ir3_link_add(&l, clip1_regid, clip_cull_mask >> 4, l.max_loc);
+ }
+
/* If we have stream-out, we use the full shader for binning
* pass, rather than the optimized binning pass one, so that we
* have all the varying outputs available for xfb. So streamout
@@ -624,6 +645,18 @@ fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
OUT_RING(ring, vpsrepl[i]); /* VPC_VARYING_PS_REPL[i] */
}
+ OUT_PKT4(ring, REG_A5XX_GRAS_VS_CL_CNTL, 1);
+ OUT_RING(ring, A5XX_GRAS_VS_CL_CNTL_CLIP_MASK(clip_mask) |
+ A5XX_GRAS_VS_CL_CNTL_CULL_MASK(cull_mask));
+
+ OUT_PKT4(ring, REG_A5XX_VPC_CLIP_CNTL, 1);
+ OUT_RING(ring, A5XX_VPC_CLIP_CNTL_CLIP_MASK(clip_cull_mask) |
+ A5XX_VPC_CLIP_CNTL_CLIP_DIST_03_LOC(clip0_loc) |
+ A5XX_VPC_CLIP_CNTL_CLIP_DIST_47_LOC(clip1_loc));
+
+ OUT_PKT4(ring, REG_A5XX_PC_CLIP_CNTL, 1);
+ OUT_RING(ring, A5XX_PC_CLIP_CNTL_CLIP_MASK(clip_mask));
+
if (!emit->binning_pass)
if (s[FS].instrlen)
fd5_emit_shader(ring, s[FS].v);
diff --git a/src/gallium/drivers/freedreno/ci/piglit-freedreno-a530-fails.txt b/src/gallium/drivers/freedreno/ci/piglit-freedreno-a530-fails.txt
index e14d02da737..4b4d4821960 100644
--- a/src/gallium/drivers/freedreno/ci/piglit-freedreno-a530-fails.txt
+++ b/src/gallium/drivers/freedreno/ci/piglit-freedreno-a530-fails.txt
@@ -49,7 +49,6 @@ spec@!opengl 1.0 at gl-1.0-no-op-paths,Fail
spec@!opengl 1.0 at gl-1.0-scissor-copypixels,Fail
spec@!opengl 1.0 at gl-1.0-scissor-offscreen,Fail
spec@!opengl 1.0 at gl-1.0-spot-light,Fail
-spec@!opengl 1.0 at gl-1.0-user-clip-all-planes,Fail
spec@!opengl 1.0 at rasterpos,Crash
spec@!opengl 1.1 at copypixels-sync,Fail
spec@!opengl 1.1 at copyteximage 1d,Fail
@@ -191,7 +190,6 @@ spec at arb_transform_feedback3@gl_skipcomponents2,Fail
spec at arb_transform_feedback3@gl_skipcomponents3,Fail
spec at arb_transform_feedback3@gl_skipcomponents4,Fail
spec at arb_transform_feedback_instanced@draw-auto instanced,Fail
-spec at arb_vertex_program@clip-plane-transformation arb,Fail
spec at arb_vertex_type_2_10_10_10_rev@attrib-p-type-size-match,Fail
spec at egl 1.4 at egl-copy-buffers,Crash
spec at egl 1.4 at eglterminate then unbind context,Fail
@@ -309,10 +307,6 @@ spec at ext_transform_feedback@tessellation triangles flat_last,Fail
spec at ext_transform_feedback@tessellation triangles monochrome,Fail
spec at ext_transform_feedback@tessellation triangles smooth,Fail
spec at ext_transform_feedback@tessellation triangles wireframe,Fail
-spec at glsl-1.10@execution at clipping@clip-plane-transformation clipvert_pos,Fail
-spec at glsl-1.10@execution at clipping@clip-plane-transformation fixed,Fail
-spec at glsl-1.10@execution at clipping@clip-plane-transformation pos_clipvert,Fail
-spec at glsl-1.30@execution at clipping@clip-plane-transformation pos,Fail
spec at glsl-1.30@execution at texelfetch fs sampler3d 1x129x9-98x129x9,Fail
spec at glsl-1.30@execution at texelfetch fs sampler3d 98x129x1-98x129x9,Fail
spec at glsl-1.30@execution at texelfetch fs sampler3d 98x1x9-98x129x9,Fail
@@ -353,108 +347,11 @@ spec at oes_egl_image_external_essl3@oes_egl_image_external_essl3,Crash
wgl at wgl-multi-context-single-window,Fail
wgl at wgl-multi-window-single-context,Fail
wgl at wgl-sanity,Fail
-spec at glsl-1.10@execution at interpolation@interpolation-none-gl_backcolor-flat-vertex,Fail
-spec at glsl-1.10@execution at interpolation@interpolation-none-gl_backcolor-smooth-vertex,Fail
-spec at glsl-1.10@execution at interpolation@interpolation-none-gl_backsecondarycolor-flat-vertex,Fail
-spec at glsl-1.10@execution at interpolation@interpolation-none-gl_backsecondarycolor-smooth-vertex,Fail
spec at glsl-1.10@execution at interpolation@interpolation-none-gl_frontcolor-flat-vertex,Fail
spec at glsl-1.10@execution at interpolation@interpolation-none-gl_frontcolor-smooth-vertex,Fail
-spec at glsl-1.10@execution at interpolation@interpolation-none-gl_frontsecondarycolor-flat-vertex,Fail
spec at glsl-1.10@execution at interpolation@interpolation-none-gl_frontsecondarycolor-smooth-vertex,Fail
spec at glsl-1.10@execution at interpolation@interpolation-none-other-flat-vertex,Fail
-spec at glsl-1.10@execution at interpolation@interpolation-none-other-smooth-vertex,Fail
-spec at glsl-1.20@execution at clipping@fixed-clip-enables,Fail
-spec at glsl-1.20@execution at clipping@vs-clip-vertex-const-accept,Fail
-spec at glsl-1.20@execution at clipping@vs-clip-vertex-different-from-position,Fail
-spec at glsl-1.20@execution at clipping@vs-clip-vertex-enables,Fail
-spec at glsl-1.20@execution at clipping@vs-clip-vertex-equal-to-position,Fail
-spec at glsl-1.20@execution at clipping@vs-clip-vertex-homogeneity,Fail
-spec at glsl-1.20@execution at clipping@vs-clip-vertex-primitives,Fail
spec at glsl-1.30@execution at clipping@fs-clip-distance-interpolated,Crash
-spec at glsl-1.30@execution at clipping@vs-clip-based-on-position,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-based-on-position-homogeneity,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-distance-all-planes-enabled,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-distance-bulk-assign,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-distance-const-accept,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-distance-deadcode,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-distance-enables,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-distance-implicitly-sized,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-distance-in-param,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-distance-inout-param,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-distance-out-param,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-distance-primitives,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-distance-retval,Fail
-spec at glsl-1.30@execution at clipping@vs-clip-distance-uint-index,Fail
spec at glsl-1.30@execution at fs-large-local-array-vec2,Crash
spec at glsl-1.30@execution at fs-large-local-array-vec3,Crash
spec at glsl-1.30@execution at fs-large-local-array-vec4,Crash
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_backcolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_backcolor-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_backcolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_backcolor-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_backsecondarycolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_backsecondarycolor-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_backsecondarycolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_backsecondarycolor-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_frontcolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_frontcolor-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_frontcolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_frontcolor-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_frontsecondarycolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_frontsecondarycolor-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_frontsecondarycolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-gl_frontsecondarycolor-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-other-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-other-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-other-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-flat-other-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-none-gl_backcolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-none-gl_backcolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-none-gl_backsecondarycolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-none-gl_backsecondarycolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-none-gl_frontcolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-none-gl_frontcolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-none-gl_frontsecondarycolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-none-gl_frontsecondarycolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-none-other-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-none-other-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_backcolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_backcolor-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_backcolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_backcolor-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_backsecondarycolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_backsecondarycolor-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_backsecondarycolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_backsecondarycolor-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_frontcolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_frontcolor-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_frontcolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_frontcolor-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_frontsecondarycolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_frontsecondarycolor-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_frontsecondarycolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-gl_frontsecondarycolor-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-other-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-other-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-other-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-noperspective-other-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_backcolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_backcolor-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_backcolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_backcolor-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_backsecondarycolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_backsecondarycolor-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_backsecondarycolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_backsecondarycolor-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_frontcolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_frontcolor-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_frontcolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_frontcolor-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_frontsecondarycolor-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_frontsecondarycolor-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_frontsecondarycolor-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-gl_frontsecondarycolor-smooth-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-other-flat-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-other-flat-vertex,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-other-smooth-distance,Fail
-spec at glsl-1.30@execution at interpolation@interpolation-smooth-other-smooth-vertex,Fail
diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c
index bfd497e2544..9f094a05f29 100644
--- a/src/gallium/drivers/freedreno/freedreno_screen.c
+++ b/src/gallium/drivers/freedreno/freedreno_screen.c
@@ -413,16 +413,16 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
* distances in the VS, and we don't support clip distances so that is
* always shader-based lowering in the FS.
*
- * On a4xx-a5xx, there is no HW support for clip planes, so they are
+ * On a4xx, there is no HW support for clip planes, so they are
* always lowered to clip distances. We also lack SW support for the
* HW's clip distances in HW, so we do shader-based lowering in the FS
* in the driver backend.
*
- * On a6xx, we have the HW clip distances hooked up, so we just let
+ * On a5xx-a6xx, we have the HW clip distances hooked up, so we just let
* mesa/st lower desktop GL's clip planes to clip distances in the last
* vertex shader stage.
*/
- return !is_a6xx(screen);
+ return !is_a5xx(screen) && !is_a6xx(screen);
/* Stream output. */
case PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS:
More information about the mesa-commit
mailing list