1. 13 Jan, 2021 1 commit
    • Danylo Piliaiev's avatar
      turnip: implement indirect dispatch · 5331b1d9
      Danylo Piliaiev authored
      Vulkan guarantees only 4 byte alignment of offset for vkCmdDrawIndirect,
      while CP_LOAD_STATE.EXT_SRC_ADDR requires 16 byte alignment which
      makes us copy indirect parameters to a correctly aligned buffer.
      Blob does essentially the same but emits indirect CP_LOAD_STATE
      with src = SS6_UBO and EXT_SRC_ADDR = 0xe0000, and only for a
      first dispatch.
      Signed-off-by: Danylo Piliaiev's avatarDanylo Piliaiev <dpiliaiev@igalia.com>
      Part-of: <mesa/mesa!8444>
  2. 06 Jan, 2021 2 commits
    • Emma Anholt's avatar
      freedreno: Disable UBWC on z24s8 on a630. · 1633c973
      Emma Anholt authored
      Stencil texture sampling (such as what we have to do for BlitFramebuffer)
      is broken with UBWC enabled.  We can't just take the
      fd_resource_uncompress() path, because that's a blit just like
      Fixes failure in dEQP-GLES3.functional.fbo.msaa.2_samples.stencil_index8,
      but also the uncaught rendering fails of 4_samples.stencil_index8 and
      Prior to "911ce374 freedreno/a6xx: Fix MSAA clear" we would usually
      pass and sometimes flake fail on this test occasionally, thus it being
      listed as a flake (though the rendering was actually broken).  Since that
      commit, though, we consistently fail on a pixel of the broken rendering,
      and thus this was brought to my attention by the #freedreno-ci channel
      Rob took a look at the performance impact of this, and the worst was maybe
      up to .5% fps hit on trex.
      Part-of: <!8319>
    • Danylo Piliaiev's avatar
      freedreno: Enable GLSL 3.30, updating us to GL 3.3 contexts · 2b29ec7c
      Danylo Piliaiev authored
      All necessary features are already supported.
      GL33 CTS failures:
       KHR-GL33.texture_swizzle.smoke - timeouts, passes otherwise
       KHR-GL33.cull_distance.coverage - see
        fix is not in the public repo yet.
      Signed-off-by: Danylo Piliaiev's avatarDanylo Piliaiev <dpiliaiev@igalia.com>
      Part-of: <!8270>
  3. 29 Dec, 2020 1 commit
    • Emma Anholt's avatar
      freedreno: Enable GLSL 1.50, updating us to GL 3.2 contexts. · 02328637
      Emma Anholt authored
      We have been advertising 3.1, which waffle has issues creating contexts
      for, causing coverage (and performance!) issues in piglit.  We should
      support all the necessary features already.
      Some new failures are caught by the 3.2 CTS, but they look like they're
      existing issues simply not covered by the minimal GL 3.0 CTS.
      Fixes: #3037
      Part-of: <!8255>
  4. 23 Dec, 2020 1 commit
    • Emma Anholt's avatar
      ci/deqp: Upgrade the runner, enable junit output. · 302b4f77
      Emma Anholt authored
      I moved QPA-to-XML conversion to the runner, so Mesa CI (and developers!)
      don't need to do quite so much in bash.  I also made it clean up caselist
      .qpa files since nobody ever wants them and we deleted them anyway.  This
      cleans up a ton of the job log output.
      Additionally, I added a subcommend to turn the .csv into a junit output
      that we can expose to gitlab.  Now, the pipeline's status page will report
      the failed testcases, and the "detail" button will give you a link to the
      .XML to view for the failure.  (We don't report all testcases because it's
      too much load for the gitlab server).  Note that this will 404 for the
      LAVA runners for now, as they don't retain artifacts in gitlab (the plan
      is to eventually have them minio upload the artifacts).
      This uprev also includes a deqp output parsing fix, resulting in us
      catching a couple more failures in some drivers.
      Reviewed-by: Christian Gmeiner's avatarChristian Gmeiner <christian.gmeiner@gmail.com>
      Part-of: <!8206>
  5. 17 Dec, 2020 1 commit
  6. 08 Dec, 2020 1 commit
  7. 03 Dec, 2020 1 commit
  8. 19 Nov, 2020 1 commit
  9. 18 Nov, 2020 1 commit
  10. 16 Nov, 2020 1 commit
    • Emma Anholt's avatar
      freedreno+turnip: Upload large shader constants as a UBO. · 1f440533
      Emma Anholt authored
      Right now if the shader indirects on some large constant array, we see NIR
      load_consts (usually from the const file) of its contents into general
      registers, then indirection on the GPRs.  This often results in register
      allocation failures, as it's easy to go beyond the ~256 dwords of
      registers per invocation.
      By moving the large constants to a UBO, we can load an arbitrary number of
      them.  They also can be theoretically moved to the constant reg file (~2k
      dwords), though you're unlikely to hit this path without an indirect load
      on your large constant, and we don't yet let UBO indirect loads get moved
      to constant regs.
      This possibly won't work out right if we have 16-bit load_constants, but
      without other MRs in flight we won't see 16-bit temps to be lowered to
      This allows 2 kerbal-space-program shaders to compile that previously
      would fail, and fixes the new dEQP-VK and -GLES2 tests I wrote that
      dynamically index a 40-element temporary array of float/vec2/vec3/vec4
      with constant element initializers.
      Closes: #2789
      Part-of: <!5810>
  11. 11 Nov, 2020 1 commit
    • Emma Anholt's avatar
      ci: Bump deqp to current vulkan-cts-1.2.4 · c189d385
      Emma Anholt authored
      I want the new version to show the fix in the fd-largeconsts branch (and
      make sure the pass keeps working, and make sure other drivers get around
      to fixing the issue).  While I'm here, cherry-pick in the VK test along
      with the GLES one, and also the fix for clip_three on ARMs.
      Since the VK and GL test lists were changing, I took the opportunity to
      reset freedreno xfails lists to just the tests that are being run with the
      CTS uprev, and increase its coverage to 1/10th of the CTS across two
      boards (since we just freed up a bunch of runtime with the grouped gles
      "other" job).
      For panfrost, I didn't spend the time characterizing the t720 fragment_ops
      flakes like I did for the deqp-runner change.  Given that the random
      behavior changes between CTS versions, it doesn't seem to be worth the
      time to do so.
      Reviewed-by: Tomeu Vizoso's avatarTomeu Vizoso <tomeu.vizoso@collabora.com>
      Part-of: <!6971>
  12. 06 Nov, 2020 1 commit
    • Emma Anholt's avatar
      ci/deqp: Switch to a new dEQP runner written in Rust. · bf29daa1
      Emma Anholt authored
      I found the C++ runner hard to develop on, and we had stability issues and
      outstanding feature needs that made me want something I felt good about
      hacking on.  Thus, Rewrite It In Rust of the deqp runner.
      The new runner includes:
      - Skip lists don't reshuffle the test list.
      - Known-flake handling without resorting to skip lists (fixing our main CI
        reliability issue on a3xx right now).
      - Per-thread Vulkan shader caches should speed up VK CI runtime.
      - Tracking of crashes separate from fails (so we can see progress on that
      - Logging of deqp stderr spam (particularly assertion failures!) in the CI
      - Integrated QPA filtering so we don't have bash perf issues for it.
      - Logging of what caselist to go look at for a given error report (in red,
        so it's easier to find in your CI log).
      - The code is 1/3 unit tests, and easy to extend for more coverage.
      - Non-LAVA CI runs create a failures.csv in artifacts that you can check
        in as your deqp-*-fails.txt file.
      - Test runtime is included in results.csv so you can debug how to speed up
        your CI job.
      - Pretty summary at the end of the run of slow/flaky/failed tests.
      Since this is a new runner with a different RNG, the test groups are
      shuffled one more time.  This seems to result in some panfrost T720
      stability issues (See its new deqp-panfrost-t720-flakes.txt), and one new
      flake in freedreno a630.
      Reviewed-by: Tomeu Vizoso's avatarTomeu Vizoso <tomeu.vizoso@collabora.com>
      Part-of: <!7434>
  13. 23 Oct, 2020 1 commit
  14. 01 Sep, 2020 3 commits
  15. 24 Aug, 2020 1 commit
    • Rob Clark's avatar
      freedreno: handle case of shadowing current render target · 1fa43a4a
      Rob Clark authored
      If you have a sequence where there is a single buffer associated with
      the current render target, and then you end up shadowing it on the 3d
      pipe (u_blitter), because of how we swap the new shadow and rsc before
      the back-blit, you could end up confusing things into thinking that
      the blitters framebuffer state is the same as the current framebuffer
      Re-organizing the sequence to swap after the blit is complicated when
      also having to deal with CPU memcpy blit path, and the batch/rsc
      accounting.  So instead just detect this case and flush if we need to.
      Cc: mesa-stable@lists.freedesktop.org
      Signed-off-by: Rob Clark's avatarRob Clark <robdclark@chromium.org>
      Part-of: <!6434>
  16. 03 Aug, 2020 1 commit
  17. 24 Jul, 2020 1 commit
    • Connor Abbott's avatar
      tu: Enable vertex & fragment stores & atomics · 9e596cc2
      Connor Abbott authored
      Note that there are some extra tess fails, but they're probably
      unrelated to the actual feature. There were also some xfails that were
      created as part of an earlier attempt to enable the feature which were
      fixed in the meantime, so remove them.
      Part-of: <!5738>
  18. 18 Jul, 2020 1 commit
    • Emma Anholt's avatar
      freedreno/ir3: Fix duplicated fine derivatives instructions. · 3d7d5d22
      Emma Anholt authored
      legalize_block() can get run multiple times, which I didn't notice when
      adding fine derivs support.  Other instruction clones change things such
      that the legalization won't trigger again, but that didn't apply to the
      DS.PP legalization.  To keep someone else from tripping over this, split
      the one-shot legalization out of the iterative sync flag application.
      Fixes failures in dEQP-VK.glsl.derivate.dfdxfine.*
      Closes: #3198
      Part-of: <!5699>
  19. 09 Jul, 2020 1 commit
  20. 06 Jul, 2020 1 commit
    • Connor Abbott's avatar
      tu: Rewrite variable lowering · 9aec89ea
      Connor Abbott authored
      Don't lower to offsets, instead use nir_lower_explicit_io here and
      use actual pointers for UBO's and SSBO's. This makes
      KHR_variable_pointers trivial. This also fixes asserts with shared
      variables, which are now supposed to be lowered with
      Part-of: <!5684>
  21. 19 Jun, 2020 1 commit
    • Emma Anholt's avatar
      ci: Bump vulkan CTS to · 6ee80d8e
      Emma Anholt authored
      Looks like it fixes some potentially important VK test bugs.  But also, it
      fixes the GLES31 SSBO layout tests to not be so excessively large, so we
      can run them in a reasonable time now.  Note that a630 fail list is reset,
      since the test list has changed and so we end up with a different subset
      of tests being run.  Interestingly, in the process the semaphore tests are
      now reporting "NotSupported (Exporting and importing semaphore type not
      supported at vktSynchronizationSignalOrderTests.cpp:513)" where they
      weren't before.
      Reviewed-by: Samuel Pitoiset's avatarSamuel Pitoiset <samuel.pitoiset@gmail.com>
      Part-of: <!5554>
  22. 18 Jun, 2020 2 commits
  23. 12 Jun, 2020 1 commit
    • Jonathan Marek's avatar
      turnip: add layered 3D path clear for CmdClearAttachments · 72d7df40
      Jonathan Marek authored
      This fixes cases where the 3D path is used with layered rendering.
      Fixes dEQP-VK.renderpass.suballocation.multisample_resolve.layers* failures
      Note the blob's 3D fallback path behaves differently, and uses the
      framebuffer information to clear each layer individually (changing the MRT
      state each time). But that's not possible in all cases, and the blob fails
      to clear properly in dEQP-VK.geometry.layered.*.secondary_cmd_buffer cases.
      So this clear path is not based on the blob's behavior.
      Signed-off-by: Jonathan Marek's avatarJonathan Marek <jonathan@marek.ca>
      Part-of: <!5426>
  24. 10 Jun, 2020 2 commits
    • Emma Anholt's avatar
      ci: Leave a note as to what might be going on with a test. · cc13ffff
      Emma Anholt authored
      fails pretty strangely (given that we're passing everything else) and
      there's an old VK-GL-CTS bug open about this test, and it's suspicious
      that all the ARM drivers seem to have trouble with it.  I tried dropping
      to -O0 on guilding that file in the CTS and it didn't help, though.
      Part-of: <!5419>
    • Emma Anholt's avatar
      freedreno/a6xx: Fix clip_halfz support. · d5e993af
      Emma Anholt authored
      Same bit as on other gens, apparently it just got missed on this one.
      Part-of: <!5419>
  25. 09 Jun, 2020 2 commits
  26. 06 Feb, 2020 1 commit
  27. 13 Sep, 2019 2 commits
  28. 12 Sep, 2019 1 commit
    • Emma Anholt's avatar
      freedreno: Introduce gitlab-based CI. · 6f0dc087
      Emma Anholt authored
      Since freedreno's kernel and GPU reset seem to be totally solid, we
      don't need to have the complexity of the LAVA setup that panfrost has.
      Instead, we can register some boards as shared gitlab runners and have
      the jobs run out of a docker container just like we do for llvmpipe.
      Just make sure that the DRI device node is passed through to the
      containers in the gitlab config ('devices = ["/dev/dri"]' under
      If a runner fails (networking dies, kernel panic, etc.) it'll take out
      one build but the rest can keep going since gitlab-runner is what
      pulls jobs.  Since the runner pulls jobs, it also means that they can
      live behind firewalls instead of needing some public address to be
      accessed by gitlab.fd.o.
      For now, enable it just on db410c (A307) and cheza (A630) as those are
      the hardware that I have plenty of.  A307 is only testing GLES2 since
      running all of GLES3 takes too long for the number of boards I've
      brought up.
      Acked-by: Rob Clark's avatarRob Clark <robdclark@chromium.org>
      Acked-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>