Commit graph

45325 commits

Author SHA1 Message Date
Samuel Pitoiset
45524afe95 radv/llvm: implement a workaround for gl_FragCoord.z with VRS on GFX10.3
Without it, FragCoord.z will have the value of one of the fine pixels
instead of the center of the coarse pixel.

It's only enabled for RADV.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7837>
2020-12-14 16:22:38 +00:00
Christian Gmeiner
a5f4be4fcd etnaviv: remove imm_ prefix from etna_shader_uniform_info members
This prefix is meaningless.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8062>
2020-12-14 15:13:13 +00:00
Christian Gmeiner
fefbafb6ff etnaviv: rename from immedaite to uniform in some places
This naming change should clarify what we are actually doing here.

We are defining/managing what data is stored in the GPUs
uniform data storage area. A shader can access this area with
the ETNA_RGROUP_UNIFORM register group.

In this uniform data area we need to store const buffer data and
own immediate/constant data.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8062>
2020-12-14 15:13:13 +00:00
Mike Blumenkrantz
dfd0f042e0 zink: really fix direct image mapping offset (I mean it this time)
I got confused and:
* used the vkformat instead of the pipe format for getting format description
* incorrectly calculated bpp

but this time it's definitely 100% fixed I promise

Fixes: 456b57802e ("zink: fix direct image mapping offset")

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8074>
2020-12-14 14:30:42 +00:00
Hoe Hao Cheng
6a34a686ea zink: fix property detection
yikes, that's a bad typo right there

Fixes: a103666b ("zink: decouple features and enabling conditions in zink_device_info.py")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8076>
2020-12-13 13:23:22 +08:00
Eric Anholt
d3d28f6c2d nir: Redefine start/end_ip of blocks to fix NIR-to-TGSI liveness bugs.
With the block's end_ip accidentally being the ip of the next instruction,
contrary to the comment, you would end up doing end-of-block freeing early
and have the value missing when it came time to emit the next instruction.
Just expand the ips to have separate ones for start and end of block --
while it means that nir_instr->index is no longer incremented by 1 per
instruction, it makes sense for use in liveness because a backend is
likely to need to do other things at block boundaries (like emit the if
statement's code), and having an ip to identify that stuff is useful.

Fixes: a206b58157 ("nir: Add a block start/end ip to live instr index metadata.")
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7658>
2020-12-11 23:02:12 +00:00
Eric Anholt
6916d1d924 gallium/ntt: Drop reindexing of SSA defs and regs.
It made the nir_print_shader() for NIR_TO_TGSI_DEBUG not match up with the
instructions being emitted, confusing me.  Given that I'm seeing only like
1/3 shrinking in the SSA indices, just drop the reindexing since it's not
doing much (and we don't store that much per SSA index).

Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7658>
2020-12-11 23:02:12 +00:00
Eric Anholt
7956c788af gallium/ntt: Don't manually reindex instrs.
Getting the live SSA defs will do it if necessary, and that liveness is
what we use the instr index for.  (We used to need to do it manually, and
cleanups for merging resulted in the index being treated as metadata).

Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7658>
2020-12-11 23:02:12 +00:00
Dave Airlie
41f7fa273d lavapipe: add support for VK_KHR_descriptor_update_template
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7912>
2020-12-11 21:53:41 +00:00
Dave Airlie
6be19765cf lavapipe: add support for VK_KHR_push_descriptor
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7912>
2020-12-11 21:53:41 +00:00
Dave Airlie
e7cb57d73e lavapipe: refactor descriptor set binding to support push later.
This refactors the code push descriptor code so it can be reused
later for push descriptors.

Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7912>
2020-12-11 21:53:41 +00:00
Pierre-Eric Pelloux-Prayer
fb7ccd3b23 gallium/u_threaded: fix pipe_resource leak for staging transfer
In 2900f82e19 I mistakenly used tc_set_resource_reference in both
tc_transfer_unmap and tc_call_transfer_unmap.

This causes a leak because tc_call_transfer_unmap clears dst before
acquiring a reference, so it must only be used when initializing
tc_payloads.

This fixes the perf drop reported by Marek in MR 7098.

Fixes: 2900f82e19 ("gallium/u_threaded: fix staging and non-staging conflicts")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8035>
2020-12-11 21:32:31 +00:00
Erico Nunes
d9dd8288aa lima: add support for half float textures
Add support for the half float texel type and pixel types.
This enables the OES_texture_half_float extension.

Tested with piglit test oes_texture_float (half float and with linear
filtering) and passes all deqp half float related tests.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8020>
2020-12-11 21:14:30 +00:00
Mike Blumenkrantz
456b57802e zink: fix direct image mapping offset
the x and y offsets here were improperly calculated without taking into account:
* layer/level offset
* x/y coord bpp

Fixes: 8d46e35d16 ("zink: introduce opengl over vulkan")
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8058>
2020-12-11 20:48:02 +00:00
Hoe Hao Cheng
fe669ff4a0 zink: replace old code with generated zink_instance
Acked-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7800>
2020-12-11 12:07:13 +00:00
Hoe Hao Cheng
52138ea9b3 zink: hook zink_instance to build
Acked-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7800>
2020-12-11 12:07:13 +00:00
Hoe Hao Cheng
2b4fcf0a06 zink: generate instance creation code with a python script
Acked-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7800>
2020-12-11 12:07:13 +00:00
Adam Jackson
12656de341 zink: factor out GET_PROC_ADDR and friends to zink_screen.h
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7800>
2020-12-11 12:07:13 +00:00
Hoe Hao Cheng
2f58d933ea zink: allow Extension/Version to be shared across files
Acked-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7800>
2020-12-11 12:07:13 +00:00
cheyang
83d1e2efd0 android: fix build failure with libbacktrace
because 848e7b94 commit cause.it  modify u_debug_stack_android.cpp
location from src/gallium/auxiliary/util to src/util but Android.mk
not modify

Fixes: 848e7b94 ("Move stack debug functions to src/util")
Signed-off-by: cheyang <cheyang@bytedance.com>
Acked-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7851>
2020-12-11 10:41:14 +00:00
Juan A. Suarez Romero
42fd7e3457 v3d: extend the list of formats supported by the TFU unit
TFU can convert from these new formats, but can not autogenerate
mipmaps from them.

Hence we need to set what is the purpose to know if the formats are
supported or not.

v1:
 - Use the same and shorter variable name (Alejandro)

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8050>
2020-12-11 10:29:34 +00:00
Boris Brezillon
7ca72f1726 gallium/util: Fix depth/stencil blit shaders
When loading the depth, we want to store component X of the texel fetch
result into position.Z which can't be expressed without an extra MOV
unless the backend replicates the depth.

Stencil is always expected in the Y component, but some TGSI shaders
assume it will also be available in X, which only works if the backend
replicates the stencil value.

Let's fix those shaders so backend drivers are not forced to replicate
the depth/stencil values.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7922>
2020-12-11 09:47:38 +00:00
Boris Brezillon
e15fd6c36e panfrost: Reload depth/stencil when they are read
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7922>
2020-12-11 09:47:38 +00:00
Boris Brezillon
94009cbebc panfrost: Force ->s_writeback_base to ->zs_writeback_base for Z24S8 buffers
Apparently this field is used even if the stencil is part of the ZS
buffer. Fixes a bunch of page faults on Bifrost.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7922>
2020-12-11 09:47:38 +00:00
Boris Brezillon
27d622cffe panfost: Fix depth/stencil writeback on Bifrost v7
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7922>
2020-12-11 09:47:38 +00:00
Boris Brezillon
27af135280 panfrost: Allow 2DMS arrays
The midgard compiler has been fixed to handle texture operations on
2DMS arrays, and Bifrost already had this case handled properly. Relax
the assert.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8042>
2020-12-11 09:15:39 +01:00
Nanley Chery
0f369e1472 iris: Stop using blorp_hiz_stencil_op
Delete this function call for two reasons:

1. Calling blorp_hiz_stencil_op within iris_resolve_color seems out of
   place.
2. AFAICT, iris stopped doing STC_CCS resolves with commit
   5b82d8ce8b.

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8021>
2020-12-10 22:41:33 +00:00
Eric Anholt
ee80237218 mesa: Retire classic OSMesa.
The classic OSMesa renders directly into user memory using
src/mesa/swrast, while gallium OSMesa renders using softpipe or llvmpipe
and copies out at glFlush() time.  This would make gallium look like a
worse choice for OSMesa, except that swrast is:

1) Painfully slow to render compared to llvmpipe
2) Incorrect at derivatives
3) Limited to GL 2.1 instead of GL 4.6

In my survey of OSMesa users, debian was the remaining holdout with
classic OSMesa in use on hurd and some rare non-LLVM-supported
architectures (sh4, alpha, etc.).  As of today, they've switched to
softpipe-based gallium OSMesa for them.

To prevent people from running the wrong OSMesa (to the extent that
running OSMesa can ever be the right thing), delete the classic
version.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>

Closes: #320
Closes: #877
Closes: #2297
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/1243>
2020-12-10 18:38:13 +00:00
Eric Anholt
7497917cfd osmesa/test: Clear the stencil bits in the depth test.
Since the depth buffer starts out as a malloc, and we weren't clearing it,
you could get undefined values in your top 8 bits.  This should fix
intermittent failures of the depth test.

(Sadly, valgrind wasn't catching this, presumably because the 32-bit value
there *is* written, just some bits are left undef)

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/1243>
2020-12-10 18:38:13 +00:00
Rob Clark
790144e65a util+treewide: container_of() cleanup
Replace mesa's slightly different container_of() with one more aligned
to the linux kernel's version which takes a type as the 2nd param.  This
avoids warnings like:

  freedreno_context.c:396:44: warning: variable 'batch' is uninitialized when used within its own initialization [-Wuninitialized]

At the same time, we can add additional build-time type-checking asserts

Signed-off-by: Rob Clark <robdclark@chromium.org>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7941>
2020-12-10 16:48:36 +00:00
jzielins
f63c595a73 swr: fix crashes caused by incorrectly reporting SSBO support
Reviewed-by: Krzysztof Raszkowski <krzysztof.raszkowski@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8036>
2020-12-10 15:54:49 +01:00
Hoe Hao Cheng
f27ee2a3ad zink: remove useless import in zink_device_info.py
Acked-by: Adam Jackson <ajax@redhat.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7756>
2020-12-10 12:40:59 +00:00
Hoe Hao Cheng
3f1d4de25b zink: move blend_operation_advanced conditions to zink_device_info.py
Acked-by: Adam Jackson <ajax@redhat.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7756>
2020-12-10 12:40:59 +00:00
Hoe Hao Cheng
a103666b02 zink: decouple features and enabling conditions in zink_device_info.py
replace `have_feature` with `conditions` and add `features=True`
to places where `have_feature` was used.

Acked-by: Adam Jackson <ajax@redhat.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7756>
2020-12-10 12:40:59 +00:00
Hoe Hao Cheng
6e313bc918 zink: define and use <%guard> helper in zink_device_info
this is an attempt to improve readability of the template code, with
the elimination of excessive whitespace as a bonus.

Acked-by: Adam Jackson <ajax@redhat.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7756>
2020-12-10 12:40:59 +00:00
Erik Faye-Lund
f5711ae7d2 zink: use _mesa_pointer_set_create for simplicity
Acked-by: Adam Jackson <ajax@redhat.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7985>
2020-12-10 09:45:28 +00:00
Erik Faye-Lund
8a30ac49ac zink: fail if set failed to create
Fixes: a03d17ede7 ("zink: refcount zink_gfx_program objects")

Acked-by: Adam Jackson <ajax@redhat.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7985>
2020-12-10 09:45:28 +00:00
Pierre-Eric Pelloux-Prayer
7c85b1d2f0 gallium/u_threaded: set has_user_indices = false for merged draws
Fixes an assert when running this piglit test:
   arb_shader_draw_parameters-drawid-single-draw

Fixes: 351ba767af ("gallium/u_threaded: set has_user_indices = false in the driver thread")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8004>
2020-12-10 09:17:45 +00:00
Pierre-Eric Pelloux-Prayer
5eda9673b2 radeonsi: fix si_get_draw_start_count count value
Fixes: 0ce68852c1 ("radeonsi: implement multi_draw but supporting only 1 draw")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3932
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8004>
2020-12-10 09:17:45 +00:00
Erik Faye-Lund
3f0da800eb lavapipe: implement VK_EXT_vertex_attribute_divisor (v2)
This is more or less just compile-tested, but this seems about right to
me. I see the extension being supported when running on top of Zink,
which makes me happy enough for now ;)

v2: fixed up to copy the structs on pipeline create [airlied]
gallium doesn't support the 0 divisor case yet.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7930>
2020-12-10 11:01:07 +10:00
Erik Faye-Lund
5b0b03733a lavapipe: interpret inputRate as an enum-value
This isn't an integer, it's an enum, We need to support
VK_EXT_vertex_attribute_divisor if we want to support using values other
than 0 and 1 here.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7930>
2020-12-10 11:00:56 +10:00
Dave Airlie
eec9d67e44 lavapipe: don't copy pNext
We have to ignore unknown structs, so don't init the deep copy pNext
with the src.

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7978>
2020-12-10 10:46:27 +10:00
Dave Airlie
6a27262cc2 lavapipe: split out pipeline struct duplication to a macro.
This just pulls a common pattern into a macro.

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7978>
2020-12-10 10:46:23 +10:00
Dave Airlie
a2cf059023 lavapipe: use ralloc for pipeline copies.
We have to store every struct that is in the pipeline for processing
later, use ralloc to make freeing this mess easier.

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7978>
2020-12-10 10:46:18 +10:00
Nanley Chery
04c7fce799 iris: Drop res variable in resolve_sampler_views
Instead of storing isv->res in a local variable, just use it directly to
increase consistency with similar field accesses.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7996>
2020-12-09 22:28:38 +00:00
Nanley Chery
1f7427f972 iris: Fix resource ptr in resolve_sampler_views
Use the sampler view's iris_resource instead of its pipe_resource. For
stencil views of a depth-stencil resource, this enables the stencil
resource to cause a depth cache flush when needed.

Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3287
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7996>
2020-12-09 22:28:38 +00:00
Eric Anholt
4ba884b814 softpipe: Fix swizzled texture gather of int textures.
We need to pick 1u vs 1.0f based on the type of the texture, just like for
normal samples.  Move the decision up to the create_sampler_view, and use
that value from both sampler paths.

Cc: mesa-stable
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8012>
2020-12-09 22:08:34 +00:00
Marek Olšák
2b09bde1f5 radeonsi: use a C++ template to decrease draw_vbo overhead by 13 %
With GALLIUM_THREAD=0 to disable draw merging.

Before:
   1, DrawElements ( 1 VBO| 0 UBO|  0    ) w/ no state change,                 8736

After:
   1, DrawElements ( 1 VBO| 0 UBO|  0    ) w/ no state change,                10059

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7807>
2020-12-09 16:01:32 -05:00
Marek Olšák
6347b0b5c4 radeonsi: rename si_state_draw.c to .cpp
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7807>
2020-12-09 16:01:32 -05:00
Marek Olšák
639b1366d0 radeonsi: resolve a tricky C++ failure with goto jumping over initializations
C++ doesn't allow jumping over variable initializations, so we have to use
a macro.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7807>
2020-12-09 16:01:32 -05:00