Find a file
Jose Maria Casanova Crespo 9ce4c7b414 i965/fs: Register allocator shoudn't use grf127 for sends dest
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: Jason Ekstrand <jason@jlekstrand.net>
Cc: 18.1 <mesa-stable@lists.freedesktop.org>
(cherry picked from commit 232ed89802)
2018-07-10 09:30:32 -07:00
bin cherry-ignore: add a2f5292c82 2018-06-27 08:31:24 -07:00
build-support configure: commit test files 2017-10-16 16:32:43 -07:00
docs docs: Add SHA256 sums to notes for 18.1.3 2018-06-29 11:00:48 -07:00
doxygen doxygen: Plumb through gallium/ to automated documentation 2016-05-30 17:53:45 +01:00
include radeonsi: add support for VegaM 2018-04-18 14:45:33 -04:00
m4 m4: Use older autoconf 2.63 compatible ax_check_compile_flag. 2017-09-01 16:30:40 -07:00
scons meson/configure: detect endian.h instead of trying to guess when it's available 2018-03-23 11:44:21 +00:00
scripts get_reviewer.pl: fix mesa check 2016-08-30 16:44:00 -04:00
src i965/fs: Register allocator shoudn't use grf127 for sends dest 2018-07-10 09:30:32 -07:00
.dir-locals.el dir-locals.el: Adds White Space support 2016-11-14 19:17:49 +02:00
.editorconfig editorconfig: Add meson configuration 2017-10-09 13:40:50 -07:00
.gitattributes Disable autocrlf for Visual Studio project files. 2008-02-28 12:34:01 +09:00
.gitignore .gitignore: list *.orig and *.rej 2017-09-06 17:48:50 +01:00
.mailmap mailmap: Use Eric Engestrom's personal email address 2018-03-15 12:03:41 +00:00
.travis.yml travis: update libva required version 2018-04-27 10:11:58 -07:00
Android.common.mk meson/configure: detect endian.h instead of trying to guess when it's available 2018-03-23 11:44:21 +00:00
Android.mk dri drivers: Always add the sha1 build-id 2017-10-31 23:36:54 -07:00
appveyor.yml appveyor: Build with MSVC 2015. 2018-02-22 21:10:20 +00:00
autogen.sh autogen.sh: pass --force to autoreconf, quote ORIGDIR 2015-03-11 23:28:26 +00:00
CleanSpec.mk android: Depend on gallium_dri from EGL, instead of linking in gallium. 2015-06-09 11:38:45 -07:00
common.py scons: Recognize LLVM_CONFIG environment variable. 2016-11-24 13:37:33 -08:00
configure.ac configure: use compliant grep regex checks 2018-06-21 08:12:39 -07:00
install-gallium-links.mk gallium: Fix install-gallium-links.mk on non-bash /bin/sh 2016-10-10 08:56:12 -07:00
install-lib-links.mk install-lib-links: remove the .install-lib-links file 2015-02-24 15:33:25 +00:00
Makefile.am autotools: include include/vulkan headers 2018-04-20 20:26:49 -07:00
meson.build meson: Correct behavior of vdpau=auto 2018-06-25 08:43:39 -07:00
meson_options.txt meson: Re-add auto option for omx 2018-03-07 13:30:53 -08:00
REVIEWERS REVIEWERS: add Alexander von Gluck IV as a reviewer for Haiku 2017-11-23 10:00:55 +00:00
SConstruct scons: use python3-compatible lists 2017-09-25 12:05:44 +01:00
VERSION VERSION: bump version to 18.1.3 2018-06-29 10:29:48 -07:00

File: docs/README.WIN32

Last updated: 21 June 2013


Quick Start
----- -----

Windows drivers are build with SCons.  Makefiles or Visual Studio projects are
no longer shipped or supported.

Run

  scons libgl-gdi

to build gallium based GDI driver.

This will work both with MSVS or Mingw.


Windows Drivers
------- -------

At this time, only the gallium GDI driver is known to work.

Source code also exists in the tree for other drivers in
src/mesa/drivers/windows, but the status of this code is unknown.

Recipe
------

Building on windows requires several open-source packages. These are
steps that work as of this writing.

- install python 2.7
- install scons (latest)
- install mingw, flex, and bison
- install pywin32 from here: http://www.lfd.uci.edu/~gohlke/pythonlibs
  get pywin32-218.4.win-amd64-py2.7.exe
- install git
- download mesa from git
  see https://www.mesa3d.org/repository.html
- run scons

General
-------

After building, you can copy the above DLL files to a place in your
PATH such as $SystemRoot/SYSTEM32.  If you don't like putting things
in a system directory, place them in the same directory as the
executable(s).  Be careful about accidentially overwriting files of
the same name in the SYSTEM32 directory.

The DLL files are built so that the external entry points use the
stdcall calling convention.

Static LIB files are not built.  The LIB files that are built with are
the linker import files associated with the DLL files.

The si-glu sources are used to build the GLU libs.  This was done
mainly to get the better tessellator code.

If you have a Windows-related build problem or question, please post
to the mesa-dev or mesa-users list.