[Mesa-dev] [pull] freedreno backports for 10.3

Rob Clark robdclark at gmail.com
Thu Oct 23 11:28:13 PDT 2014


Emil,

Here are freedreno patches from master backported to 10.3.. plus one
patch outside of freedreno ('util/u_format: add _is_alpha()')

If too much for tomorrows release, pulling in to 10.3 branch right
after the release for the next one would be nice.

According to piglit 395 fixes, 5 regressions.  The five regressions are

   spec/glsl-1.10/execution/interpolation/interpolation-none-gl_Back*

which were only accidentally passing before.  The root issue with
those is that we currently have no good way to tie FRAG shader inputs
that don't have any corresponding VERT shader output to 0,0,0,0.. so
instead they get linked to some random VERT shader output ;-)

I am still seeing some regression compared to master (some
tex-miplevel-selection tests which pass on master, but fail or
intermittent fail on 10.3 backport), but they were simply crashing
before the backport.  So freedreno is at least in much better shape
with the backport, compared to prior.  Plus, now 0ad is playable[1]
:-)

[1] http://people.freedesktop.org/~robclark/results/0ad-water2.png

BR,
-R

-----
The following changes since commit 724f71ef3905289eee7b45955243fdc7dc5f1251:

  r600g: Drop references to destroyed blend state (2014-10-22 15:39:49 +0100)

are available in the git repository at:

  https://github.com/freedreno/mesa.git freedreno-10.3

for you to fetch changes up to 749b50a699c88bd476130d1bb2974fef499dfde9:

  freedreno/a3xx: fix depth/stencil restore format (2014-10-23 08:27:24 -0400)

----------------------------------------------------------------
Ilia Mirkin (27):
      freedreno/ir3: fix FSLT/etc handling to return 0/-1 instead of 0/1.0
      freedreno/ir3: INEG operates on src0, not src1
      freedreno/ir3: add UARL support
      freedreno/ir3: negate result of USLT/etc
      freedreno/ir3: use unsigned comparison for UIF
      freedreno/ir3: add TXL support
      freedreno/ir3: fix UCMP handling
      freedreno/ir3: implement UMUL correctly
      freedreno: add default .dir-locals.el for emacs settings
      freedreno/ir3: make texture instruction construction more dynamic
      freedreno/ir3: fix TXB/TXL to actually pull the bias/lod argument
      freedreno/ir3: add TXQ support
      freedreno/ir3: add TXB2 support
      freedreno: dual-source render targets are not supported
      freedreno: instanced drawing/compute not yet supported
      freedreno/ir3: avoid fan-in sources referring to same instruction
      freedreno/ir3: add IDIV/UDIV support
      freedreno/ir3: add UMOD support, based on UDIV
      freedreno/ir3: add MOD support
      freedreno/ir3: add ISSG support
      freedreno/ir3: add UMAD support
      freedreno/ir3: make TXQ return integers, not floats
      freedreno/ir3: shadow comes before array
      freedreno/ir3: add texture offset support
      freedreno/ir3: add TXD support and expose ARB_shader_texture_lod
      freedreno/ir3: add TXF support
      freedreno: positions come out as integers, not half-integers

Rob Clark (62):
      freedreno/ir3: detect scheduler fail
      freedreno/ir3: add TXB
      freedreno/ir3: add DDX/DDY
      freedreno/ir3: bit of debug
      freedreno/ir3: fix error in bail logic
      freedreno/ir3: fix constlen with relative addressing
      freedreno/ir3: add no-copy-propagate fallback step
      freedreno: don't overflow cmdstream buffer so much
      freedreno/ir3: fix potential segfault in RA
      freedreno: update generated headers
      freedreno/a3xx: enable hw primitive-restart
      freedreno/a3xx: handle rendering to layer != 0
      freedreno: update generated headers
      freedreno/a3xx: format fixes
      util/u_format: add _is_alpha()
      freedreno/a3xx: alpha render-target shenanigans
      freedreno/ir3: catch incorrect usage of tmp-dst
      freedreno/ir3: add missing put_dst
      freedreno: "fix" problems with excessive flushes
      freedreno: update generated headers
      freedreno/a3xx: 3d/array textures
      freedreno: add DRM_CONF_SHARE_FD
      freedreno/a3xx: more texture array fixes
      freedreno/a3xx: initial texture border-color
      freedreno: fix compiler warning
      freedreno: don't advertise mirror-clamp support
      freedreno: update generated headers
      freedreno: we have more than 0 viewports!
      freedreno: turn missing caps into compile warnings
      freedreno/a3xx: add LOD_BIAS
      freedreno/a3xx: add flat interpolation mode
      freedreno/a3xx: add 32bit integer vtx formats
      freedreno/a3xx: fix border color order
      freedreno: move bind_sampler_states to per-generation
      freedreno: add texcoord clamp support to lowering
      freedreno/a3xx: add support to emulate GL_CLAMP
      freedreno/a3xx: re-emit shaders on variant change
      freedreno/lowering: fix token calculation for lowering
      freedreno: destroy transfer pool after blitter
      freedreno: max-texture-lod-bias should be 15.0f
      freedreno: update generated headers
      freedreno/a3xx: handle large shader program sizes
      freedreno/a3xx: emit all immediates in one shot
      freedreno/ir3: fix lockups with lame FRAG shaders
      freedreno/a3xx: handle VS only outputting BCOLOR
      freedreno: query fixes
      freedreno/a3xx: refactor vertex state emit
      freedreno/a3xx: refactor/optimize emit
      freedreno/ir3: optimize shader key comparision
      freedreno: inline fd_draw_emit()
      freedreno: fix layer_stride
      freedreno: update generated headers
      freedreno/ir3: large const support
      freedreno/a3xx: more layer/level fixes
      freedreno/ir3: comment + better fxn name
      freedreno/ir3: fix potential gpu lockup with kill
      freedreno/a3xx: disable early-z when we have kill's
      freedreno/ir3: add debug flag to disable cp
      freedreno: clear vs scissor
      freedreno: mark scissor state dirty when enable bit changes
      freedreno/a3xx: fix viewport state during clear
      freedreno/a3xx: fix depth/stencil restore format

 .../auxiliary/target-helpers/inline_drm_helper.h   |   2 +-
 src/gallium/auxiliary/util/u_format.c              |  17 +
 src/gallium/auxiliary/util/u_format.h              |   2 +
 src/gallium/drivers/freedreno/.dir-locals.el       |   8 +
 src/gallium/drivers/freedreno/a2xx/a2xx.xml.h      |  18 +-
 src/gallium/drivers/freedreno/a2xx/fd2_draw.c      |  13 +-
 src/gallium/drivers/freedreno/a2xx/fd2_gmem.c      |   4 +-
 src/gallium/drivers/freedreno/a2xx/fd2_program.c   |   4 +-
 src/gallium/drivers/freedreno/a2xx/fd2_texture.c   |  20 +
 src/gallium/drivers/freedreno/a3xx/a3xx.xml.h      | 170 +++-
 src/gallium/drivers/freedreno/a3xx/fd3_context.c   |  34 +
 src/gallium/drivers/freedreno/a3xx/fd3_context.h   |  54 ++
 src/gallium/drivers/freedreno/a3xx/fd3_draw.c      | 164 ++--
 src/gallium/drivers/freedreno/a3xx/fd3_emit.c      | 142 ++-
 src/gallium/drivers/freedreno/a3xx/fd3_emit.h      |  48 +-
 src/gallium/drivers/freedreno/a3xx/fd3_gmem.c      |  71 +-
 src/gallium/drivers/freedreno/a3xx/fd3_program.c   | 154 +++-
 src/gallium/drivers/freedreno/a3xx/fd3_program.h   |   5 +-
 src/gallium/drivers/freedreno/a3xx/fd3_query.c     |   4 +-
 src/gallium/drivers/freedreno/a3xx/fd3_texture.c   | 110 ++-
 src/gallium/drivers/freedreno/a3xx/fd3_texture.h   |   1 +
 src/gallium/drivers/freedreno/a3xx/fd3_util.c      |  66 +-
 src/gallium/drivers/freedreno/adreno_common.xml.h  |   9 +-
 src/gallium/drivers/freedreno/adreno_pm4.xml.h     |  12 +-
 src/gallium/drivers/freedreno/freedreno_context.c  |   8 +-
 src/gallium/drivers/freedreno/freedreno_context.h  |  34 +-
 src/gallium/drivers/freedreno/freedreno_draw.c     |  88 +-
 src/gallium/drivers/freedreno/freedreno_draw.h     |  51 +-
 src/gallium/drivers/freedreno/freedreno_gmem.c     |  71 +-
 src/gallium/drivers/freedreno/freedreno_gmem.h     |   7 +-
 src/gallium/drivers/freedreno/freedreno_lowering.c | 221 ++++-
 src/gallium/drivers/freedreno/freedreno_lowering.h |  10 +
 src/gallium/drivers/freedreno/freedreno_program.c  |   4 +-
 src/gallium/drivers/freedreno/freedreno_query_hw.c |  11 +-
 src/gallium/drivers/freedreno/freedreno_resource.c |  49 +-
 src/gallium/drivers/freedreno/freedreno_screen.c   |  72 +-
 src/gallium/drivers/freedreno/freedreno_state.c    |  14 +-
 src/gallium/drivers/freedreno/freedreno_texture.c  |  38 +-
 src/gallium/drivers/freedreno/freedreno_texture.h  |   4 +
 src/gallium/drivers/freedreno/freedreno_util.h     |  30 +-
 src/gallium/drivers/freedreno/ir3/ir3.c            |  13 +-
 src/gallium/drivers/freedreno/ir3/ir3.h            |  26 +-
 src/gallium/drivers/freedreno/ir3/ir3_compiler.c   | 990 +++++++++++++++++----
 src/gallium/drivers/freedreno/ir3/ir3_compiler.h   |   2 +-
 .../drivers/freedreno/ir3/ir3_compiler_old.c       |  16 +-
 src/gallium/drivers/freedreno/ir3/ir3_cp.c         |  12 +-
 src/gallium/drivers/freedreno/ir3/ir3_depth.c      |  16 +-
 src/gallium/drivers/freedreno/ir3/ir3_ra.c         |  19 +-
 src/gallium/drivers/freedreno/ir3/ir3_sched.c      |  57 +-
 src/gallium/drivers/freedreno/ir3/ir3_shader.c     |  56 +-
 src/gallium/drivers/freedreno/ir3/ir3_shader.h     |  70 +-
 src/gallium/targets/pipe-loader/pipe_msm.c         |  25 +-
 52 files changed, 2483 insertions(+), 663 deletions(-)
 create mode 100644 src/gallium/drivers/freedreno/.dir-locals.el


More information about the mesa-dev mailing list