Skip to content
Snippets Groups Projects
  1. Jul 13, 2018
    • Dylan Baker's avatar
      docs: Add release notes for 18.1.4 · 7f76bfcc
      Dylan Baker authored
      mesa-18.1.4
      7f76bfcc
    • Dylan Baker's avatar
      Bump version for release · 4078bff6
      Dylan Baker authored
      4078bff6
    • José María Casanova Crespo's avatar
      i965/fs: unspills shoudn't use grf127 as dest since Gen8+ · 251cf0dc
      José María Casanova Crespo authored and Dylan Baker's avatar Dylan Baker committed
      At 232ed898 "i965/fs: Register allocator
      shoudn't use grf127 for sends dest" we didn't take into account the case
      of SEND instructions that are not send_from_grf. But since Gen7+ although
      the backend still uses MRFs internally for sends they are finally
      assigned to a GRFs.
      
      In the case of unspills the backend assigns directly as source its
      destination because it is suppose to be available. So we always have a
      source-destination overlap. If the reg_allocator assigns registers that
      include the grf127 we fail the validation rule that affects Gen8+
      "r127 must not be used for return address when there is a src and dest
      overlap in send instruction."
      
      So this patch activates the grf127_send_hack_node for Gen8+ and if we
      have any register spilled we add interferences to the destination of
      the unspill operations.
      
      We also need to avoid that opt_bank_conflicts() optimization, that runs
      after the register allocation, doesn't move things around, causing the
      grf127 to be used in the condition we were avoiding.
      
      Fixes piglit test tests/spec/arb_compute_shader/linker/bug-93840.shader_test
      and some shader-db crashed because of the grf127 validation rule..
      
      v2: make sure that opt_bank_conflicts() optimization doesn't change
      the use of grf127. (Caio)
      
      Found by Caio Marcelo de Oliveira Filho
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107193
      
      
      Fixes: 232ed898 "i965/fs: Register allocator shoudn't use grf127 for sends dest"
      Cc: 18.1 <mesa-stable@lists.freedesktop.org>
      Cc: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
      Cc: Jason Ekstrand <jason@jlekstrand.net>
      
      Reviewed-by: default avatarCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
      (cherry picked from commit 62f37ee5)
      251cf0dc
  2. Jul 10, 2018
    • Adam Jackson's avatar
      glx: Don't allow glXMakeContextCurrent() with only one valid drawable · 658d4e8e
      Adam Jackson authored and Dylan Baker's avatar Dylan Baker committed
      
      Drawable and readable need to either both be None or both be non-None.
      
      Cc: <mesa-stable@lists.freedesktop.org>
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit d257ec01)
      658d4e8e
    • José María Casanova Crespo's avatar
      intel/compiler: grf127 can not be dest when src and dest overlap in send · e681c0eb
      José María Casanova Crespo authored and Dylan Baker's avatar Dylan Baker committed
      
      Implement at brw_eu_validate the restriction from Intel Broadwell PRM,
      vol 07, section "Instruction Set Reference", subsection "EUISA
      Instructions", Send Message (page 990):
      
      "r127 must not be used for return address when there is a src and
      dest overlap in send instruction."
      
      v2: Style fixes (Matt Turner)
      
      Reviewed-by: default avatarMatt Turner <mattst88@gmail.com>
      Cc: 18.1 <mesa-stable@lists.freedesktop.org>
      (cherry picked from commit 0e47ecb2)
      e681c0eb
    • José María Casanova Crespo's avatar
      i965/fs: Register allocator shoudn't use grf127 for sends dest · 9ce4c7b4
      José María Casanova Crespo authored and Dylan Baker's avatar Dylan Baker committed
      
      Since Gen8+ Intel PRM states that "r127 must not be used for return
      address when there is a src and dest overlap in send instruction."
      
      This patch implements this restriction creating new grf127_send_hack_node
      at the register allocator. This node has a fixed assignation to grf127.
      
      For vgrf that are used as destination of send messages we create node
      interfereces with the grf127_send_hack_node. So the register allocator
      will never assign to these vgrf a register that involves grf127.
      
      If dispatch_width > 8 we don't create these interferences to the because
      all instructions have node interferences between sources and destination.
      That is enough to avoid the r127 restriction.
      
      This fixes CTS tests that raised this issue as they were executed as SIMD8:
      
      dEQP-VK.spirv_assembly.instruction.graphics.8bit_storage.8struct_to_32struct.storage_buffer_*int_geom
      
      Shader-db results on Skylake:
         total instructions in shared programs: 7686798 -> 7686797 (<.01%)
         instructions in affected programs: 301 -> 300 (-0.33%)
         helped: 1
         HURT: 0
      
         total cycles in shared programs: 337092322 -> 337091919 (<.01%)
         cycles in affected programs: 22420415 -> 22420012 (<.01%)
         helped: 712
         HURT: 588
      
      Shader-db results on Broadwell:
      
         total instructions in shared programs: 7658574 -> 7658625 (<.01%)
         instructions in affected programs: 19610 -> 19661 (0.26%)
         helped: 3
         HURT: 4
      
         total cycles in shared programs: 340694553 -> 340676378 (<.01%)
         cycles in affected programs: 24724915 -> 24706740 (-0.07%)
         helped: 998
         HURT: 916
      
         total spills in shared programs: 4300 -> 4311 (0.26%)
         spills in affected programs: 333 -> 344 (3.30%)
         helped: 1
         HURT: 3
      
         total fills in shared programs: 5370 -> 5378 (0.15%)
         fills in affected programs: 274 -> 282 (2.92%)
         helped: 1
         HURT: 3
      
      v2: Avoid duplicating register classes without grf127. Let's use a node
          with a fixed assignation to grf127 and create interferences to send
          message vgrf destinations. (Eric Anholt)
      v3: Update reference to CTS VK_KHR_8bit_storage failing tests.
          (Jose Maria Casanova)
      
      Reviewed-by: default avatarJason Ekstrand <jason@jlekstrand.net>
      Cc: 18.1 <mesa-stable@lists.freedesktop.org>
      (cherry picked from commit 232ed898)
      9ce4c7b4
    • Zhaowei Yuan's avatar
      glsl: Treat sampler2DRect and sampler2DRectShadow as reserved in ES2 · a0b97410
      Zhaowei Yuan authored
      
      "sampler2DRect" and "sampler2DRectShadow" are specified as
      reserved from GLSL 1.1 and GLSL ES 1.0
      
      Signed-off-by: default avatarzhaowei yuan <zhaowei.yuan@samsung.com>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106906
      
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      Fixes: 34f7e761 ("glsl/parser: Track built-in types using the glsl_type directly")
      (cherry picked from commit 73ec4376)
      a0b97410
  3. Jul 09, 2018
  4. Jul 06, 2018
  5. Jul 05, 2018
    • Neil Roberts's avatar
      i965: Fix output register sizes when variable ranges are interleaved · 7333112e
      Neil Roberts authored and Dylan Baker's avatar Dylan Baker committed
      
      In 6f5abf31 this code was fixed to calculate the maximum size of
      an attribute in a seperate pass and then allocate the registers to
      that size. However this wasn’t taking into account ranges that overlap
      but don’t have the same starting location. For example:
      
      layout(location = 0, component = 0) out float a[4];
      layout(location = 2, component = 1) out float b[4];
      
      Previously, if ‘a’ was processed first then it would allocate a
      register of size 4 for location 0 and it wouldn’t allocate another
      register for location 2 because it would already be covered by the
      range of 0. Then if something tries to write to b[2] it would try to
      write past the end of the register allocated for ‘a’ and it would hit
      an assert.
      
      This patch changes it to scan for any overlapping ranges that start
      within each range to calculate the maximum extent and allocate that
      instead.
      
      Fixed Piglit’s arb_enhanced_layouts/execution/component-layout/
      vs-fs-array-interleave-range.shader_test
      
      Reviewed-by: default avatarCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
      Fixes: 6f5abf31 "i965: Fix output register sizes when multiple variables
             share a slot."
      (cherry picked from commit 2d5ddbe9)
      7333112e
    • Dave Airlie's avatar
      r600/sb: cleanup if_conversion iterator to be legal C++ · 83716106
      Dave Airlie authored and Dylan Baker's avatar Dylan Baker committed
      
      The current code causes:
      /usr/include/c++/8/debug/safe_iterator.h:207:
      Error: attempt to copy from a singular iterator.
      
      This is due to the iterators getting invalidated, fix the
      reverse iterator to use the return value from erase, and
      cast it properly.
      
      (used Mathias suggestion)
      Cc: <mesa-stable@lists.freedesktop.org>
      Reviewed-by: default avatarMathias Fröhlich <mathias.froehlich@web.de>
      
      (cherry picked from commit 8c51caab)
      83716106
  6. Jul 03, 2018
  7. Jun 29, 2018
  8. Jun 27, 2018
  9. Jun 26, 2018
Loading