platform/upstream/mesa.git
2 years agobroadcom/compiler: implement TMU general 16-bit load/store
Iago Toral Quiroga [Tue, 18 Jan 2022 10:06:50 +0000 (11:06 +0100)]
broadcom/compiler: implement TMU general 16-bit load/store

This allows us to implement 16-bit access on uniform and
storage buffers.

Notice that V3D hardware can only do general access on scalar
16-bit elements, which we currently enforce by running a lowering
pass during shader compile.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14648>

2 years agobroadcom/compiler: better document vectorization implications
Iago Toral Quiroga [Wed, 19 Jan 2022 08:36:49 +0000 (09:36 +0100)]
broadcom/compiler: better document vectorization implications

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14648>

2 years agobroadcom/compiler: add lowering pass to scalarize non 32-bit general load/store
Iago Toral Quiroga [Tue, 18 Jan 2022 09:59:42 +0000 (10:59 +0100)]
broadcom/compiler: add lowering pass to scalarize non 32-bit general load/store

V3D hardware doesn't support vector access for general TMU load/store
operations like the ones we use for UBO and SSBO, so we need to split
these to scalar operations.

It should be noted that we also have a vectorization pass (which runs
later, during optimization), that may reconstruct some of these into
32-bit operations when possible (i.e. when the resulting operation
is 32-bit aligned).

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14648>

2 years agomesa: change GetProgramiv name length queries to use program resources
Tapani Pälli [Wed, 19 Jan 2022 07:51:30 +0000 (09:51 +0200)]
mesa: change GetProgramiv name length queries to use program resources

Program resource queries provide equivalent code, gl_resource_name
introduced by commit dea558cbd29 takes care of ARB_gl_spirv special
case where name information is not available.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14636>

2 years agomesa: move GetProgramInterfaceiv as a shader_query function
Tapani Pälli [Thu, 20 Jan 2022 10:18:24 +0000 (12:18 +0200)]
mesa: move GetProgramInterfaceiv as a shader_query function

This matches how _mesa_get_program_resourceiv was done and this
makes it possible to skip some validation and shader program lookup
when calling it from glGetProgramiv.

Cc: mesa-stable
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14636>

2 years agonir/lower_locals_to_regs: Do an ad-hoc copy propagate on our generated MOV.
Emma Anholt [Tue, 28 Dec 2021 18:03:35 +0000 (10:03 -0800)]
nir/lower_locals_to_regs: Do an ad-hoc copy propagate on our generated MOV.

I noticed the inefficiency in NIR-to-TGSI output while trying to debug a
failure handling some arrays in r600.  While this makes reading CTS
shaders easier, the effect in the real world is pretty limited.  From
softpipe shader-db:

total instructions in shared programs: 2929840 -> 2929836 (<.01%)
instructions in affected programs: 118 -> 114 (-3.39%)

Reviewed-by: Matt Turner <mattst88@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14321>

2 years agofreedreno/drm, turnip: set DRM_RDWR for exported dma-bufs
Chia-I Wu [Tue, 25 Jan 2022 01:30:23 +0000 (17:30 -0800)]
freedreno/drm, turnip: set DRM_RDWR for exported dma-bufs

This allows the exported fds to be mapped for writing.  My use case is
for virtio-gpu blob resources where the fds are mapped rw and mappings
are added to the guests using KVM_SET_USER_MEMORY_REGION.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14699>

2 years agosvga: enable PIPE_CAP_IMAGE_STORE_FORMATTED on gl43 capable device
Neha Bhende [Mon, 24 Jan 2022 20:53:19 +0000 (12:53 -0800)]
svga: enable PIPE_CAP_IMAGE_STORE_FORMATTED on gl43 capable device

With upstream mesa PIPE_CAP_IMAGE_STORE_FORMATTED needs to be set to enable
ARB_shader_image_load_store extension. This will reenable GL43 support for svga GL43 capable
device

Fixes: 3b81d2d30dab ('mesa/st: do not expose ARB_shader_image_load_store if not fully implemented')

Tested with glretrace

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14688>

2 years agoci: debian-android: drop -Wno-error=extern-initializer
Thomas H.P. Andersen [Fri, 21 Jan 2022 19:52:34 +0000 (20:52 +0100)]
ci: debian-android: drop -Wno-error=extern-initializer

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14654>

2 years agovulkan/vk_extensions_gen: fix -Wextern-initializer warning
Thomas H.P. Andersen [Fri, 21 Jan 2022 19:48:03 +0000 (20:48 +0100)]
vulkan/vk_extensions_gen: fix -Wextern-initializer warning

vk_android_allowed_device_extensions is already declared as
extern in vk_extensions.h

Fixes a warning with clang

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14654>

2 years agoiris: Fix and refactor check for clear color being fully zero
Kenneth Graunke [Mon, 6 Dec 2021 23:42:01 +0000 (15:42 -0800)]
iris: Fix and refactor check for clear color being fully zero

I missed updating this code to check res->aux.clear_color_unknown when
I added it a while back.  While we're here, also refactor this code into
a helper function - I'll want to use it in another place shortly.

Fixes: e83da2d8e3b ("iris: Don't try to CPU read imported clear color BOs")

Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14687>

2 years agoiris: Implement iris_blorp_exec() for the blitter engine
Kenneth Graunke [Mon, 15 Nov 2021 23:59:55 +0000 (15:59 -0800)]
iris: Implement iris_blorp_exec() for the blitter engine

This splits iris_blorp_exec() into separate functions for executing on
the render command streamer and the blitter command streamer.  A future
patch could add a separate iris_blorp_exec_compute() path that skips a
bunch of render-specific work.

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14687>

2 years agoiris: Set BLORP_BATCH_USE_{COMPUTE,BLITTER} flags for the target batch
Kenneth Graunke [Fri, 1 Oct 2021 09:06:45 +0000 (02:06 -0700)]
iris: Set BLORP_BATCH_USE_{COMPUTE,BLITTER} flags for the target batch

This makes blits, copies, and (non-fast) clears set the appropriate
BLORP_BATCH_USE_{COMPUTE,BLITTER} flag if their batch is either
IRIS_BATCH_COMPUTE or IRIS_BATCH_BLITTER.  We ignore the other
operations for now as those don't support compute or blit yet.

Of course, there is no code to attempt to launch BLORP operations on
either the compute or blitter batches yet, but that will come in time.

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14687>

2 years agoiris: Only have one blorp_batch_init/finish in iris_copy_region()
Kenneth Graunke [Fri, 1 Oct 2021 08:38:44 +0000 (01:38 -0700)]
iris: Only have one blorp_batch_init/finish in iris_copy_region()

This is a little simpler, and gives us one place to change flags.

Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14687>

2 years agoiris: Create an IRIS_BATCH_BLITTER for using the BLT command streamer
Kenneth Graunke [Fri, 28 Aug 2020 22:08:29 +0000 (15:08 -0700)]
iris: Create an IRIS_BATCH_BLITTER for using the BLT command streamer

We removed all the hardware blitter support from i965 years ago because
the blitter was not worth using (limited functionality, bad performance,
extra synchronization, and worse).  However, on Tigerlake there are new
blitter commands that are actually fast and allow us to do proper
asynchronous copies while 3D is busy doing other work.

So, reintroduce the blitter.  We'll want to use it.

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14687>

2 years agoblorp: Add support for blorp_copy via XY_BLOCK_COPY_BLT
Kenneth Graunke [Tue, 26 Oct 2021 02:02:42 +0000 (19:02 -0700)]
blorp: Add support for blorp_copy via XY_BLOCK_COPY_BLT

This introduces a new blorp_copy() path using the new XY_BLOCK_COPY_BLT
blitter command introduced on Tigerlake.  Unlike the blitter commands of
old, this one is actually fast and worth using.  Although it doesn't use
shaders like the rest of BLORP, we still can use some surface-munging
code from there, and BLORP also provides a nice place to put this which
is shared among the drivers.

To use the new path, set BLORP_BATCH_USE_BLITTER (much like Jordan's
recent BLORP_BATCH_USE_COMPUTE bit) and target the batch at the copy
engine.

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14687>

2 years agoisl: Add isl_dev->mocs.blitter_{src,dst} fields
Kenneth Graunke [Sun, 28 Nov 2021 08:55:48 +0000 (00:55 -0800)]
isl: Add isl_dev->mocs.blitter_{src,dst} fields

These will be used for XY_BLOCK_COPY_BLT on XeHP.

Acked-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14687>

2 years agoblorp: Add a blorp_address::local_hint flag
Kenneth Graunke [Tue, 16 Nov 2021 03:18:23 +0000 (19:18 -0800)]
blorp: Add a blorp_address::local_hint flag

This will be used as a performance hint for XY_BLOCK_COPY_BLT to
indicate whether the source/destination surfaces are (likely) in
device-local memory or system memory.  We don't need to be precise
here - it's okay to set the fields to LOCAL even if a buffer has
been evicted out to system memory.

We should set this from Vulkan too, but I haven't yet.  There isn't
a convenient anv_bo field like there is in iris...

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14687>

2 years agointel/dev: Add a has_flat_ccs flag
Kenneth Graunke [Sun, 28 Nov 2021 09:06:16 +0000 (01:06 -0800)]
intel/dev: Add a has_flat_ccs flag

This should only be set on XeHP.  It implies that CCS works via based on
the virtual addresses involved and a flat memory carve-out, rather than
treating CCS like a surface, or using auxiliary maps.

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14687>

2 years agointel/genxml: Add XY_BLOCK_COPY_BLT Color Depth enum values
Kenneth Graunke [Sun, 21 Nov 2021 06:36:47 +0000 (22:36 -0800)]
intel/genxml: Add XY_BLOCK_COPY_BLT Color Depth enum values

Requested by Jason.

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14687>

2 years agointel: Allow copy engine class in intel_gem_create_context_engines()
Kenneth Graunke [Tue, 7 Dec 2021 00:43:36 +0000 (16:43 -0800)]
intel: Allow copy engine class in intel_gem_create_context_engines()

I want to use I915_ENGINE_CLASS_COPY in iris.

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14687>

2 years agolavapipe: remove unused struct member
Mike Blumenkrantz [Mon, 24 Jan 2022 19:04:42 +0000 (14:04 -0500)]
lavapipe: remove unused struct member

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14695>

2 years agoci: debian-android: drop -Wno-error=unused-label
Thomas H.P. Andersen [Thu, 20 Jan 2022 16:48:35 +0000 (17:48 +0100)]
ci: debian-android: drop -Wno-error=unused-label

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14639>

2 years agoanv: drop unused label
Thomas H.P. Andersen [Thu, 20 Jan 2022 16:47:48 +0000 (17:47 +0100)]
anv: drop unused label

Added in 053d4c328fa48838572857bd53d07d7680070d52
Last usage removed in 0967584549fa12c754e594dfaf5ac9d7671e7b18

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14639>

2 years agovulkan/wsi: add VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT for swapchain image caps
Mike Blumenkrantz [Thu, 20 Jan 2022 20:55:23 +0000 (15:55 -0500)]
vulkan/wsi: add VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT for swapchain image caps

I need this, and drivers can do it, so add it

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14641>

2 years agomesa/st: move st_fb_orientation into a mesa function
Dave Airlie [Wed, 22 Dec 2021 20:17:16 +0000 (06:17 +1000)]
mesa/st: move st_fb_orientation into a mesa function

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move invalidate_on_gl_viewport to ctx
Dave Airlie [Mon, 24 Jan 2022 06:30:18 +0000 (16:30 +1000)]
mesa/st: move invalidate_on_gl_viewport to ctx

This is cleaner in the gl context now.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move manager colorbuffer interface to gl_context.
Dave Airlie [Mon, 24 Jan 2022 06:21:30 +0000 (16:21 +1000)]
mesa/st: move manager colorbuffer interface to gl_context.

This just avoids some st_context in main.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move renderbuffer format choosing wrapper into mesa.
Dave Airlie [Mon, 24 Jan 2022 06:17:26 +0000 (16:17 +1000)]
mesa/st: move renderbuffer format choosing wrapper into mesa.

This moves this and cleans up the results.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move last of renderbuffer functionality into mesa
Dave Airlie [Tue, 21 Dec 2021 06:22:53 +0000 (16:22 +1000)]
mesa/st: move last of renderbuffer functionality into mesa

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: migrate blit code into mesa
Dave Airlie [Tue, 21 Dec 2021 04:46:49 +0000 (14:46 +1000)]
mesa/st: migrate blit code into mesa

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: fixup viewport drawable invalidation
Dave Airlie [Tue, 21 Dec 2021 06:15:50 +0000 (16:15 +1000)]
mesa/st: fixup viewport drawable invalidation

This moves the code into more appropriate places

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move some fbo helpers around.
Dave Airlie [Tue, 21 Dec 2021 06:11:47 +0000 (16:11 +1000)]
mesa/st: move some fbo helpers around.

This inlines one, and moves the other to a more appropriate place

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move st_new_renderbuffer_fb to manager
Dave Airlie [Tue, 21 Dec 2021 06:08:21 +0000 (16:08 +1000)]
mesa/st: move st_new_renderbuffer_fb to manager

This is st_manager code really.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move map/unmap renderbuffer code into mesa
Dave Airlie [Tue, 21 Dec 2021 06:05:15 +0000 (16:05 +1000)]
mesa/st: move map/unmap renderbuffer code into mesa

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move st renderbuffer code into mesa renderbuffer
Dave Airlie [Tue, 21 Dec 2021 06:00:19 +0000 (16:00 +1000)]
mesa/st: move st renderbuffer code into mesa renderbuffer

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move DrawBufferAllocate into mesa.
Dave Airlie [Tue, 21 Dec 2021 05:52:17 +0000 (15:52 +1000)]
mesa/st: move DrawBufferAllocate into mesa.

Little bit of refactoring here.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move st_ReadBuffer functionality into mesa
Dave Airlie [Tue, 21 Dec 2021 05:46:35 +0000 (15:46 +1000)]
mesa/st: move st_ReadBuffer functionality into mesa

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move validate/discard framebuffer into mesa
Dave Airlie [Tue, 21 Dec 2021 05:43:45 +0000 (15:43 +1000)]
mesa/st: move validate/discard framebuffer into mesa

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move render/finish_render texture in to mesa.
Dave Airlie [Tue, 21 Dec 2021 05:38:18 +0000 (15:38 +1000)]
mesa/st: move render/finish_render texture in to mesa.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: merge framebuffer objects from st to mesa
Dave Airlie [Mon, 20 Dec 2021 06:56:41 +0000 (16:56 +1000)]
mesa/st: merge framebuffer objects from st to mesa

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: move some renderbuffer code into mesa
Dave Airlie [Mon, 20 Dec 2021 06:42:47 +0000 (16:42 +1000)]
mesa/st: move some renderbuffer code into mesa

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: merge st_renderbuffer into gl_renderbuffer.
Dave Airlie [Thu, 9 Dec 2021 23:35:23 +0000 (09:35 +1000)]
mesa/st: merge st_renderbuffer into gl_renderbuffer.

This touches lots of places

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14675>

2 years agomesa/st: Lower user clip planes for tess eval too
Jesse Natalie [Sat, 22 Jan 2022 22:35:16 +0000 (14:35 -0800)]
mesa/st: Lower user clip planes for tess eval too

The logic in st_atom_shader.c leads me to believe this was supposed
to work, but was incomplete to actually finish it. This fixes
compatibility tess tests on d3d12.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14662>

2 years agopan/decode: Fix missing newlines in error messages
Alyssa Rosenzweig [Sat, 15 Jan 2022 15:06:37 +0000 (10:06 -0500)]
pan/decode: Fix missing newlines in error messages

Otherwise these error message lines end up truncated, which is a bit
annoying.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reported-by: Icecream95 <ixn@disroot.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14575>

2 years agopan/bi: Pull BLEND precolouring out of per-dest loop
Alyssa Rosenzweig [Sat, 15 Jan 2022 15:05:02 +0000 (10:05 -0500)]
pan/bi: Pull BLEND precolouring out of per-dest loop

Indentation fail. This should happen once per instruction, not once per
destination. In theory, this is a minor performance win; in practice,
it's simply less wrong.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reported-by: Icecream95 <ixn@disroot.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14575>

2 years agopanfrost: Only cull polygons
Alyssa Rosenzweig [Sat, 15 Jan 2022 14:48:02 +0000 (09:48 -0500)]
panfrost: Only cull polygons

The spec says only polygons, not points/lines, should be culled when
culling is enabled. The hardware does not make this distinction, so we
have to.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reported-by: Icecream95 <ixn@disroot.org>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14575>

2 years agopanfrost: Use u_reduced_prim for primitive checks
Alyssa Rosenzweig [Sat, 15 Jan 2022 14:45:26 +0000 (09:45 -0500)]
panfrost: Use u_reduced_prim for primitive checks

Use a Gallium helper that papers over the differences between primitive
types, as required by hardware operation.

[Cc'd to mesa-stable for use in the next commit.]

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14575>

2 years agofreedreno/a5xx: Fix clip_mask
Rob Clark [Thu, 20 Jan 2022 23:46:49 +0000 (15:46 -0800)]
freedreno/a5xx: Fix clip_mask

The clip_mask needs to also take into account rast->clip_plane_enable

Fixes: 99838513aee ("freedreno/a5xx: Add support for clip distances and use them for userclip.")
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14643>

2 years agofreedreno/a6xx: Fix clip_mask
Rob Clark [Thu, 20 Jan 2022 23:32:34 +0000 (15:32 -0800)]
freedreno/a6xx: Fix clip_mask

The clip_mask needs to also take into account rast->clip_plane_enable

Fixes: f2ae8d116ab ("freedreno/a6xx: Implement user clip/cull distances")
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14643>

2 years agofreedreno: Add FD_DIRTY_RASTERIZER_CLIP_PLANE_ENABLE
Rob Clark [Fri, 21 Jan 2022 02:11:46 +0000 (18:11 -0800)]
freedreno: Add FD_DIRTY_RASTERIZER_CLIP_PLANE_ENABLE

Add a dirty bit for clip_plane_enable changes.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14643>

2 years agofreedreno: Pass shader cache key instead of shader key
Rob Clark [Thu, 20 Jan 2022 23:24:18 +0000 (15:24 -0800)]
freedreno: Pass shader cache key instead of shader key

We are going to need to extend the cache key to add state that effects
the program stateobj, but not necessarily the shader itself (ie. so
ir3_shader_key wouldn't be the correct place to add it).

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14643>

2 years agomesa/st: Lowered ucp should still mark rast state dirty
Rob Clark [Fri, 21 Jan 2022 16:58:07 +0000 (08:58 -0800)]
mesa/st: Lowered ucp should still mark rast state dirty

Lowered clip planes should respect the enabled/disabled GL_CLIP_PLANEn
(aka GL_CLIP_DISTANCEn), which means updating the rast state as well.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Acked-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14643>

2 years agoagx: Lower UBO loads to use per-element indexing
Alyssa Rosenzweig [Sun, 16 Jan 2022 19:41:22 +0000 (14:41 -0500)]
agx: Lower UBO loads to use per-element indexing

This lets us support indirect access to UBOs easily. The existing
constant special case disappears too, since the peephole optimizer can
inline the constant later. (note: this is too conservative since we can
go up to 16-bit immediates...)

Unfortunately, nir_opt_algebraic can't seem to optimize expressions like
"((a << 3) + 4) >> 2" to "(a << 1) + 1" which would be necessary for
reasonable perf out of this...

Fixes:

dEQP-GLES2.functional.shaders.indexing.uniform_array.float_dynamic_loop_read_fragment

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14581>

2 years agodocs: Update features and new_features for anv
Rohan Garg [Mon, 24 Jan 2022 13:30:00 +0000 (14:30 +0100)]
docs: Update features and new_features for anv

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14681>

2 years agov3dv: implement VK_KHR_driver_properties
Iago Toral Quiroga [Mon, 24 Jan 2022 10:36:37 +0000 (11:36 +0100)]
v3dv: implement VK_KHR_driver_properties

Reviewed-by: Juan A. Suarez <jasuarez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14680>

2 years agoradv: Remove VK_EXT_display_control support in favor of common impl.
Bas Nieuwenhuizen [Fri, 31 Dec 2021 14:18:44 +0000 (15:18 +0100)]
radv: Remove VK_EXT_display_control support in favor of common impl.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14365>

2 years agoanv: Remove VK_EXT_display_control support in favor of common impl.
Bas Nieuwenhuizen [Fri, 31 Dec 2021 14:17:48 +0000 (15:17 +0100)]
anv: Remove VK_EXT_display_control support in favor of common impl.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14365>

2 years agovulkan/wsi/display: Add common implementation of VK_EXT_display_control.
Bas Nieuwenhuizen [Fri, 31 Dec 2021 14:16:24 +0000 (15:16 +0100)]
vulkan/wsi/display: Add common implementation of VK_EXT_display_control.

Based on the new vk_sync functions.

Copied the version from anv as that seemed more thorough by using the
temporary sync payload. However that does mean we have do use the vk_sync
functions instead of being able to layer it on top of the dispatch table.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14365>

2 years agoanv: Enable VK_VALVE_mutable_descriptor_type
Rohan Garg [Fri, 14 Jan 2022 14:02:17 +0000 (15:02 +0100)]
anv: Enable VK_VALVE_mutable_descriptor_type

This change introduces the anv_descriptor_size_for_mutable_type and
anv_descriptor_data_for_mutable_type helpers to compute the size and
data flags respectively for mutable descriptor types.

In order to make handling these types easier we now store a precomputed
descriptor stride for all types and use in the in appropriate places.

We also need to adjust the compiler to take into account this descriptor
stride. To that extent, we now pack the stride into the upper 16 bits
alongside the index and the dynamic offset index and use it later to
compute the correct offset.

Closes: #4250
Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14633>

2 years agoanv: refactor queue chain
Jianxun Zhang [Thu, 13 Jan 2022 20:29:33 +0000 (12:29 -0800)]
anv: refactor queue chain

Simplify the buffer chaining process with a single loop and
a helper function from Lionel Landwerlin's input.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Signed-off-by: Jianxun Zhang <jianxun.zhang@linux.intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14578>

2 years agobroadcom/simulator: handle DRM_V3D_PARAM_SUPPORTS_MULTISYNC_EXT
Iago Toral Quiroga [Mon, 24 Jan 2022 10:42:50 +0000 (11:42 +0100)]
broadcom/simulator: handle DRM_V3D_PARAM_SUPPORTS_MULTISYNC_EXT

Without this the simulator wrapper will abort upon seeing this
query, rendering the driver unusable in that context.

Also, it seems the simulator environment doesn't quite work with
multisync at present, so do not enable it until we figure out what
the issue is.

Reviewed-by: Melissa Wen <mwen@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14678>

2 years agoradv: stop checking if pipelines are NULL during draws/dispatches
Samuel Pitoiset [Wed, 19 Jan 2022 10:19:50 +0000 (11:19 +0100)]
radv: stop checking if pipelines are NULL during draws/dispatches

This can't happen.

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/14617>

2 years agoiris: Directly access BOs rather than using iris_resource_bo(...)
Kenneth Graunke [Wed, 19 Jan 2022 15:20:57 +0000 (07:20 -0800)]
iris: Directly access BOs rather than using iris_resource_bo(...)

iris_resource_bo() is convenient when we only have a pipe_resource *
variable, and don't need to do a lot with it other than get at the BO.

When we need to do more with a resource, we usually cast it to
iris_resource *, at which point we can just use res->bo instead.

This patch updates iris_copy_region to use src_res->bo, dst_res->bo,
rather than iris_resource_bo(src) and iris_resource_bo(dst), since we
already have those cast versions on hand.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14667>

2 years agodocs/features: flag VK_KHR_create_renderpass2 as implemented for v3dv
Iago Toral Quiroga [Mon, 24 Jan 2022 09:54:53 +0000 (10:54 +0100)]
docs/features: flag VK_KHR_create_renderpass2 as implemented for v3dv

This was implemented in 3c862923219.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14677>

2 years agoradv: do not restore NULL compute pipelines after meta operations
Samuel Pitoiset [Wed, 19 Jan 2022 10:59:49 +0000 (11:59 +0100)]
radv: do not restore NULL compute pipelines after meta operations

This should be safe as long as the driver restores descriptors and
push constants correctly for compute pipelines.

This might also reduce the number of compute pipeline changes if eg.
consecutve subpass fast clears with compute.

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/14616>

2 years agoradv/winsys: set GTT_WC flag for CS IBs on GFX6
Samuel Pitoiset [Wed, 19 Jan 2022 09:37:58 +0000 (10:37 +0100)]
radv/winsys: set GTT_WC flag for CS IBs on GFX6

It was missing it seems.

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/14612>

2 years agoradv: fix copying VRS rates if the ds attachment uses mips
Samuel Pitoiset [Wed, 12 Jan 2022 16:19:26 +0000 (17:19 +0100)]
radv: fix copying VRS rates if the ds attachment uses mips

While the VRS image can't have mips (and no layers because still not
supported by RADV), applications might still want to bind a
depth/stencil attachment where the base level isn't 0.

Found by inspection.

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/14518>

2 years agoradv: fix copying VRS rates to HTILE if the depth/stencil is cleared
Samuel Pitoiset [Fri, 7 Jan 2022 07:59:53 +0000 (08:59 +0100)]
radv: fix copying VRS rates to HTILE if the depth/stencil is cleared

If the application binds a fragment shading rate attachment to a
subpass and also clears the depth stencil attachment, the VRS rates
would have been reinitialized to 1x1 with fast clears. It makes more
sense to clear and then copy instead of the opposite.

Found by inspection.

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/14518>

2 years agoradv: disable attachmentFragmentShadingRate for RADV_DEBUG=nohiz
Samuel Pitoiset [Wed, 12 Jan 2022 14:00:34 +0000 (15:00 +0100)]
radv: disable attachmentFragmentShadingRate for RADV_DEBUG=nohiz

Region based VRS can only work if HTILE is enabled.

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/14518>

2 years agointel/genxml: Add Un-Typed Data-Port Cache Flush field to pipe control
Sagar Ghuge [Tue, 24 Aug 2021 01:05:50 +0000 (18:05 -0700)]
intel/genxml: Add Un-Typed Data-Port Cache Flush field to pipe control

Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14676>

2 years agointel/genxml: Add L1 Cache Control bit field
Sagar Ghuge [Thu, 12 Aug 2021 18:37:26 +0000 (11:37 -0700)]
intel/genxml: Add L1 Cache Control bit field

Add L1 cache control bit field to RENDER_SURFACE_STATE and
STATE_BASE_ADDRESS instruction.

v1: (Jason)
- Add prefix to bit field
- Don't miss out STATE_BASE_ADDRESS instruction

Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14676>

2 years agoci: clean up debian-android no-error list
Thomas H.P. Andersen [Thu, 20 Jan 2022 16:42:52 +0000 (17:42 +0100)]
ci: clean up debian-android no-error list

I see no warnings of these in the log of a recent CI build

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14638>

2 years agoutil/fossilize_db: Fix double free in error handling.
Bas Nieuwenhuizen [Sun, 23 Jan 2022 22:43:49 +0000 (23:43 +0100)]
util/fossilize_db: Fix double free in error handling.

If the file ptr is not NULL then foz_destroy will also try to destroy it.

Fixes: eca6bb9540d ("util/fossilize_db: add basic fossilize db util to read/write shader caches")
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14671>

2 years agoiris/xehp: Implement workaround for 3D texturing+anisotropic filtering.
Francisco Jerez [Wed, 20 Oct 2021 00:52:06 +0000 (17:52 -0700)]
iris/xehp: Implement workaround for 3D texturing+anisotropic filtering.

Implements a workaround for HSDES#14014414195.  Note that this change
deviates heavily from the workaround suggested in the HSDES, since all
of the suggestions are either costly at runtime or outright
non-compliant, so they would require us to apply the workaround
selectively for affected applications.

Instead of adding hacks to the compiler that manually implement the
LOD computation of 3D texturing operations in the shader, initialize
an extra sampler state structure in the driver that has anisotropic
filtering forced off, and use it instead of the normal sampler state
structure whenever a 3D texture is bound to the same sampler unit.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14489>

2 years agodocs: Update d3d12 features
Jesse Natalie [Wed, 19 Jan 2022 19:22:29 +0000 (11:22 -0800)]
docs: Update d3d12 features

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agod3d12: Set sample-rate shading and GLSL 400 caps
Jesse Natalie [Wed, 19 Jan 2022 19:19:16 +0000 (11:19 -0800)]
d3d12: Set sample-rate shading and GLSL 400 caps

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agod3d12: When mapping a non-directly-mappable resource for write, readback first
Jesse Natalie [Mon, 17 Jan 2022 18:29:45 +0000 (10:29 -0800)]
d3d12: When mapping a non-directly-mappable resource for write, readback first

For non-discard writes, we need to make sure that the resource has valid contents
so they can be *updated*, not overwritten.

We have to skip this when doing asynchronous maps, but that should be okay, because
the threading context should only do asynchronous map-write when the resource is
known to be idle/empty.

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agod3d12: Support dynamic UBO/SSBO indexing
Jesse Natalie [Mon, 17 Jan 2022 15:31:53 +0000 (07:31 -0800)]
d3d12: Support dynamic UBO/SSBO indexing

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agod3d12: Run point sprite lowering pass on multi-stream GS when safe
Jesse Natalie [Fri, 14 Jan 2022 21:43:15 +0000 (13:43 -0800)]
d3d12: Run point sprite lowering pass on multi-stream GS when safe

In the case of a multi-stream GS that is attempting to output wide
points to stream 0, we can support this by lowering stream 0 to
triangles and then removing the other streams. This is only valid
to do if the other streams are not being written to stream output,
either if they're not present in the SO info or no buffer is bound.

Fixes the arb_gpu_shader5/arb_gpu_shader5-emitstreamvertex_nodraw
piglit test which does this.

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agod3d12: Apply GS point sprite lowering to fixed-function point size too
Jesse Natalie [Fri, 14 Jan 2022 21:32:26 +0000 (13:32 -0800)]
d3d12: Apply GS point sprite lowering to fixed-function point size too

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agod3d12: Report number of GS streams
Jesse Natalie [Fri, 14 Jan 2022 21:32:09 +0000 (13:32 -0800)]
d3d12: Report number of GS streams

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agod3d12: Temp resources for same-resource copies can be MSAA too
Jesse Natalie [Fri, 14 Jan 2022 14:34:55 +0000 (06:34 -0800)]
d3d12: Temp resources for same-resource copies can be MSAA too

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agod3d12: Relax multisampling direct copy requirements
Jesse Natalie [Fri, 14 Jan 2022 14:30:27 +0000 (06:30 -0800)]
d3d12: Relax multisampling direct copy requirements

D3D has supported partial copying of MSAA resources as as long as
the sample counts match since D3D10.1

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agod3d12: Modify shaders when MSAA is disabled
Jesse Natalie [Fri, 14 Jan 2022 00:44:32 +0000 (16:44 -0800)]
d3d12: Modify shaders when MSAA is disabled

I couldn't find this in a spec but the builtin-gl-sample-mask piglit
seems to expect writing to the output sample mask to do nothing when
max num samples == 0.

The ForcedSampleCount property should make everything appear as if
MSAA is disabled. However, it's undefined behavior if depth is
bound, so in that case, we can at least use a lowering pass to
make things *look* like MSAA is off, unless you use atomics to
count invocations.

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agod3d12: Report sample positions
Jesse Natalie [Thu, 13 Jan 2022 20:37:10 +0000 (12:37 -0800)]
d3d12: Report sample positions

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agod3d12: Lower load_sample_pos to load_sample_pos_at_id
Jesse Natalie [Thu, 13 Jan 2022 19:17:17 +0000 (11:17 -0800)]
d3d12: Lower load_sample_pos to load_sample_pos_at_id

D3D doesn't have an intrinsic for loading the current sample's
position, only for loading a specific sample's intrinsic. Fortunately,
we can also just get the current sample. So do that.

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agod3d12: Sample mask output needs to be uint-typed
Jesse Natalie [Thu, 13 Jan 2022 17:44:26 +0000 (09:44 -0800)]
d3d12: Sample mask output needs to be uint-typed

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agomicrosoft/compiler: Lower helper invocations
Jesse Natalie [Wed, 19 Jan 2022 22:19:23 +0000 (14:19 -0800)]
microsoft/compiler: Lower helper invocations

DXIL adds this in SM6.6, so when we get around to being able to
emit SM6.6, we can conditionally turn this off and support emitting
the new intrinsic. Until then, this is easy.

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agomicrosoft/compiler: Handle msb/lsb/bfrev
Jesse Natalie [Mon, 17 Jan 2022 21:54:25 +0000 (13:54 -0800)]
microsoft/compiler: Handle msb/lsb/bfrev

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agomicrosoft/compiler: Use ibfe/ubfe for bitfield extract instead of lowering to shifts
Jesse Natalie [Mon, 17 Jan 2022 21:38:36 +0000 (13:38 -0800)]
microsoft/compiler: Use ibfe/ubfe for bitfield extract instead of lowering to shifts

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agomicrosoft/compiler: Handle bitfield_insert
Jesse Natalie [Mon, 17 Jan 2022 21:20:53 +0000 (13:20 -0800)]
microsoft/compiler: Handle bitfield_insert

This *almost* matches what GLSL wants, except for the handling of
large widths. You can see this in the lowering algorithm:
   (('bitfield_insert', 'base', 'insert', 'offset', 'bits'),
    ('bcsel', ('ult', 31, 'bits'), 'insert',
              ('bfi', ('bfm', 'bits', 'offset'), 'insert', 'base')),
    'options->lower_bitfield_insert'),

DXIL's 'bfi' instruction is an inseparable pairing of NIR's 'bfi(bfm(...), ...)',
so we just apply the additional bcsel in the backend.

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agomicrosoft/compiler: Emit samplers as array types
Jesse Natalie [Mon, 17 Jan 2022 15:49:22 +0000 (07:49 -0800)]
microsoft/compiler: Emit samplers as array types

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agomicrosoft/compiler: Handle load_invocation_id for GS and HS
Jesse Natalie [Mon, 3 Jan 2022 12:58:17 +0000 (04:58 -0800)]
microsoft/compiler: Handle load_invocation_id for GS and HS

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agomicrosoft/compiler: Handle tex texture/sampler offset srcs
Jesse Natalie [Sat, 15 Jan 2022 01:33:05 +0000 (17:33 -0800)]
microsoft/compiler: Handle tex texture/sampler offset srcs

Note that these offsets are 0-based, so to make them binding IDs we
need to explicitly add the base ID to them.

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agomicrosoft/compiler: Handle input coverage
Jesse Natalie [Sat, 15 Jan 2022 00:16:31 +0000 (16:16 -0800)]
microsoft/compiler: Handle input coverage

Note that GL requires input coverage for sample execution mode to
be only the single bit corresponding to the executing sample, so
rearrange things to understand during shader emitting if we're
executing per-sample to emit the right coverage value.

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agomicrosoft/compiler: Handle textureGatherCmp
Jesse Natalie [Fri, 14 Jan 2022 22:40:18 +0000 (14:40 -0800)]
microsoft/compiler: Handle textureGatherCmp

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agomicrosoft/compiler: Handle 'pull model' explicit interpolation intrinsics
Jesse Natalie [Fri, 14 Jan 2022 22:23:17 +0000 (14:23 -0800)]
microsoft/compiler: Handle 'pull model' explicit interpolation intrinsics

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agomicrosoft/compiler: Always have at least one GS active stream
Jesse Natalie [Sun, 21 Nov 2021 00:50:00 +0000 (16:50 -0800)]
microsoft/compiler: Always have at least one GS active stream

DXIL validation will fail if there's no stream that has a valid
primitive topology, which is what happens in the case of no
active streams.

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>

2 years agomicrosoft/compiler: Handle load_sample_pos_at_id
Jesse Natalie [Thu, 13 Jan 2022 19:16:52 +0000 (11:16 -0800)]
microsoft/compiler: Handle load_sample_pos_at_id

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>