Find a file
Rafael Antognolli dfc9ab2ccd anv/allocator: Add padding information.
It's possible that we still have some space left in the block pool, but
we try to allocate a state larger than that state. This means such state
would start somewhere within the range of the old block_pool, and end
after that range, within the range of the new size.

That's fine when we use userptr, since the memory in the block pool is
CPU mapped continuously. However, by the end of this series, we will
have the block_pool split into different BOs, with different CPU
mapping ranges that are not necessarily continuous. So we must avoid
such case of a given state being part of two different BOs in the block
pool.

This commit solves the issue by detecting that we are growing the
block_pool even though we are not at the end of the range. If that
happens, we don't use the space left at the end of the old size, and
consider it as "padding" that can't be used in the allocation. We update
the size requested from the block pool to take the padding into account,
and return the offset after the padding, which happens to be at the
start of the new address range.

Additionally, we return the amount of padding we used, so the caller
knows that this happens and can return that padding back into a list of
free states, that can be reused later. This way we hopefully don't waste
any space, but also avoid having a state split between two different
BOs.

v3:
 - Calculate offset + padding at anv_block_pool_alloc_new (Jason).
v4:
 - Remove extra "leftover".

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2019-01-17 15:08:19 -08:00
bin meson: Add a script to extract the cmd line used for meson 2019-01-15 17:38:47 +00:00
build-support configure: commit test files 2017-10-16 16:32:43 -07:00
docs docs: explain how to see what meson options exist 2019-01-17 17:05:41 +00:00
doxygen doxygen: Plumb through gallium/ to automated documentation 2016-05-30 17:53:45 +01:00
include vulkan: Update the XML and headers to 1.1.97 2019-01-07 10:00:01 -06:00
m4 configure: allow building with python3 2018-10-31 19:15:50 +00:00
scons scons: drop unused HAVE_STDINT_H macro 2018-10-30 18:10:59 +00:00
scripts appveyor: Add a Cygwin build script 2019-01-07 13:40:58 +00:00
src anv/allocator: Add padding information. 2019-01-17 15:08:19 -08:00
.dir-locals.el dir-locals.el: Adds White Space support 2016-11-14 19:17:49 +02:00
.editorconfig editorconfig: Add max_line_length property 2019-01-10 15:50:34 +02: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: add various typos of Emil's address from the log 2018-08-16 17:38:04 +01:00
.travis.yml travis: avoid using unset llvm-config 2019-01-11 14:38:35 +00:00
Android.common.mk build: stop defining unused VERSION 2018-11-26 22:05:02 +00:00
Android.mk dri drivers: Always add the sha1 build-id 2017-10-31 23:36:54 -07:00
appveyor.yml appveyor: Add a Cygwin build script 2019-01-07 13:40:58 +00:00
autogen.sh autogen.sh: pass --force to autoreconf, quote ORIGDIR 2015-03-11 23:28:26 +00:00
CleanSpec.mk CleanSpec.mk: Remove HOST_OUT_release 2018-08-02 15:42:40 -06:00
common.py scons/svga: remove opt from the list of valid build types 2018-10-26 12:09:00 -06:00
configure.ac autotools: Deprecate the use of autotools 2019-01-16 09:52:42 -08: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 v3d: Switch the vc5 driver to using the finalized V3D UABI. 2018-05-16 21:19:07 +01:00
meson.build meson: allow building dri driver without window system if osmesa is classic 2019-01-16 17:49:51 +00:00
meson_options.txt meson: add etnaviv to the tools option 2018-12-18 21:50:58 +01:00
README.rst README: wording fix for previous commit 2018-06-11 18:34:58 +01:00
REVIEWERS REVIEWERS: add Vulkan reviewer group 2018-11-13 17:25:02 +00:00
SConstruct scons: Require python 2.7 2018-08-16 13:52:56 -07:00
VERSION mesa: bump version to 19.1.0-devel 2018-11-01 18:54:02 +00: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 status
------------

Travis:

.. image:: https://travis-ci.org/mesa3d/mesa.svg?branch=master
    :target: https://travis-ci.org/mesa3d/mesa

Appveyor:

.. image:: https://img.shields.io/appveyor/ci/mesa3d/mesa.svg
    :target: https://ci.appveyor.com/project/mesa3d/mesa

Coverity:

.. image:: https://scan.coverity.com/projects/139/badge.svg?flat=1
    :target: https://scan.coverity.com/projects/mesa


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

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


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

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

Note that Mesa uses email mailing-lists for patches submission, review and
discussions.