1. 14 Apr, 2012 7 commits
  2. 13 Apr, 2012 4 commits
  3. 14 Apr, 2012 4 commits
  4. 13 Apr, 2012 25 commits
    • Ben Skeggs's avatar
      nv30: import new driver for GeForce FX/6/7 chipsets, and Quadro variants · a2fc42b8
      Ben Skeggs authored
      The primary motivation for this rewrite was to have a maintainable driver
      going forward, as nvfx was quite horrible in a lot of ways.
      
      The driver is heavily based on the design of the nv50/nvc0 3d drivers we
      already have, and uses the same common buffer/fence code.  It also passes
      a HEAP more piglit tests than nvfx did, supports a couple more features,
      and a few more to come still probably.
      
      The CPU footprint of this driver is far far less than nvfx, and translates
      into far greater framerates in a lot of applications (unless you're using
      a CPU that's way way newer than the GPUs of these generations....)
      
      Basically, we once again have a maintained driver for these chipsets \o/
      
      Feel free to report bugs now!
      a2fc42b8
    • Christoph Bumiller's avatar
      nouveau: switch to libdrm_nouveau-2.0 · 6d1cdec3
      Christoph Bumiller authored and Ben Skeggs's avatar Ben Skeggs committed
      6d1cdec3
    • Christoph Bumiller's avatar
      nvc0: remove obsolete nvc0_push2.c · 3c7872f3
      Christoph Bumiller authored and Ben Skeggs's avatar Ben Skeggs committed
      Slower version of nvc0_push.c, was only used to ascertain that
      bugs were not the new version's fault.
      3c7872f3
    • Christoph Bumiller's avatar
      nouveau: remove automatic buffer migration heuristics · a3fee8fc
      Christoph Bumiller authored and Ben Skeggs's avatar Ben Skeggs committed
      a3fee8fc
    • Ben Skeggs's avatar
      nvfx: completely remove this driver (GeForce FX/6/7) · 66c7dc56
      Ben Skeggs authored
      
      
      This driver hasn't been maintained properly for a very long time, and for
      many very good reasons.  It's horrible.
      
      A new driver supporting these chipsets will appear with the commits that
      port vieux/nv50/nvc0 to libdrm_nouveau-2.0.
      Signed-off-by: Ben Skeggs's avatarBen Skeggs <bskeggs@redhat.com>
      66c7dc56
    • Ben Skeggs's avatar
      nouveau: rework and simplify nv04/nv05 driver a bit · f3d8bd3f
      Ben Skeggs authored
      TEXTURED_TRIANGLE and MULTITEX_TRIANGLE are both a bit special in that if
      you use any other graph object in the meantime they'll forget their state
      and spew a lovely METHOD_CNT error at you when you try to draw.
      
      The pre-newlib driver has a flush_notify() hook which does this state
      re-emit, and a number of random workarounds like extra flushes and state
      dirtying after various operations to solve this issue.
      
      I'm taking a slightly different approach to things instead, which has the
      nice side-effect of removing the divergent code-paths for ttri/mtri, the
      flush/dirty workarounds and the need for flush_notify.  Also gives a few
      FPS boost in OA, yay.
      f3d8bd3f
    • Ben Skeggs's avatar
      nouveau/vieux: switch to libdrm_nouveau-2.0 · 2e47d01c
      Ben Skeggs authored
      2e47d01c
    • Dave Airlie's avatar
      7308b6e7
    • Dave Airlie's avatar
      gallium: document dual source blending restrictions on gallium · 1f2b5394
      Dave Airlie authored
      
      
      As per Brian's suggestion, document the restrictions on dual src blending.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      1f2b5394
    • Dave Airlie's avatar
      r600g: initial r600 dual src blending support · d1cc87c0
      Dave Airlie authored
      
      
      survives piglit with no regressions on rv610/evergreen
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      d1cc87c0
    • Dave Airlie's avatar
      softpipe: add dual source blending support · 4b1c3b92
      Dave Airlie authored
      
      
      This adds support for a single dual source blending MRT to softpipe.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      4b1c3b92
    • Dave Airlie's avatar
      util: add dual blend helper function (v2) · c59d32d1
      Dave Airlie authored
      
      
      This is just a function to tell if a certain blend mode requires dual sources.
      
      v2: move to inlines as per Brian's suggestion
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      c59d32d1
    • Dave Airlie's avatar
      st/mesa: add ARB_blend_func_extended support to state tracker. · a21df965
      Dave Airlie authored
      
      
      This adds the blend mode mapping, it also uses the var->index in the
      glsl to tgsi convertor - this is the other half of my using 4 in the GLSL
      compiler.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      a21df965
    • Dave Airlie's avatar
      gallium: rename DUAL_SOURCE_BLEND cap to MAX_DUAL_SOURCE_RENDER_TARGETS · 0d29fb01
      Dave Airlie authored
      
      
      Though I don't think we'll ever expose > 1.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      0d29fb01
    • Dave Airlie's avatar
      glsl: add support for ARB_blend_func_extended (v3) · 1256a5dc
      Dave Airlie authored
      
      
      This adds index support to the GLSL compiler.
      
      I'm not 100% sure of my approach here, esp without how output ordering
      happens wrt location, index pairs, in the "mark" function.
      
      Since current hw doesn't ever have a location > 0 with an index > 0,
      we don't have to work out if the output ordering the hw requires is
      location, index, location, index or location, location, index, index.
      But we have no hw to know, so punt on it for now.
      
      v2: index requires layout - catch and error
          setup explicit index properly.
      
      v3: drop idx_offset stuff, assume index follow location
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      1256a5dc
    • Dave Airlie's avatar
      mesa: add support for ARB_blend_func_extended (v4) · f8cf7993
      Dave Airlie authored
      
      
      Add implementations of the two API functions,
      Add a new strings to uint mapping for index bindings
      Add the blending mode validation for SRC1 + SRC_ALPHA_SATURATE
      Add get for MAX_DUAL_SOURCE_DRAW_BUFFERS
      
      v2:
      Add check in valid_to_render to address case in spec ERRORS.
      
      v3:
      Add index to ir.h so this patch compiles on its own
      fixup comment
      
      v4: fixup Brian's comments
      
      The GLSL patch will setup the indices.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      f8cf7993
    • Tom Stellard's avatar
      radeonsi: initial WIP SI code · a75c6163
      Tom Stellard authored
      
      
      This commit adds initial support for acceleration
      on SI chips.  egltri is starting to work.
      
      The SI/R600 llvm backend is currently included in mesa
      but that may change in the future.
      
      The plan is to write a single gallium driver and
      use gallium to support X acceleration.
      
      This commit contains patches from:
      Tom Stellard <thomas.stellard@amd.com>
      Michel Dänzer <michel.daenzer@amd.com>
      Alex Deucher <alexander.deucher@amd.com>
      Vadim Girlin <vadimgirlin@gmail.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      
      The following commits were squashed in:
      
      ======================================================================
      
      radeonsi: Remove unused winsys pointer
      
      This was removed from r600g in commit:
      
      commit 96d88293
      Author: Marek Olšák <maraeo@gmail.com>
      Date:   Fri Feb 17 01:49:49 2012 +0100
      
          gallium: remove unused winsys pointers in pipe_screen and pipe_context
      
          A winsys is already a private object of a driver.
      
      ======================================================================
      
      radeonsi: Copy color clamping CAPs from r600
      
      Not sure if the values of these CAPS are correct for radeonsi, but the
      same changed were made to r600g in commit:
      
      commit bc1c8369
      Author: Marek Olšák <maraeo@gmail.com>
      Date:   Mon Jan 23 03:11:17 2012 +0100
      
          st/mesa: do vertex and fragment color clamping in shaders
      
          For ARB_color_buffer_float. Most hardware can't do it and st/mesa is
          the perfect place for a fallback.
          The exceptions are:
          - r500 (vertex clamp only)
          - nv50 (both)
          - nvc0 (both)
          - softpipe (both)
      
          We also have to take into account that r300 can do CLAMPED vertex colors only,
          while r600 can do UNCLAMPED vertex colors only. The difference can be expressed
          with the two new CAPs.
      
      ======================================================================
      
      radeonsi: Remove PIPE_CAP_OUTPUT_READ
      
      This CAP was dropped in commit:
      
      commit 04e32400
      Author: Marek Olšák <maraeo@gmail.com>
      Date:   Thu Feb 23 23:44:36 2012 +0100
      
          gallium: remove PIPE_SHADER_CAP_OUTPUT_READ
      
          r600g is the only driver which has made use of it. The reason the CAP was
          added was to fix some piglit tests when the GLSL pass lower_output_reads
          didn't exist.
      
          However, not removing output reads breaks the fallback for glClampColorARB,
          which assumes outputs are not readable. The fix would be non-trivial
          and my personal preference is to remove the CAP, considering that reading
          outputs is uncommon and that we can now use lower_output_reads to fix
          the issue that the CAP was supposed to workaround in the first place.
      
      ======================================================================
      
      radeonsi: Add missing parameters to rws->buffer_get_tiling() call
      
      This was changed in commit:
      
      commit c0c979ee
      
      
      Author: Jerome Glisse <jglisse@redhat.com>
      Date:   Mon Jan 30 17:22:13 2012 -0500
      
          r600g: add support for common surface allocator for tiling v13
      
          Tiled surface have all kind of alignment constraint that needs to
          be met. Instead of having all this code duplicated btw ddx and
          mesa use common code in libdrm_radeon this also ensure that both
          ddx and mesa compute those alignment in the same way.
      
          v2 fix evergreen
          v3 fix compressed texture and workaround cube texture issue by
             disabling 2D array mode for cubemap (need to check if r7xx and
             newer are also affected by the issue)
          v4 fix texture array
          v5 fix evergreen and newer, split surface values computation from
             mipmap tree generation so that we can get them directly from the
             ddx
          v6 final fix to evergreen tile split value
          v7 fix mipmap offset to avoid to use random value, use color view
             depth view to address different layer as hardware is doing some
             magic rotation depending on the layer
          v8 fix COLOR_VIEW on r6xx for linear array mode, use COLOR_VIEW on
             evergreen, align bytes per pixel to a multiple of a dword
          v9 fix handling of stencil on evergreen, half fix for compressed
             texture
          v10 fix evergreen compressed texture proper support for stencil
              tile split. Fix stencil issue when array mode was clear by
              the kernel, always program stencil bo. On evergreen depth
              buffer bo need to be big enough to hold depth buffer + stencil
              buffer as even with stencil disabled things get written there.
          v11 rebase on top of mesa, fix pitch issue with 1d surface on evergreen,
              old ddx overestimate those. Fix linear case when pitch*height < 64.
              Fix r300g.
          v12 Fix linear case when pitch*height < 64 for old path, adapt to
              libdrm API change
          v13 add libdrm check
      Signed-off-by: default avatarJerome Glisse <jglisse@redhat.com>
      
      ======================================================================
      
      radeonsi: Remove PIPE_TRANSFER_MAP_PERMANENTLY
      
      This was removed in commit:
      
      commit 62f44f67
      Author: Marek Olšák <maraeo@gmail.com>
      Date:   Mon Mar 5 13:45:00 2012 +0100
      
          Revert "gallium: add flag PIPE_TRANSFER_MAP_PERMANENTLY"
      
          This reverts commit 09500863.
      
          It was decided to refactor the transfer API instead of adding workarounds
          to address the performance issues.
      
      ======================================================================
      
      radeonsi: Handle PIPE_VIDEO_CAP_PREFERED_FORMAT.
      
      Reintroduced in commit 9d9afcb5.
      
      ======================================================================
      
      radeonsi: nuke the fallback for vertex and fragment color clamping
      
      Ported from r600g commit c2b800cf.
      
      ======================================================================
      
      radeonsi: don't expose transform_feedback2 without kernel support
      
      Ported from r600g commit 15146fd1.
      
      ======================================================================
      
      radeonsi: Handle PIPE_CAP_GLSL_FEATURE_LEVEL.
      
      Ported from r600g part of commit 171be755.
      
      ======================================================================
      
      radeonsi: set minimum point size to 1.0 for non-sprite non-aa points.
      
      Ported from r600g commit f183cc9c.
      
      ======================================================================
      
      radeonsi: rework and consolidate stencilref state setting.
      
      Ported from r600g commit a2361946.
      
      ======================================================================
      
      radeonsi: cleanup setting DB_SHADER_CONTROL.
      
      Ported from r600g commit 3d061caa.
      
      ======================================================================
      
      radeonsi: Get rid of register masks.
      
      Ported from r600g commits
      3d061caa..9344ab38.
      
      ======================================================================
      
      radeonsi: get rid of r600_context_reg.
      
      Ported from r600g commits
      9344ab38..bed20f02.
      
      ======================================================================
      
      radeonsi: Fix regression from 'Get rid of register masks'.
      
      ======================================================================
      
      radeonsi: optimize r600_resource_va.
      
      Ported from r600g commit 669d8766.
      
      ======================================================================
      
      radeonsi: remove u8,u16,u32,u64 types.
      
      Ported from r600g commit 78293b99.
      
      ======================================================================
      
      radeonsi: merge r600_context with r600_pipe_context.
      
      Ported from r600g commit e4340c19.
      
      ======================================================================
      
      radeonsi: Miscellaneous context cleanups.
      
      Ported from r600g commits
      e4340c19..621e0db7.
      
      ======================================================================
      
      radeonsi: add a new simple API for state emission.
      
      Ported from r600g commits
      621e0db7..f6614056.
      
      ======================================================================
      
      radeonsi: Also remove sbu_flags member of struct r600_reg.
      
      Requires using sid.h instead of r600d.h for the new CP_COHER_CNTL definitions,
      so some code needs to be disabled for now.
      
      ======================================================================
      
      radeonsi: Miscellaneous simplifications.
      
      Ported from r600g commits 38bf2763 and
      b0337b67.
      
      ======================================================================
      
      radeonsi: Handle PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION.
      
      Ported from commit 8b4f7b06.
      
      ======================================================================
      
      radeonsi: Use a fake reloc to sleep for fences.
      
      Ported from r600g commit 8cd03b93.
      
      ======================================================================
      
      radeonsi: adapt to get_query_result interface change.
      
      Ported from r600g commit 4445e170.
      a75c6163
    • Dylan Noblesmith's avatar
      st/vega: silence enum cast warnings · e55cf485
      Dylan Noblesmith authored
      
      
      clang warns on these:
      
      stroker.c:626:19: warning: implicit conversion from enumeration
      type 'VGPathCommand' to different enumeration type 'VGPathSegment'
      [-Wconversion]
      
      No change in the underlying value.
      Reviewed-by: Brian Paul's avatarBrian Paul <brianp@vmware.com>
      e55cf485
    • Dylan Noblesmith's avatar
      i965: fix typo · dd32df38
      Dylan Noblesmith authored
      
      
      Noticed by clang:
      
      brw_wm_surface_state.c:330:30: warning: initializer overrides prior
      initialization of this subobject [-Winitializer-overrides]
            [MESA_FORMAT_Z24_S8] = 0,
                                   ^
      brw_wm_surface_state.c:326:30: note: previous initialization is here
            [MESA_FORMAT_Z24_S8] = 0,
                                   ^
      
      No functionality change, since the array is declared static so
      it was zero-initialized by default.
      Reviewed-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      Reviewed-by: default avatarChad Versace <chad.versace@linux.intel.com>
      dd32df38
    • Dylan Noblesmith's avatar
      mesa: fix truncated value warning · 52d021d4
      Dylan Noblesmith authored
      
      
      Silences a clang warning:
      
      format_pack.c:2546:30: warning: implicit conversion from 'int' to
      'GLubyte' (aka 'unsigned char') changes value from 65535 to 255
      [-Wconstant-conversion]
                     d[i] = d[i] ? 0xffff : 0x0;
                                 ~ ^~~~~~
      Reviewed-by: Brian Paul's avatarBrian Paul <brianp@vmware.com>
      52d021d4
    • Dylan Noblesmith's avatar
      mesa: don't cast away const · 75fe7d19
      Dylan Noblesmith authored
      
      Reviewed-by: Brian Paul's avatarBrian Paul <brianp@vmware.com>
      75fe7d19
    • Dylan Noblesmith's avatar
      egl-static: fix printf warning · 2bb91274
      Dylan Noblesmith authored
      
      
      Noticed by clang:
      
      egl_st.c:57:50: warning: field precision should have type 'int',
      but argument has type 'size_t' (aka 'unsigned long') [-Wformat]
            ret = util_snprintf(path, sizeof(path), "%.*s/%s" UTIL_DL_EXT,
                                                     ~~^~
      
      NOTE: This is a candidate for the 8.0 branch.
      Reviewed-by: Brian Paul's avatarBrian Paul <brianp@vmware.com>
      2bb91274
    • Dylan Noblesmith's avatar
      st/vega: fix uninitialized values · 6a491b57
      Dylan Noblesmith authored
      
      
      C still treats array arguments exactly like pointer arguments.
      By sheer coincidence, this still worked fine on 64-bit
      machines where 2 * sizeof(float) == sizeof(void*), but not
      on 32-bit.
      
      Noticed by clang:
      
      text.c:76:51: warning: sizeof on array function parameter will
      return size of 'const VGfloat *' (aka 'const float *') instead of
      'const VGfloat [2]' [-Wsizeof-array-argument]
         memcpy(glyph->glyph_origin, glyphOrigin, sizeof(glyphOrigin));
      
      NOTE: This is a candidate for the 8.0 branch.
      Reviewed-by: Brian Paul's avatarBrian Paul <brianp@vmware.com>
      6a491b57
    • Dylan Noblesmith's avatar
      egl: fix uninitialized values · 071501a6
      Dylan Noblesmith authored
      
      
      Noticed by clang:
      
      eglimage.c:48:28: warning: argument to 'sizeof' in 'memset' call is
      the same expression as the destination; did you mean to dereference
      it? [-Wsizeof-pointer-memaccess]
         memset(attrs, 0, sizeof(attrs));
                ~~~~~            ^~~~~
      
      NOTE: This is a candidate for the 8.0 branch.
      Reviewed-by: Brian Paul's avatarBrian Paul <brianp@vmware.com>
      071501a6
    • Dylan Noblesmith's avatar
      util: fix uninitialized table · 520521e3
      Dylan Noblesmith authored
      
      
      Most of the 256 values in the 'generic_to_slot' table were supposed to
      be initialized with the default value 0xff, but were left at zero
      (from CALLOC_STRUCT()) instead.
      
      Noticed by clang:
      
      u_linkage.h:60:31: warning: argument to 'sizeof' in 'memset' call is the same expression as the destination;
            did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
         memset(table, 0xff, sizeof(table));
                ~~~~~               ^~~~~
      
      Also fix a signed/unsigned comparison and a comment typo here.
      
      NOTE: This is a candidate for the 8.0 branch.
      Reviewed-by: Brian Paul's avatarBrian Paul <brianp@vmware.com>
      520521e3