Commit graph

144655 commits

Author SHA1 Message Date
Jason Ekstrand
7f2395046f anv: Advertise support for shaderBufferFloat32AtomicAdd
Rework: (Sagar)
- Enable shaderBufferFloat32AtomicAdd for XeHPG

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12566>
2021-09-09 23:34:33 +00:00
Jason Ekstrand
7b21def9c2 intel/fs: Add support for atomic_fadd
Rework:
- Enable float32 atomic add with LSC (Sagar)
- disassemble new opcode (Caio)

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12566>
2021-09-09 23:34:33 +00:00
Emma Anholt
db930bd91b nir_to_tgsi: Allow SSA defs to include swizzles, abs, and neg.
This will let some copy prop happen automatically, avoiding MOVs to temps.
Most importantly, though, it means that virgl won't see (unused channel)
swizzles from channels beyond the bounds of sysvals, which trigger shader
compile failures on the host.

softpipe shader-db:

total instructions in shared programs: 2946336 -> 2934777 (-0.39%)
instructions in affected programs: 374676 -> 363117 (-3.09%)
total temps in shared programs: 565552 -> 564139 (-0.25%)
temps in affected programs: 18138 -> 16725 (-7.79%)

Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12781>
2021-09-09 22:02:52 +00:00
Emma Anholt
bd8de16803 nir_to_tgsi: Switch ssa_temp[] to be a ureg_src.
After ntt_store_def(), all uses want it to be a ureg_src.  This will let
us fold abs/neg/swizzles in.

Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12781>
2021-09-09 22:02:52 +00:00
Emma Anholt
ed1fb1f03b nir_to_tgsi: Clean up some unnecessary pointers-to-uregs.
This was used at one point to do ntt_store_def() or something I think.

Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12781>
2021-09-09 22:02:52 +00:00
Emma Anholt
d24893e735 nir_to_tgsi: Add support for memory_barrier_tcs_patch.
glsl_to_tgsi translated both cases of ir_barrier to TGSI's BARRIER, so map
both of glsl_to_nir's ir_barrier outputs to the same.

Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12781>
2021-09-09 22:02:52 +00:00
Emma Anholt
4a4a889de3 nir_to_tgsi: Don't forget to add sampler views with our samplers.
While softpipe and i915 didn't really care, virgl very much does.
tgsi_scan also insisted that the texture ops and the decls matched, which
led to deduplicating the switch statemnts.

Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12781>
2021-09-09 22:02:52 +00:00
Emma Anholt
947f585e91 nir_to_tgsi: Fix indirect addressing of atomic counters.
It's not actually a given that the offset within the counter buffer is a
constant.

Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12781>
2021-09-09 22:02:52 +00:00
Bas Nieuwenhuizen
b05cd10b8e nir: Avoid visiting instructions multiple times in nir_instr_free_and_dce.
Sadly need to poke a bit in the src internals to avoid using yet another
heap allocated datastructure.

Fixes: 5251548572 ("nir: Add a nir_instr_remove that recursively removes dead code.")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5323
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12726>
2021-09-09 21:35:03 +00:00
Chia-I Wu
ca1622830e venus: separate physical device init and filter
It is not an error when a physical device is filtered out.  But it is an
error when a physical device fails to initialize.

Fixed
dEQP-VK.api.device_init.create_instance_device_intentional_alloc_fail.

v2: separate success and fail paths

Fixes: 7dfac808 ("venus: no supported device is not an error")
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> (v1)
Reviewed-by: Ryan Neph <ryanneph@google.com> (v1)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12723>
2021-09-09 20:07:18 +00:00
Chia-I Wu
e14bec2ef3 venus: refactor vn_instance_enumerate_physical_devices
Move device enumeration to a new function.

v2: separate success and fail paths, rename functions
    (suggested by Ryan)

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> (v1)
Reviewed-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12723>
2021-09-09 20:07:18 +00:00
Mike Blumenkrantz
7f5a353012 aux/trace: use private refcounts for samplerviews
this avoids having the driver bypass the samplerview wrapper and destroying
the samplerview prematurely, e.g., spec@sgis_generate_mipmap@gen-texsubimage

Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12546>
2021-09-09 19:27:35 +00:00
Roland Scheidegger
1a554fd610 lavapipe: implement VK_EXT_depth_clip_enable
v2: fix pipeline creation, need a deep copy for rasterization state now

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12260>
2021-09-09 18:29:26 +00:00
Roland Scheidegger
49337ec410 gallium: add rasterizer depth_clamp enable bit
This is required for d3d10+, which has depth_clamp always enabled
regardless of depth_clip (in contrast to OpenGL, where enabling
depth_clamp disables depth_clip). There doesn't seem to be a GL
extension for it, but it will be used for lavapipe to implement
VK_EXT_depth_clip_enable.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12260>
2021-09-09 18:29:26 +00:00
Mike Blumenkrantz
869f0a4992 mesa: skip fallback draw call if no primitives are being drawn
../src/mesa/main/draw.c: In function ‘_mesa_draw_gallium_fallback’:
../src/mesa/main/draw.c:1056:4: warning: ‘prim’ may be used uninitialized [-Wmaybe-uninitialized]
 1056 |    ctx->Driver.Draw(ctx, prim, num_prims, index_size ? &ib : NULL,
      |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1057 |                     index_bounds_valid, info->primitive_restart,
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1058 |                     info->restart_index, min_index, max_index,
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1059 |                     info->instance_count, info->start_instance);
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12766>
2021-09-09 16:52:40 +00:00
Juan A. Suarez Romero
b58d6eaf11 mesa: fix default texture buffer format
According to ARB_tbo spec, default format is LUMINANCE8, but according
to core spec, it is R8.

This fixes piglit's spec@arb_texture_buffer_object@get test with drivers
supporting ARB_tbo spec but OpenGL/ES < 3.1.

v2:
 - Compare against compat profile (Ilia)

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12774>
2021-09-09 15:23:43 +00:00
Pierre-Eric Pelloux-Prayer
a08baaff97 vbo/dlist: fix indentation in vbo_save_api.c
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
cc57156dce vbo/dlist: rework vertex_store management
Simplify the whole thing:
- keep a single function (grow_vertex_storage) that extends the array
- call it when the array is full (in ATTR_UNION) or at the beginning of
  a primitive when the vertex count is known to avoid multiple reallocations.
- allocate save->vertex_store in vbo_save_NewList if needed

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
9863fe5a02 vbo/dlist: rework primitive store handling
Simplify the logic by simply growing the primitive array when needed and
remove remove the call to compile_vertex_list in _save_End if the
array is full (it'll be resized later if needed instead).

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
3253594268 vbo/dlist: rework buffer sizes
Use 20Mb as the default bo size and use the same limit when
allocating the CPU buffers in realloc_storage.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
031cb085cd vbo/dlist: remove unused functions
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
5e281a053a vbo/dlist: add documentation
Add a bit of documentation to describe the logic of vbo_save_api.

while at it improve the packing of vbo_save_context.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
dd55d9f2b3 vbo/dlist: remove vbo_save_context::vert_count
The same property can be deduced directly from the vertex_store,
so remove this one to avoid sync problems between the two and
simplify the code.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
2671b9c90f vbo/dlist: remove vbo_save_copied_vtx
The copy_vertices() function is rarely called and removing
this decreases vbo_save_context's size by 20kb.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
0b8dcdec9d vbo/dlist: fix max_index_count value
We just need an upper bound anyway.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
fc2030b8f3 vbo/dlist: rework out of memory
We don't need to store/init a GLvertexformat (3kb) only to handle the
out of memory situation.
Instead, we can call _mesa_noop_vtxfmt_init when needed.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
831f5d1fe0 vbo/dlist: don't force list compilation if out of vertex space
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
94a2063987 vbo/dlist: limit allocation sizes
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
ea99d1c748 vbo/dlist: remove vbo_save_context::max_vert
max_vert is easy to deduce from vertex_store so remove it to simplify
the code.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
93867fad55 vbo/dlist: realloc vertex stores
Same logic that for the primitives: since we're using an intermediate
RAM storage, we don't need to artificially split lists when the buffer
is full.

Instead, we can simply realloc-ate it.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
776445468b vbo/dlist: remove vbo_save_context::buffer_map
buffer_map pointed to the first vertex in the store for the current list.

With the previous commit, the first vertex is always at index 0, so we
can drop buffer_map.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
6a63a4a14f vbo/dlist: reset vertex_store::used in reset_counters
This means that each list will start writing its vertices at index 0.

The previous mode (append) was useful in the past when the vertices
were written directly to a mapped-buffer object.

Now that there's an intermediate storage in RAM, the added complexity
of the append-mode has no value so drop it.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
3ab1ddd5c1 vbo/dlist: remove vbo_save_context::buffer_ptr
buffer_ptr is always "buffer_in_ram + used" so compute it when needed
and drop it from the struct to avoid out-of-sync errors.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
b511b65123 vbo/dlist: don't force list compilation if out of prim space
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
69615d92a0 vbo/dlist: realloc prims array instead of free/malloc
Now that we don't have links to the prim_store->prims pointers, we
can replace the free/malloc by a realloc version to grow the prim
storage as needed by a list.

This will be used in the next commit to avoid splitting lists in
multiple vbo_save_vertex_list instances because the prim_store was full.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
22f666622a vbo/dlist: use prim_store directly
prim_store won't be shared anymore between multiple list, so use it
directly instead of proxies.

This simplifies the code and avoid to keep them in sync.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
2c6e8bab1b vbo/dlist: don't store prim_store
This is not used anywhere, so we can drop it from vbo_save_context.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
f5aa98579a vbo/dlist: remove vbo_save_vertex_store::bufferobj
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
f9d12bf50e vbo/dlist: use a single buffer object
Instead of using 2 bo, 1 for the indices, one for the vertices store
everything in the same buffer.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
edd7733826 vbo/dlist: use buffer_in_ram_size
The next commit will refactor buffer upload so we need to decouple
the size from the CPU buffer holding the vertices from the size of
the GPU buffer where we're uploading them.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
b0853d0ada vbo/dlist: move VAO update at the end
No functional changes but this is needed for future commits.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
c01851bcf6 vbo/dlist: apply start_offset after indices construction
This will make our life easier for the next commit.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:16 +02:00
Pierre-Eric Pelloux-Prayer
3d3b73813d vbo/dlist: simplify add_vertex function
Use the correct pointer directly instead of adding/removing the same
offset.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
2021-09-09 16:42:15 +02:00
Connor Abbott
8e188f8f2e freedreno/a6xx: Fix VS primid with tess + GS.
Analogous to the previous commit.

Fixes: 8115cde3ba ("tu, freedreno/a6xx, ir3: Rewrite tess PrimID handling")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12768>
2021-09-09 11:17:53 +00:00
Connor Abbott
f254686b13 tu: Fix VS primid with tess + GS
If tess is enabled, then VS chains to the HS and we have to use the HS
value for the PrimID sysval. This is still true if GS is also enabled,
so we need to use the HS instead of the GS if both are enabled.  In
particular if the HS or DS uses gl_PrimitiveID but the GS doesn't then
we still need to setup the register.

This fixes a bunch of dEQP-VK.tessellation.invariance.primitive_set.*
cases on a650, although it seems they managed to still pass on a630 with
the broken PrimID handling.

Fixes: 8115cde3ba ("tu, freedreno/a6xx, ir3: Rewrite tess PrimID handling")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12768>
2021-09-09 11:17:53 +00:00
Rhys Perry
c1f724b2b9 nir: fix serialization of loop/if control
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Fixes: e76ae39ae2 ("nir: add support for user defined select control")
Fixes: b56451f82c ("nir: add support for user defined loop control")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12778>
2021-09-09 10:32:30 +00:00
Rohan Garg
30f457e119 ci: Use FDO_DISTRIBUTION_TAG where possible
This allows for de duplicating some variables.

Signed-off-by: Rohan Garg <rohan.garg@collabora.com>
Acked-by: Daniel Stone <daniels@collabora.com>
Acked-by: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12750>
2021-09-09 11:49:42 +02:00
Qiang Yu
d33eeb2634 radeonsi: enable nir option pack_varying_options
flat interpolation type is not enabled because we need to set
    SPI_PS_INPUT_CNTL_x.FLAT_SHADE=1
which is per vec4.

16 bit varying also need to set
    SPI_PS_INPUT_CNTL_x.FP16_INTERP_MODE
but varying packing only support 32 bit, so we don't need to
worry about this for now.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12537>
2021-09-09 06:00:58 +00:00
Qiang Yu
7054c1b7fd nir/linker: pack varyings with different interpolation qualifier
Driver like radeonsi load varying in a scalar manner, so prefer to pack
varying with different interpolation qualifier into same slot to save
space.

But driver like panfrost/bifrost can load varying in vector manner,
so prefer to pack varying with same interpolation qualifier.

Driver can add interpolation qualifiers which are able to be
packed into same varying slot to pack_varying_options nir option.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12537>
2021-09-09 06:00:58 +00:00
Qiang Yu
5a24aed1ac nir/lower_io_to_vector: check centroid & sample when merge variable
These qualifiers should be respected for different varying load code
generation.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12537>
2021-09-09 06:00:58 +00:00