Find a file
Jason Ekstrand 68092df8d8 intel/nir: Lower 8-bit ops to 16-bit in NIR on Gen11+
Intel hardware supports 8-bit arithmetic but it's tricky and annoying:

  - Byte operations don't actually execute with a byte type.  The
    execution type for byte operations is actually word.  (I don't know
    if this has implications for the HW implementation.  Probably?)

  - Destinations are required to be strided out to at least the
    execution type size.  This means that B-type operations always have
    a stride of at least 2.  This means wreaks havoc on the back-end in
    multiple ways.

  - Thanks to the strided destination, we don't actually save register
    space by storing things in bytes.  We could, in theory, interleave
    two byte values into a single 2B-strided register but that's both a
    pain for RA and would lead to piles of false dependencies pre-Gen12
    and on Gen12+, we'd need some significant improvements to the SWSB
    pass.

  - Also thanks to the strided destination, all byte writes are treated
    as partial writes by the back-end and we don't know how to copy-prop
    them.

  - On Gen11, they added a new hardware restriction that byte types
    aren't allowed in the 2nd and 3rd sources of instructions.  This
    means that we have to emit B->W conversions all over to resolve
    things.  If we emit said conversions in NIR, instead, there's a
    chance NIR can get rid of some of them for us.

We can get rid of a lot of this pain by just asking NIR to get rid of
8-bit arithmetic for us.  It may lead to a few more conversions in some
cases but having back-end copy-prop actually work is probably a bigger
bonus.  There is still a bit we have to handle in the back-end.  In
particular, basic MOVs and conversions because 8-bit load/store ops
still require 8-bit types.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7482>
2020-11-09 18:58:51 +00:00
.appveyor appveyor: Use Python3. 2020-08-06 09:46:48 +00:00
.gitlab/issue_templates gitlab: ask for more detailed info about GPU 2020-08-20 11:56:19 +00:00
.gitlab-ci CI: Disable Panfrost T760 2020-11-09 15:11:33 +00:00
bin android_stub: Update platform headers to include gralloc1.h. 2020-10-19 18:41:50 +00:00
build-support configure: commit test files 2017-10-16 16:32:43 -07:00
docs radv: implement VK_EXT_shader_image_atomic_int64 2020-11-09 18:28:59 +00:00
doxygen doxygen: Plumb through gallium/ to automated documentation 2016-05-30 17:53:45 +01:00
include CL: update CL headers to 3.0 2020-11-06 17:02:54 +10:00
scons scons/windows: Support build with LLVM 11. 2020-10-23 17:17:01 -07:00
src intel/nir: Lower 8-bit ops to 16-bit in NIR on Gen11+ 2020-11-09 18:58:51 +00:00
subprojects meson: use github URL for wraps instead of completely unreliable wrapdb 2020-01-16 23:06:43 +00:00
.dir-locals.el dir-locals.el: Adds White Space support 2016-11-14 19:17:49 +02:00
.editorconfig docs: fixup indentation 2020-01-18 11:39:32 +01:00
.gitignore intel/tools: Add unit tests for assembler 2019-05-07 14:33:48 -07:00
.gitlab-ci.yml ci/deqp: Switch to a new dEQP runner written in Rust. 2020-11-06 19:48:39 +00:00
.mailmap .mailmap: add an alias for Andres Gomez 2020-04-30 14:33:20 +03:00
.travis.yml travis: autodetect python version instead of hard-coding it 2019-12-21 20:23:08 +00:00
Android.common.mk tree-wide: fix deprecated GitLab URLs 2020-05-23 15:33:50 +00:00
Android.mk ac/llvm: handle static/shared llvm init separately 2020-08-17 10:47:41 +00:00
appveyor.yml appveyor: Use Python3. 2020-08-06 09:46:48 +00:00
CleanSpec.mk CleanSpec.mk: Remove HOST_OUT_release 2018-08-02 15:42:40 -06:00
common.py scons: Print a deprecation warning about using scons on not windows 2019-10-24 18:33:50 +00:00
meson.build meson: Don't enable libunwind by in 'auto' mode on Android. 2020-10-20 18:29:38 +00:00
meson_options.txt v3dv: add v3d vulkan driver skeleton 2020-10-13 21:21:24 +00:00
README.rst README: update references to internal docs 2020-06-13 10:42:01 +00:00
REVIEWERS REVIEWERS: add VMware reviewers 2019-10-18 16:42:40 +00:00
SConstruct tree-wide: fix deprecated GitLab URLs 2020-05-23 15:33:50 +00:00
VERSION Bump development version and clear new_features 2020-08-06 09:34:42 -07:00

`Mesa <https://mesa3d.org>`_ - The 3D Graphics Library
======================================================


Source
------

This repository lives at https://gitlab.freedesktop.org/mesa/mesa.
Other repositories are likely forks, and code found there is not supported.


Build & install
---------------

You can find more information in our documentation (`docs/install.rst
<https://mesa3d.org/install.html>`_), but the recommended way is to use
Meson (`docs/meson.rst <https://mesa3d.org/meson.html>`_):

.. code-block:: sh

  $ mkdir build
  $ cd build
  $ meson ..
  $ sudo ninja install


Support
-------

Many Mesa devs hang on IRC; if you're not sure which channel is
appropriate, you should ask your question on `Freenode's #dri-devel
<irc://chat.freenode.net#dri-devel>`_, someone will redirect you if
necessary.
Remember that not everyone is in the same timezone as you, so it might
take a while before someone qualified sees your question.
To figure out who you're talking to, or which nick to ping for your
question, check out `Who's Who on IRC
<https://dri.freedesktop.org/wiki/WhosWho/>`_.

The next best option is to ask your question in an email to the
mailing lists: `mesa-dev\@lists.freedesktop.org
<https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`_


Bug reports
-----------

If you think something isn't working properly, please file a bug report
(`docs/bugs.rst <https://mesa3d.org/bugs.html>`_).


Contributing
------------

Contributions are welcome, and step-by-step instructions can be found in our
documentation (`docs/submittingpatches.rst
<https://mesa3d.org/submittingpatches.html>`_).

Note that Mesa uses gitlab for patches submission, review and discussions.