Skip to content
Snippets Groups Projects
  1. Jul 26, 2011
    • Ian Romanick's avatar
      mesa: Bump version to 7.11-rc3 · 7e1d9b3d
      Ian Romanick authored
      mesa-7.11-rc3
      7e1d9b3d
    • Ian Romanick's avatar
      929b3cc9
    • Emma Anholt's avatar
      i965/fs: Fix MRT drawing since the m0->m2 move for shader debug. · 7e4e5b0b
      Emma Anholt authored
      
      Reviewed-by: default avatarIan Romanick <ian.d.romanick@intel.com>
      (cherry picked from commit 3daa2d97)
      7e4e5b0b
    • Emma Anholt's avatar
      i965: Fix many of the trivial WebGL demos that broke due to IB optimization. · ba7db857
      Emma Anholt authored
      The index buffer state emit only occurred if there was an IB in place
      and we were in either a new batch or a new IB state.  But because we
      only flagged new IB state if IB state changed from the last IB state
      we calculated, we could simply never emit IB state after batchbuffer
      wraps if the first draw didn't use the IB and we didn't actually
      change the IB.
      
      Fixes piglit glx-multi-context-ib-1.
      (cherry picked from commit 818db384)
      ba7db857
    • Emma Anholt's avatar
      i965: Emit texture cache flushes on gen6 along with render cache flushes. · 35bc35a7
      Emma Anholt authored
      It turns out that internally the texture cache gets flushed in a
      couple of cases, particularly around 2D operations mixed with 3D.  In
      almost all cases one of those happens between rendering to an
      FBO-attached texture and rendering from that texture.  However, as of
      the next patch, glean tfbo (and the new fbo-flushing-2 test) would
      manage to get stale texture values because one of those flushes didn't
      occur.  The intention of this code was always to get the render cache
      cleared and ready to be used from the sampler cache (and it does on <=
      gen4), so this just catches gen5 up.
      
      This patch was also tested to fix fbo-flushing on gen7.
      (cherry picked from commit 185868c9)
      35bc35a7
    • Paul Berry's avatar
      i965: vs optimization fix: Check val.{negate,abs} in accumulator_contains() · dd3bb731
      Paul Berry authored
      
      When emitting a MAC instruction in a vertex shader, brw_vs_emit()
      calls accumulator_contains() to determine whether the accumulator
      already contains the appropriate addend; if it does, then we can avoid
      emitting an unnecessary MOV instruction.
      
      However, accumulator_contains() wasn't checking the val.negate or
      val.abs flags.  As a result, if the desired value was the negation, or
      the absolute value, of what was already in the accumulator, we would
      generate an incorrect shader.
      
      Fixes piglit test vs-refract-vec4-vec4-float.
      
      Tested on Gen5 and Gen6.
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit d92463d5)
      dd3bb731
    • Kenneth Graunke's avatar
      i965/gen7: Fix shadow sampling in the old brw_wm_emit backend. · 0167c855
      Kenneth Graunke authored
      
      On Ivybridge, the shadow comparitor goes in the first slot, rather than
      at the end.  It's not necessary to send u, v, and r.
      
      Fixes tests texturing/texdepth and glean/fbo.
      
      NOTE: This is a candidate for the 7.11 branch.
      
      Signed-off-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      (cherry picked from commit 572f6318)
      0167c855
    • Kenneth Graunke's avatar
      i965/fs: Clear result before visiting shadow comparitor and LOD info. · 8ea7989f
      Kenneth Graunke authored
      
      Commit 53c89c67 ("i965: Avoid generating
      MOVs for assignments of expressions.") added the line "this->result =
      reg_undef" all over the code.  Unfortunately, since Eric developed his
      patch before I landed Ivybridge support, he missed adding it to
      fs_visitor::emit_texture_gen7() after rebasing.
      
      Furthermore, since I developed TXD support before Eric's patch, I
      neglected to add it to the gradient handling when I rebased.
      
      Neglecting to set this causes the visitor to use this->result as storage
      rather than generating a new temporary.  These missing statements
      resulted in the same register being used to store several different
      values.
      
      Fixes the following piglit tests on Ivybridge:
      - glsl-fs-shadow2dproj.shader_test
      - glsl-fs-shadow2dproj-bias.shader_test
      
      NOTE: This is a candidate for the 7.11 branch.
      
      Signed-off-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit 156cef0f)
      8ea7989f
    • Ian Romanick's avatar
      glsl: Treat ir_dereference_array of non-var as a constant for lowering · 317389f6
      Ian Romanick authored
      
      Previously the code would just look at deref->array->type to see if it
      was a constant.  This isn't good enough because deref->array might be
      another ir_dereference_array... of a constant.  As a result,
      deref->array->type wouldn't be a constant, but
      deref->variable_referenced() would return NULL.  The unchecked NULL
      pointer would shortly lead to a segfault.
      
      Instead just look at the return of deref->variable_referenced().  If
      it's NULL, assume that either a constant or some other form of
      anonymous temporary storage is being dereferenced.
      
      This is a bit hinkey because most drivers treat constant arrays as
      uniforms, but the lowering pass treats them as temporaries.  This
      keeps the behavior of the old code, so this change isn't making things
      worse.
      
      Fixes i965 piglit:
      
          vs-temp-array-mat[234]-index-col-rd
          vs-temp-array-mat[234]-index-col-row-rd
          vs-uniform-array-mat[234]-index-col-rd
          vs-uniform-array-mat[234]-index-col-row-rd
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit 156f8533)
      317389f6
    • Ian Romanick's avatar
      i965: When emitting a src/dst read of an output, keep the swizzle and neg · 01a94f72
      Ian Romanick authored
      
      Fixes i965 piglit vs-varying-array-mat[234]-row-rd.
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit 1d3f09f1)
      01a94f72
    • Ian Romanick's avatar
      i965: When emitting a src/dst write of an output, keep the write mask · c97a20f3
      Ian Romanick authored
      
      Fixes i965 piglit:
      
          vs-varying-array-mat[234]-col-row-wr
          vs-varying-array-mat[234]-index-col-row-wr
          vs-varying-array-mat[234]-index-row-wr
          vs-varying-array-mat[234]-row-wr
          vs-varying-mat[234]-col-row-wr
          vs-varying-mat[234]-row-wr
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      Reviewed-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      (cherry picked from commit 337e2dfa)
      c97a20f3
    • Ian Romanick's avatar
      prog_optimize: Set unused regs to PROGRAM_UNDEFINED after CMP->MOV conversion · 716bcfd2
      Ian Romanick authored
      
      Leaving the unused registers with other values caused assertion
      failures and other problems in places that blindly iterate over all
      sources.
      
      brw_vs_emit.c:1381: get_src_reg: Assertion `c->regs[file][index].nr !=
      0' failed.
      
      Fixes i965 piglit:
      
          vs-uniform-array-mat[234]-col-row-rd
          vs-uniform-array-mat[234]-index-col-row-rd
          vs-uniform-array-mat[234]-index-row-rd
          vs-uniform-mat[234]-col-row-rd
      
      Reviewed-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit fbeb68e8)
      716bcfd2
    • Ian Romanick's avatar
      ir_to_mesa: Copy reladdr in src_reg(dst_reg) constructor · a75aaaaa
      Ian Romanick authored
      
      Fixes i965 piglit:
      
          vs-temp-array-mat[234]-col-row-wr
          vs-temp-array-mat[234]-index-col-row-wr
          vs-temp-array-mat[234]-index-row-wr
          vs-temp-mat[234]-col-row-wr
      
      Fixes swrast piglit:
      
          fs-temp-array-mat[234]-col-row-wr
          fs-temp-array-mat[234]-index-col-row-wr
          fs-temp-array-mat[234]-index-row-wr
          fs-temp-mat[234]-col-row-wr
          vs-temp-array-mat[234]-col-row-wr
          vs-temp-array-mat[234]-index-col-row-wr
          vs-temp-array-mat[234]-index-row-wr
          vs-temp-mat[234]-col-row-wr
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit f7cd9a85)
      a75aaaaa
    • Ian Romanick's avatar
      ir_to_mesa: Add each relative address to the previous · 3d0bb727
      Ian Romanick authored
      
      This fixes many cases of accessing arrays of matrices using
      non-constant indices at each level.
      
      Fixes i965 piglit:
      
          vs-temp-array-mat[234]-index-col-rd
          vs-temp-array-mat[234]-index-col-row-rd
          vs-temp-array-mat[234]-index-col-wr
          vs-uniform-array-mat[234]-index-col-rd
      
      Fixes swrast piglit:
      
          fs-temp-array-mat[234]-index-col-rd
          fs-temp-array-mat[234]-index-col-row-rd
          fs-temp-array-mat[234]-index-col-wr
          fs-uniform-array-mat[234]-index-col-rd
          fs-uniform-array-mat[234]-index-col-row-rd
          fs-varying-array-mat[234]-index-col-rd
          fs-varying-array-mat[234]-index-col-row-rd
          vs-temp-array-mat[234]-index-col-rd
          vs-temp-array-mat[234]-index-col-row-rd
          vs-temp-array-mat[234]-index-col-wr
          vs-uniform-array-mat[234]-index-col-rd
          vs-uniform-array-mat[234]-index-col-row-rd
          vs-varying-array-mat[234]-index-col-rd
          vs-varying-array-mat[234]-index-col-row-rd
          vs-varying-array-mat[234]-index-col-wr
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit d6e1a8f7)
      3d0bb727
    • Ian Romanick's avatar
      glsl: When lowering non-constant vector indexing, respect existing conditions · e4b60bf3
      Ian Romanick authored
      
      If the non-constant index was in the LHS of an assignment, any
      existing condititon on that assignment would be lost.
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit 601428d2)
      e4b60bf3
    • Ian Romanick's avatar
      glsl: When lowering non-constant array indexing, respect existing conditions · 47fc05cf
      Ian Romanick authored
      
      If the non-constant index was in the LHS of an assignment, any
      existing condititon on that assignment would be lost.
      
      Fixes i965 piglit:
      
          fs-temp-array-mat[234]-col-row-wr
          fs-temp-array-mat[234]-index-col-row-wr
          fs-temp-array-mat[234]-index-col-wr
          fs-temp-array-mat[234]-index-row-wr
          vs-varying-array-mat[234]-index-col-wr
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit 5f83dfe5)
      47fc05cf
    • Ian Romanick's avatar
      glsl: Rework lowering of non-constant array indexing · 45769e5d
      Ian Romanick authored
      The previous implementation could easily get tricked if the LHS of an
      assignment included a non-constant index that was "inside" another
      dereference.  For example:
      
          mat4 m[2];
          m[0][i] = vec4(0.0);
      
      Due to the way it tracked whether the array was being assigned, it
      would think that the non-constant index was in an r-value.  The new
      code fixes that by tracking l-values and r-values differently.  The
      index is also replaced by cloning the IR and replacing the index
      variable instead of the odd way it was done before.
      
      v2: Apply some simplifications suggested by Eric Anholt.  Making
      assignment_generator::rvalue be ir_dereference instead of ir_rvalue
      simplified the code a bit.
      
      Fixes i965 piglit fs-temp-array-mat[234]-index-wr and
      vs-varying-array-mat[234]-index-wr.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=34691
      
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit 1731ac30)
      
      To make bisects work, this also squashes in:
      
      glsl: Correctly return progress from lower_variable_index_to_cond_assign
      
      lower_variable_index_to_cond_assign runs until it can't make any more
      progress.  It then returns the result of the last pass which will
      always be false.  This caused the lowering loop in
      _mesa_ir_link_shader to end before doing one last round of
      lower_if_to_cond_assign.  This caused several if-statements (resulting
      from lower_variable_index_to_cond_assign) to be left in the IR.
      
      In addition to this change, lower_variable_index_to_cond_assign should
      take a flag indicating whether or not it should even generate
      if-statements.  This is easily controlled by
      switch_generator::linear_sequence_max_length.  This would generate
      much better code on architectures without any flow contol.
      
      Fixes i915 piglit regressions glsl-texcoord-array and
      glsl-fs-vec4-indexing-temp-src.
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit c1e591ee)
      45769e5d
    • Ian Romanick's avatar
      glsl: Split out part of variable_index_to_cond_assign_visitor::needs_lowering · 928137b0
      Ian Romanick authored
      
      Other code will soon need to know if an array needs lowering based
      exclusively on the storage mode.
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit d2296e78)
      928137b0
    • Ian Romanick's avatar
      glsl: Move is_array_or_matrix outside visitor class · 26adbcae
      Ian Romanick authored
      
      There's no reason for it to be there, and another class that may not
      have access to the visitor will need it soon.
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit 8d5f3cef)
      26adbcae
  2. Jul 25, 2011
  3. Jul 23, 2011
  4. Jul 21, 2011
  5. Jul 20, 2011
Loading