Find a file
Kenneth Graunke f2fdb35f39 tnl: Try not to botch index buffer munging when start > 0.
Commit 4c751ad67a (vbo/dlist: use a shared
index buffer) caused multiple draws to use the same index buffer, and
began setting the primitive's `start` field to the offset needed to
access the right portion of the index buffer.

Unfortunately, t_rebase_prims completely botches handling this case.
Say for example we had start = 40, min_index = 6, max_index = 11.
The actual indexes in the buffer are ib[40..45].  t_rebase_prims,
however, would allocate an index buffer containing only 6 elements,
and populate them with <ib[0..5] - min_index>.  For one, this reads
the wrong source data, leading to garbage index values.  For another,
it stores the new index buffer in the wrong spot, so drawing will try
and read elements [40..45] of an array of length 6, and crash.

This patch makes t_rebase_prims allocate a larger index buffer, with
the blank space at the beginning, and try to copy the correct section
of index buffer data over.  This only works if `start` is the same for
all primitives, however, so if we detect different ones, we recurse
to rebase and call draw() separately for each different start value.

Fixes: 4c751ad67a ("vbo/dlist: use a shared index buffer")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4082
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8522>
(cherry picked from commit bd6120f562)
2021-01-20 11:11:05 -08:00
.appveyor appveyor: Use Python3. 2020-08-06 09:46:48 +00:00
.gitlab/issue_templates gitlab: add RADV bug report template 2020-12-18 08:03:04 +00:00
.gitlab-ci radv: Do not use a pipe offset for aliased sparse images. 2021-01-20 09:22:16 -08:00
bin bin/gen_calendar_entries: Add support for making a release 2021-01-07 00:07:56 +00:00
build-support configure: commit test files 2017-10-16 16:32:43 -07:00
docs radv: vectorize 16bit instructions 2021-01-13 11:24:11 -08:00
doxygen doxygen: Plumb through gallium/ to automated documentation 2016-05-30 17:53:45 +01:00
include hgl: Major refactor and cleanup 2021-01-09 20:51:35 -06:00
scons util: Allow STATIC_ASSERT() everywhere 2020-12-10 16:48:36 +00:00
src tnl: Try not to botch index buffer munging when start > 0. 2021-01-20 11:11:05 -08:00
subprojects d3d12: Use DirectX-Headers wrap for d3d12.h 2020-12-16 16:25:54 +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 Revert "ci: Disable the freedreno farm, which went down last night." 2021-01-12 21:28:58 +00:00
.mailmap .mailmap: add and update aliases for Danylo Piliaiev 2020-12-04 15:08:30 +00:00
.pick_status.json tnl: Try not to botch index buffer munging when start > 0. 2021-01-20 11:11:05 -08: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: fix Haiku EGL build; no dri requirement 2021-01-09 20:51:17 -06:00
meson_options.txt swrast: Remove the classic swrast DRI driver 2020-12-31 00:15:29 +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 VERSION: bump for 21.0.0-rc2 2021-01-20 10:34:09 -08: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.