From 2ad637f52aa0ec6767fcec1acade4562eba815ba Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Sun, 16 Oct 2022 08:35:08 -0700 Subject: [PATCH] freedreno/a6xx: Update caps We should be doing all the 64b lowering.. I think that should be enough to get us at least glsl400. Signed-off-by: Rob Clark Part-of: --- docs/features.txt | 10 +++++----- src/freedreno/ci/freedreno-a630-fails.txt | 16 ++++++++++++++++ src/gallium/drivers/freedreno/freedreno_screen.c | 9 +++++++-- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index e37a025..4c4d86f 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -115,7 +115,7 @@ GL 4.0, GLSL 4.00 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virg GL_ARB_draw_buffers_blend DONE (freedreno, i965/gen6+, nv50, softpipe, panfrost, v3d) GL_ARB_draw_indirect DONE (freedreno, i965/gen7+, softpipe, v3d) - GL_ARB_gpu_shader5 DONE (i965/gen7+) + GL_ARB_gpu_shader5 DONE (freedreno/a6xx, i965/gen7+) - 'precise' qualifier DONE (softpipe) - Dynamically uniform sampler array indices DONE (softpipe) - Dynamically uniform UBO array indices DONE (freedreno, softpipe) @@ -128,7 +128,7 @@ GL 4.0, GLSL 4.00 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virg - Enhanced per-sample shading DONE () - Interpolation functions DONE (softpipe) - New overload resolution rules DONE (softpipe) - GL_ARB_gpu_shader_fp64 DONE (i965/gen7+, softpipe, ) + GL_ARB_gpu_shader_fp64 DONE (freedreno/a6xx, i965/gen7+, softpipe, ) GL_ARB_sample_shading DONE (freedreno/a6xx, i965/gen6+, nv50, panfrost) GL_ARB_shader_subroutine DONE (freedreno, i965/gen6+, nv50, softpipe) GL_ARB_tessellation_shader DONE (freedreno/a6xx, i965/gen7+, ) @@ -212,7 +212,7 @@ GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, r600, radeonsi, llvmpipe, zink GL 4.5, GLSL 4.50 -- all DONE: nvc0, r600, radeonsi, llvmpipe, zink - GL_ARB_ES3_1_compatibility DONE (i965/hsw+, softpipe, virgl) + GL_ARB_ES3_1_compatibility DONE (freedreno/a6xx, i965/hsw+, softpipe, virgl) GL_ARB_clip_control DONE (freedreno, i965, nv50, softpipe, virgl, lima, d3d12) GL_ARB_conditional_render_inverted DONE (freedreno, i965, nv50, softpipe, virgl, panfrost, d3d12) GL_ARB_cull_distance DONE (freedreno/a6xx, i965, nv50, softpipe, virgl) @@ -298,9 +298,9 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve GL_ARB_bindless_texture DONE (nvc0, radeonsi, zink) GL_ARB_cl_event not started GL_ARB_compute_variable_group_size DONE (freedreno/a4xx+, i965/gen7+, nvc0, radeonsi, zink) - GL_ARB_ES3_2_compatibility DONE (i965/gen8+, radeonsi, virgl, zink) + GL_ARB_ES3_2_compatibility DONE (freedreno/a6xx, i965/gen8+, radeonsi, virgl, zink) GL_ARB_fragment_shader_interlock DONE (i965, zink) - GL_ARB_gpu_shader_int64 DONE (i965/gen8+, nvc0, radeonsi, softpipe, llvmpipe, zink, d3d12) + GL_ARB_gpu_shader_int64 DONE (freedreno/a6xx, i965/gen8+, nvc0, radeonsi, softpipe, llvmpipe, zink, d3d12) GL_ARB_parallel_shader_compile DONE (freedreno, iris, radeonsi, etnaviv, zink) GL_ARB_post_depth_coverage DONE (i965, nvc0, radeonsi, llvmpipe, zink) GL_ARB_robustness_isolation not started diff --git a/src/freedreno/ci/freedreno-a630-fails.txt b/src/freedreno/ci/freedreno-a630-fails.txt index 5bb6077..396cccc 100644 --- a/src/freedreno/ci/freedreno-a630-fails.txt +++ b/src/freedreno/ci/freedreno-a630-fails.txt @@ -2,6 +2,8 @@ # Broken in VK-GL-CTS e5c45899ed7e90fb616ccd1d3c66e6eded120684 KHR-GL33.cull_distance.coverage,Fail +KHR-GL33.transform_feedback.draw_xfb_stream_instanced_test,Fail + # Lots of errors like "[279] Check failed. Received: [3,0,0,2] instead of: [5,0,0,2]" KHR-GLES31.core.geometry_shader.layered_framebuffer.depth_support,Fail @@ -64,6 +66,8 @@ shaders@point-vertex-id gl_vertexid divisor,Crash shaders@point-vertex-id gl_vertexid gl_instanceid,Crash shaders@point-vertex-id gl_vertexid gl_instanceid divisor,Crash +spec@arb_arrays_of_arrays@execution@sampler@fs-nested-struct-arrays-nonconst-nested-array,Fail + spec@arb_compute_shader@execution@border-color,Fail spec@arb_depth_buffer_float@fbo-clear-formats stencil,Fail spec@arb_depth_buffer_float@fbo-clear-formats stencil@GL_DEPTH32F_STENCIL8,Fail @@ -104,6 +108,12 @@ spec@arb_sample_shading@samplemask 4,Fail spec@arb_sample_shading@samplemask 4@noms mask_in_one,Fail spec@arb_sample_shading@samplemask 4@sample mask_in_one,Fail +# Same results w/ zink-on-tu as with freedreno: +spec@arb_sample_shading@samplemask 2 all@noms partition,Fail +spec@arb_sample_shading@samplemask 2@noms partition,Fail +spec@arb_sample_shading@samplemask 4 all@noms partition,Fail +spec@arb_sample_shading@samplemask 4@noms partition,Fail + spec@arb_shader_image_load_store@execution@image-array-out-of-bounds-access-load,Crash # These 3 fails started to happen after piglit uprev with commit @@ -138,6 +148,10 @@ spec@arb_tessellation_shader@execution@tes-no-tcs-primitiveid-instanced,Fail # error: Too many tessellation control shader atomic counters" spec@arb_tessellation_shader@execution@tes-primitiveid,Fail +# https://gitlab.freedesktop.org/mesa/mesa/-/issues/7518 +spec@arb_tessellation_shader@execution@tess-instance-id,Fail +spec@arb_tessellation_shader@execution@compatibility@tes-clip-vertex-different-from-position,Fail +spec@arb_tessellation_shader@execution@vs-tes-tessinner-tessouter-inputs-quads-dlist,Fail spec@arb_tessellation_shader@execution@tes-read-texture,Fail spec@arb_tessellation_shader@execution@tess_with_geometry,Fail spec@arb_tessellation_shader@execution@trivial-tess-gs,Fail @@ -152,6 +166,8 @@ spec@arb_tessellation_shader@execution@variable-indexing@tcs-patch-vec4-index-wr spec@arb_tessellation_shader@execution@variable-indexing@tcs-patch-vec4-swiz-index-wr,Crash spec@arb_tessellation_shader@execution@vertex-partial-write,Crash +# https://gitlab.freedesktop.org/mesa/mesa/-/issues/7516 +spec@arb_tessellation_shader@execution@variable-indexing@vs-output-array-dvec4-index-wr-before-tcs,Crash spec@arb_tessellation_shader@execution@vs-tes-max-in-out-components,Fail spec@arb_tessellation_shader@execution@vs-tes-tessinner-tessouter-inputs-quads,Fail diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c index c0d857d..cf00244 100644 --- a/src/gallium/drivers/freedreno/freedreno_screen.c +++ b/src/gallium/drivers/freedreno/freedreno_screen.c @@ -315,15 +315,20 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) * Since draw_indirect is needed sooner (gles31 and gl40 vs * gl42), hide base_instance on a5xx. :-/ */ - return is_a4xx(screen); + return is_a4xx(screen) || is_a6xx(screen); case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT: return 64; + case PIPE_CAP_INT64: + case PIPE_CAP_INT64_DIVMOD: + case PIPE_CAP_DOUBLES: + return is_ir3(screen); + case PIPE_CAP_GLSL_FEATURE_LEVEL: case PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY: if (is_a6xx(screen)) - return 330; + return 400; else if (is_ir3(screen)) return 140; else -- 2.7.4