platform/upstream/mesa.git
3 years agodocs: update anisotropic info for softpipe/llvmpipe/lavapipe
Dave Airlie [Sun, 18 Jul 2021 19:54:57 +0000 (05:54 +1000)]
docs: update anisotropic info for softpipe/llvmpipe/lavapipe

both drivers have proper implementations

Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8804>

3 years agollvmpipe/virgl/ci: update traces for aniso
Dave Airlie [Sun, 18 Jul 2021 19:47:46 +0000 (05:47 +1000)]
llvmpipe/virgl/ci: update traces for aniso

Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8804>

3 years agolavapipe: add support for anisotropic texturing
Mike Blumenkrantz [Thu, 27 May 2021 21:35:22 +0000 (17:35 -0400)]
lavapipe: add support for anisotropic texturing

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8804>

3 years agollvmpipe: enable GL_ARB_texture_filter_anisotropic
Dave Airlie [Mon, 8 Feb 2021 02:37:40 +0000 (12:37 +1000)]
llvmpipe: enable GL_ARB_texture_filter_anisotropic

Update checksums as images are same as softpipe.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8804>

3 years agodraw: add sampler max_aniso query.
Dave Airlie [Mon, 8 Feb 2021 02:33:51 +0000 (12:33 +1000)]
draw: add sampler max_aniso query.

Add support for draw shaders for retrieve max anisotropy.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8804>

3 years agollvmpipe: add support for max aniso query.
Dave Airlie [Mon, 8 Feb 2021 02:37:07 +0000 (12:37 +1000)]
llvmpipe: add support for max aniso query.

This just joins the sampler code to the llvmpipe shader stages.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8804>

3 years agogallivm: add support for anisotropic sampling.
Dave Airlie [Mon, 8 Feb 2021 02:32:04 +0000 (12:32 +1000)]
gallivm: add support for anisotropic sampling.

This is a port of the softpipe anisotropic filtering
to llvmpipe. It should produce pretty similiar results.

This contains the proposed fix to the softpipe calculating
dq after scaling.

It also contains a number of other fixes around vector lengths
etc caught during test.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8804>

3 years agollvmpipe: add filter table shader accessor
Dave Airlie [Mon, 8 Feb 2021 02:21:32 +0000 (12:21 +1000)]
llvmpipe: add filter table shader accessor

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8804>

3 years agodraw: add shader access to aniso filter table.
Dave Airlie [Mon, 8 Feb 2021 01:40:19 +0000 (11:40 +1000)]
draw: add shader access to aniso filter table.

This allows the draw shaders to access the global filter table
vis the context ptr.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8804>

3 years agogallivm: add anisotropic filter weight table.
Dave Airlie [Mon, 8 Feb 2021 02:15:00 +0000 (12:15 +1000)]
gallivm: add anisotropic filter weight table.

The anisotropic filtering needs access to a table of weights,
to make the calculations easier. This routes the table
through from shader parameter and makes it available for the
sampler code.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8804>

3 years agogallium: add pipe_sampler_state::pad member
Mike Blumenkrantz [Wed, 14 Jul 2021 17:34:30 +0000 (13:34 -0400)]
gallium: add pipe_sampler_state::pad member

when zeroing the struct without memset, this needs to be zeroed to avoid
garbage data in the padding

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11886>

3 years agonir: Add a format field to _deref image intrinsics
Jason Ekstrand [Mon, 12 Jul 2021 14:38:38 +0000 (09:38 -0500)]
nir: Add a format field to _deref image intrinsics

The rules here are the same as for texture instructions.  The bits on
the intrinsic are the ground truth and are allowed to vary from the
deref a bit as-needed.  If the intrinsic says PIPE_FORMAT_NONE, then we
can look at the variable, if visible, to get format information.  This
means that we need to be careful when we rewrite intrinsics based on the
deref to only override the format from the _deref intrinsic from the
image variable unless the intrinsic is PIPE_FORMAT_NONE.

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

3 years agonir: Set src_components = -1 for image intrinsic deref sources
Jason Ekstrand [Mon, 12 Jul 2021 15:03:59 +0000 (10:03 -0500)]
nir: Set src_components = -1 for image intrinsic deref sources

Semantically, -1 means "Unknown; don't validate" but it's really only
used for derefs because they often need to be flexible.  We don't really
need that flexibility for image intrinsics but this makes it more
consistent.  More immediately useful is that this gives us the ability
to tell _deref forms of these intrinsics apart from the lowered ones.

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

3 years agonir: Set IMAGE_DIM and IMAGE_ARRAY on deref intrinsics
Jason Ekstrand [Mon, 12 Jul 2021 14:37:01 +0000 (09:37 -0500)]
nir: Set IMAGE_DIM and IMAGE_ARRAY on deref intrinsics

The rules here are the same as for texture instructions.  The bits on
the intrinsic are the ground truth and are allowed to vary from the
deref a bit as-needed.

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

3 years agoglsl/nir: Use nir_ssa_undef() from nir_builder
Jason Ekstrand [Mon, 12 Jul 2021 14:36:08 +0000 (09:36 -0500)]
glsl/nir: Use nir_ssa_undef() from nir_builder

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

3 years agoanv: Allow unused VkSpecializationMapEntries
Iván Briano [Tue, 20 Jul 2021 18:55:58 +0000 (11:55 -0700)]
anv: Allow unused VkSpecializationMapEntries

Fixes future CTS: dEQP-VK.pipeline.spec_constant.*.basic.*unused_*

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11987>

3 years agoaux/draw: use nir_to_tgsi for draw shader in llvm path
Neha Bhende [Thu, 15 Jul 2021 00:25:48 +0000 (17:25 -0700)]
aux/draw: use nir_to_tgsi for draw shader in llvm path

Some drivers doesn't support PIPE_SHADER_CAP_INTEGERS.
This leads to using load_ubo_vec4 which throws llvmpipe off the guard since
it doesn't expect load_ubo_vec4 in shader. Use nir_to_tgsi utility in
such a case.

This fixes crash seen with conform's mustpass.c, select.c and feedback.c.
Also, few gl-select related piglit tests exhibit same crash. Found in vmware's
internal testing

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
v2: incorporated Emma's comments. Added check for PIPE_SHADER_CAP_INTEGERS and
remove PIPE_SHADER_IR_TGSI check

v3: As per Emma's comment, removed expected crashes for i915 piglit

v4: update expetcted passes

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

3 years agozink: Fix unused-variable warning
Michel Zou [Fri, 16 Jul 2021 06:51:47 +0000 (08:51 +0200)]
zink: Fix unused-variable warning

Fixes: 9b40fc48
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11920>

3 years agonir/lower_point_size_mov: zero nir_state_slot::swizzle in new variable
Mike Blumenkrantz [Fri, 16 Jul 2021 20:27:49 +0000 (16:27 -0400)]
nir/lower_point_size_mov: zero nir_state_slot::swizzle in new variable

this is otherwise uninitialized during nir_serialize calls

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

3 years agofreedreno: use new tc util for setting bytes_mapped_limit
Mike Blumenkrantz [Wed, 14 Jul 2021 17:46:42 +0000 (13:46 -0400)]
freedreno: use new tc util for setting bytes_mapped_limit

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

3 years agozink: use new tc util for setting bytes_mapped_limit
Mike Blumenkrantz [Wed, 14 Jul 2021 17:44:39 +0000 (13:44 -0400)]
zink: use new tc util for setting bytes_mapped_limit

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

3 years agoradeonsi: use new tc util for setting bytes_mapped_limit
Mike Blumenkrantz [Wed, 14 Jul 2021 17:44:07 +0000 (13:44 -0400)]
radeonsi: use new tc util for setting bytes_mapped_limit

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11853>

3 years agoutil/tc: add a util function for setting bytes_mapped_limit
Mike Blumenkrantz [Wed, 14 Jul 2021 17:43:13 +0000 (13:43 -0400)]
util/tc: add a util function for setting bytes_mapped_limit

tc drivers set this based on os_get_total_physical_memory()/divisor,
which is going to be totally wrong for 32bit processes and explode
the address space

this util function can be used to handle per-platform clamping

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11853>

3 years agozink: add changed flag for blend states
Mike Blumenkrantz [Tue, 11 May 2021 23:57:31 +0000 (19:57 -0400)]
zink: add changed flag for blend states

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11968>

3 years agobroadcom: don't define internal BPP values twice
Alejandro Piñeiro [Tue, 20 Jul 2021 10:46:16 +0000 (12:46 +0200)]
broadcom: don't define internal BPP values twice

We have a "maximum bpp of all render targets" field for several
packets. For them we were defining manually the possible values. But
all the possible values are the ones defined at the already defined
type "Internal BPP". So in practice we were defining the possible BPP
values twice.

Also for those fields, sometimes we were using the "Internal BPP" type
and in some other cases we were not, so this commit also adds some
consistency.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11976>

3 years agobroadcom/compiler: emit TMU flush before a jump
Juan A. Suarez Romero [Mon, 19 Jul 2021 10:18:11 +0000 (12:18 +0200)]
broadcom/compiler: emit TMU flush before a jump

Like in the case of emitting a block, process pending TMU operations
before a jump is executed.

Fixes dEQP-VK.graphicsfuzz.stable-binarysearch-tree-nested-if-and-conditional.

Fixes: 197090a3fca ("broadcom/compiler: implement pipelining for general
TMU operations")

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11971>

3 years agost/mesa: always use PIPE_USAGE_STAGING for GL_MAP_READ_BIT usage
Marek Olšák [Tue, 20 Jul 2021 09:23:25 +0000 (05:23 -0400)]
st/mesa: always use PIPE_USAGE_STAGING for GL_MAP_READ_BIT usage

This fixes CPU read performance.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5091
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11974>

3 years agoradeonsi: Check aux_context on si_destroy_screen()
Olivier Fourdan [Mon, 19 Jul 2021 07:29:46 +0000 (09:29 +0200)]
radeonsi: Check aux_context on si_destroy_screen()

The function radeonsi_screen_create_impl() tries to create the
aux_context but doesn't actually check for the returned value from
si_create_context().

Then, on si_destroy_screen() the aux_context is used without actually
checking whether it's a thing or not.

As a result, if for any reason si_create_context() failed, we shall
crash in si_destroy_screen() with a NULL pointer dereference trying to
access ((struct si_context *)sscreen->aux_context)->log.

Simply check for aux_context not being NULL to avoid that crash.

Cc: mesa-stable
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11948>

3 years agomesa: fix bindless uniform samplers update
Pierre-Eric Pelloux-Prayer [Fri, 16 Jul 2021 16:43:32 +0000 (18:43 +0200)]
mesa: fix bindless uniform samplers update

According to the comment below some extra magic is needed
for bindless samplers, so don't do an early return in this
case.

Fixes: 736f1f70ab8 ("mesa: skip redundant uniform updates for glUniform")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4806
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11930>

3 years agoaco/optimizer: ensure to not erase high bits when propagating packed constants
Daniel Schürmann [Mon, 19 Jul 2021 13:01:09 +0000 (15:01 +0200)]
aco/optimizer: ensure to not erase high bits when propagating packed constants

Packed constants with non-zero values in the high half
might have been propagated as 16 bit, dropping the high half.

Cc: mesa-stable
Closes: #5070
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11954>

3 years agoclover/il: return IL only for spirv and correct length
Dave Airlie [Wed, 14 Jul 2021 01:32:54 +0000 (11:32 +1000)]
clover/il: return IL only for spirv and correct length

This is specified as  char[] and I don't think requires null termination,
Also we should only return IL based programs.

Fixes CTS spirv_new get_program_il

Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11868>

3 years agozink: remove screen info stuff from draw templates
Mike Blumenkrantz [Fri, 14 May 2021 23:53:24 +0000 (19:53 -0400)]
zink: remove screen info stuff from draw templates

we can initialize templates that we never need to evaluate again at
runtime, cutting the overhead for all tempaltes

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

3 years agozink: add a ctx flag for shader reading basevertex
Mike Blumenkrantz [Tue, 11 May 2021 20:40:06 +0000 (16:40 -0400)]
zink: add a ctx flag for shader reading basevertex

less rare than drawid, but still not great across repeated draw calls
with all the derefs

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

3 years agozink: use drawid_offset directly during draw
Mike Blumenkrantz [Tue, 11 May 2021 20:33:29 +0000 (16:33 -0400)]
zink: use drawid_offset directly during draw

this used to be worth making a local variable for, now it's not

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

3 years agozink: flatten descriptor_refs_dirty into BATCH_CHANGED template
Mike Blumenkrantz [Tue, 11 May 2021 20:20:09 +0000 (16:20 -0400)]
zink: flatten descriptor_refs_dirty into BATCH_CHANGED template

that's all this is now

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

3 years agozink: add a ctx flag for drawid reading
Mike Blumenkrantz [Tue, 11 May 2021 20:16:31 +0000 (16:16 -0400)]
zink: add a ctx flag for drawid reading

avoid needing so many derefs and a bitset to check this during draw

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

3 years agozink: don't rebind vertex buffers if pipeline changes
Mike Blumenkrantz [Tue, 11 May 2021 20:08:15 +0000 (16:08 -0400)]
zink: don't rebind vertex buffers if pipeline changes

two pipelines could use the exact same vertex buffers

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

3 years agozink: stop flagging pipeline dirty for line width changes
Mike Blumenkrantz [Tue, 11 May 2021 20:04:35 +0000 (16:04 -0400)]
zink: stop flagging pipeline dirty for line width changes

this is a dynamic state, it's already out of the pipeline hash

also don't store to ctx

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

3 years agozink: split pipeline_changed to use template value separately
Mike Blumenkrantz [Tue, 11 May 2021 20:00:32 +0000 (16:00 -0400)]
zink: split pipeline_changed to use template value separately

this enables template-based conditional jumps when possible to avoid
needing to evaluate the other conditions

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

3 years agozink: add template for starting new cmdbuf
Mike Blumenkrantz [Tue, 13 Jul 2021 14:37:24 +0000 (10:37 -0400)]
zink: add template for starting new cmdbuf

this avoids reading/updating context changed flags

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

3 years agozink: if descriptor updating flushes, re-call draw/compute
Mike Blumenkrantz [Tue, 11 May 2021 21:49:24 +0000 (17:49 -0400)]
zink: if descriptor updating flushes, re-call draw/compute

ensure upcoming template is correct for now, but this will eventually
be refactored out

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

3 years agozink: make descriptors_update hook return a bool if a flush occurred
Mike Blumenkrantz [Tue, 11 May 2021 21:49:05 +0000 (17:49 -0400)]
zink: make descriptors_update hook return a bool if a flush occurred

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

3 years agozink: add draw template for dynamic state
Mike Blumenkrantz [Tue, 11 May 2021 19:07:15 +0000 (15:07 -0400)]
zink: add draw template for dynamic state

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

3 years agozink: start adding C++ draw templates
Mike Blumenkrantz [Tue, 11 May 2021 18:48:56 +0000 (14:48 -0400)]
zink: start adding C++ draw templates

templated draw functions enable moving some checks/calculations/code
into template conditionals, which are resolved in advance of the draw call,
reducing draw overhead

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

3 years agozink: ifdef out some context prototypes/inlines for c++ compile
Mike Blumenkrantz [Tue, 13 Jul 2021 02:10:00 +0000 (22:10 -0400)]
zink: ifdef out some context prototypes/inlines for c++ compile

msvc HATES this one simple trick for successfully compiling code

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

3 years agozink: optimize shader recalc
Mike Blumenkrantz [Fri, 14 May 2021 22:33:15 +0000 (18:33 -0400)]
zink: optimize shader recalc

now we only have to loop over the changed shaders that exist for the
program, and we can avoid a lot of hashing operations by reusing stored
hash values where possible

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

3 years agozink: set dedicated allocation when needed
Bas Nieuwenhuizen [Wed, 27 Jan 2021 17:06:21 +0000 (12:06 -0500)]
zink: set dedicated allocation when needed

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11958>

3 years agozink: hook up VK_KHR_dedicated_allocation
Mike Blumenkrantz [Mon, 19 Jul 2021 15:33:59 +0000 (11:33 -0400)]
zink: hook up VK_KHR_dedicated_allocation

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

3 years agozink: check for dedicated allocation requirements during image alloc
Mike Blumenkrantz [Mon, 19 Jul 2021 15:33:04 +0000 (11:33 -0400)]
zink: check for dedicated allocation requirements during image alloc

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

3 years agofreedreno/ir3: Reduce choose_instr_dec() and _inc() overhead.
Emma Anholt [Tue, 13 Jul 2021 20:39:36 +0000 (13:39 -0700)]
freedreno/ir3: Reduce choose_instr_dec() and _inc() overhead.

If you didn't have a freed+ready instruction, you'd redo the live_effect
and check_instr() logic multiple times per instr.  Replace the multiple
loops in each function with a ranking that I think is more readable,
reducing the overhead in the process.

debugoptimized dEQP-GLES31.functional.ubo.random.all_per_block_buffers.20
runtime goes from ~3.5s -> ~3.0s on my lazor.  No shader-db change.

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

3 years agofeatures: VK_EXT_color_write_enable for lavapipe
Mike Blumenkrantz [Mon, 19 Jul 2021 21:21:04 +0000 (17:21 -0400)]
features: VK_EXT_color_write_enable for lavapipe

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

3 years agolavapipe: implement VK_EXT_color_write_enable
Mike Blumenkrantz [Mon, 19 Jul 2021 20:23:31 +0000 (16:23 -0400)]
lavapipe: implement VK_EXT_color_write_enable

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

3 years agolavapipe: add a padding member to rendering_state
Mike Blumenkrantz [Mon, 19 Jul 2021 18:54:53 +0000 (14:54 -0400)]
lavapipe: add a padding member to rendering_state

I always forget where to steal bits from otherwise

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

3 years agogallium: Remove dead pb_malloc_buffer_create function prototype
Kenneth Graunke [Fri, 16 Jul 2021 02:39:50 +0000 (19:39 -0700)]
gallium: Remove dead pb_malloc_buffer_create function prototype

This was deleted by commit ec686a66dbf2180631564a3877884b1e4d0c8ea4.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11922>

3 years agowl/shm: don't fetch formats if not requested.
Dave Airlie [Mon, 19 Jul 2021 00:22:09 +0000 (10:22 +1000)]
wl/shm: don't fetch formats if not requested.

This aligns the code with the drm format code

Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Simon Ser <contact@emersion.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11945>

3 years agov3d/driconf: Expose non-MSAA texture limits for mutter and gnome-shell
Jose Maria Casanova Crespo [Fri, 16 Jul 2021 12:30:51 +0000 (14:30 +0200)]
v3d/driconf: Expose non-MSAA texture limits for mutter and gnome-shell

To enable dual 4k displays on mutter or gnome-shell under X11 we need to
expose the non-MSAA texture limit as we did for Xorg at 60a64f028d75ad6
("v3d: Use driconf to expose non-MSAA texture limits for Xorg.")

https://gitlab.gnome.org/GNOME/mutter/-/issues/1874

Cc: 21.1 21.2 mesa-stable
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11926>

3 years agonv50/ir/nir: fix smem size for GL
Karol Herbst [Thu, 27 May 2021 16:59:37 +0000 (18:59 +0200)]
nv50/ir/nir: fix smem size for GL

Originally I fixed the case where the nir itself has a shared mem size of
0, but the frontend (e.g. clover) set it to some other value.

But st/mesa sets the shared mem size on the state object as well and we
end up actually doubling the value in the driver as we set smemSize to the
value from the state object before calling into the compiler.

So just max the value instead.

Fixes the compute_shader.shared-max CTS test.

Fixes: dc667b1f192 ("nv50/ir/nir: fix smem size")
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11047>

3 years agov3dv: implement VK_EXT_physical_device_drm
Andreas Bergmeier [Sun, 28 Feb 2021 18:52:36 +0000 (18:52 +0000)]
v3dv: implement VK_EXT_physical_device_drm

Reviewed-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9320>

3 years agonouveau: Support nir_intrinsic_*_atomic_fadd
M Henning [Fri, 26 Mar 2021 20:06:58 +0000 (13:06 -0700)]
nouveau: Support nir_intrinsic_*_atomic_fadd

This fixes failures in piglit's nv_shader_atomic_float tests with
NV50_PROG_USE_NIR=1

Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9866>

3 years agosoftpipe/aniso: move DDQ calculation to after scaling.
Dave Airlie [Fri, 16 Jul 2021 02:28:57 +0000 (12:28 +1000)]
softpipe/aniso: move DDQ calculation to after scaling.

I've read the papers on EWA filters and it seems like the calculate
DDQ = 2 * A after the scaling of A happens. This seems to make
things less blurry and more like real aniso.

Fixes: 2135aba8 ("softpipe: Constify variables")
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11917>

3 years agopan/bi: Shrink live array to 8-bits
Alyssa Rosenzweig [Fri, 16 Jul 2021 23:17:53 +0000 (19:17 -0400)]
pan/bi: Shrink live array to 8-bits

We only actually use 4-bits, so we could shrink again. But this by
itself means 1/2 the memory usage for liveness analysis and 1/2 the
copying/alloc/free.

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

3 years agopan/bi: Clean up liveness freeing
Alyssa Rosenzweig [Fri, 16 Jul 2021 22:43:19 +0000 (18:43 -0400)]
pan/bi: Clean up liveness freeing

This is ralloc'd, kind of pointless.

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

3 years agopan/bi: Clean up useless casts
Alyssa Rosenzweig [Fri, 16 Jul 2021 22:40:39 +0000 (18:40 -0400)]
pan/bi: Clean up useless casts

Left over from removing inheritance with sed instead of coccinelle.

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

3 years agopan/bi: Copy block bi_block
Alyssa Rosenzweig [Fri, 16 Jul 2021 22:33:43 +0000 (18:33 -0400)]
pan/bi: Copy block bi_block

Gets rid of the silly inheritance everywhere, which has caused _far_
more problems in practice than it has fixed. It was an idea I tried
before the pandemic. It didn't work. I'm finally cleaning it up.

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

3 years agopan/bi: Copy back bi_foreach_successor
Alyssa Rosenzweig [Fri, 16 Jul 2021 22:33:32 +0000 (18:33 -0400)]
pan/bi: Copy back bi_foreach_successor

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

3 years agopan/bi: Copy back add_successor
Alyssa Rosenzweig [Fri, 16 Jul 2021 22:22:54 +0000 (18:22 -0400)]
pan/bi: Copy back add_successor

Trying to get back independent block types.

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

3 years agopan/bi: Copy liveness routines back
Alyssa Rosenzweig [Fri, 16 Jul 2021 22:18:08 +0000 (18:18 -0400)]
pan/bi: Copy liveness routines back

We'll diverge shortly.

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

3 years agoaco: Fix how p_elect interacts with optimizations.
Timur Kristóf [Sat, 17 Jul 2021 21:25:52 +0000 (23:25 +0200)]
aco: Fix how p_elect interacts with optimizations.

Since p_elect doesn't have any operands, ACO's value numbering and/or
the pre-RA optimizer could currently recognize two p_elect instructions
in two different blocks as the same.

This patch adds exec as an operand to p_elect in order to achieve
correct behavior.

Fixes: e66f54e5c83fd545e1a4062e683b584a35dacc00
Closes: #5080
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11943>

3 years agoglsl: replace some C++ code with C
Timothy Arceri [Thu, 15 Jul 2021 12:28:00 +0000 (22:28 +1000)]
glsl: replace some C++ code with C

This replaces some new/delete uses with malloc/free.

This is more consistent with most of the other glsl IR code but
more importantly it allows the game "Battle Block Theater" to
start working on some mesa drivers. The game overrides new and
ends up throwing an assert and crashing when it sees this
function calling new [0].

Note: The game still crashes with radeonsi due to similar conflicts
with LLVM.

CC: mesa-stable
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11907>

3 years agomesa: fix incorrect comment in draw_gallium_multimode
Marek Olšák [Mon, 14 Jun 2021 03:00:44 +0000 (23:00 -0400)]
mesa: fix incorrect comment in draw_gallium_multimode

Fixes: 4566383ae4b ("gallium: move pipe_draw_info::index_bias to pipe_draw_start_count_bias")

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11939>

3 years agomesa: remove unused drawid_offset parameter from DrawGalliumMultiMode
Marek Olšák [Tue, 15 Jun 2021 00:51:20 +0000 (20:51 -0400)]
mesa: remove unused drawid_offset parameter from DrawGalliumMultiMode

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11939>

3 years agost/mesa: inline st_setup_arrays on MSVC too by adding a wrapper
Marek Olšák [Mon, 14 Jun 2021 23:39:33 +0000 (19:39 -0400)]
st/mesa: inline st_setup_arrays on MSVC too by adding a wrapper

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11939>

3 years agoutil/foz: stop crashing on destroy if prepare hasn't been called
Mike Blumenkrantz [Fri, 16 Jul 2021 16:50:21 +0000 (12:50 -0400)]
util/foz: stop crashing on destroy if prepare hasn't been called

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

3 years agoanv: fix feature/property/sizes reported for fragment shading rate
Iván Briano [Thu, 15 Jul 2021 02:38:28 +0000 (19:38 -0700)]
anv: fix feature/property/sizes reported for fragment shading rate

Fixes: 790ff1ceac8 ("anv: fixup physical device properties of fragment shading rate")

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11897>

3 years agoutil/tc: make clear calls async
Mike Blumenkrantz [Tue, 13 Jul 2021 23:52:47 +0000 (19:52 -0400)]
util/tc: make clear calls async

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11864>

3 years agoradeonsi: document a missing synchronization for bindless textures
Marek Olšák [Thu, 15 Jul 2021 15:39:20 +0000 (11:39 -0400)]
radeonsi: document a missing synchronization for bindless textures

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11900>

3 years agoradeonsi: set scratch_state dirty only if ctx->scratch_buffer allocated
Yogesh mohan marimuthu [Tue, 15 Jun 2021 09:13:33 +0000 (14:43 +0530)]
radeonsi: set scratch_state dirty only if ctx->scratch_buffer allocated

if ctx->scratch_buffer is NULL, then no need to update SPI_TMPRING_SIZE
size register.

Signed-off-by: Yogesh mohan marimuthu <yogesh.mohanmarimuthu@amd.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11900>

3 years agoradeonsi: remove redundant setting scratch_state atom dirty
Yogesh mohan marimuthu [Tue, 15 Jun 2021 09:07:40 +0000 (14:37 +0530)]
radeonsi: remove redundant setting scratch_state atom dirty

Whenever scratch buffer is allocated, current spi_tmpring_size and
previous spi_tmpring_size cannot be same and hence scratch_state will be
set dirty as part of "if (spi_tmpring_size != sctx->spi_tmpring_size)".
Removing redundant dirty bit sat while allocating scratch buffer.

Signed-off-by: Yogesh mohan marimuthu <yogesh.mohanmarimuthu@amd.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11900>

3 years agoradeonsi: don't expose no-attachment MSAA 16x on all 1 RB chips due to issues
Marek Olšák [Wed, 14 Jul 2021 12:27:40 +0000 (08:27 -0400)]
radeonsi: don't expose no-attachment MSAA 16x on all 1 RB chips due to issues

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11900>

3 years agolavapipe: don't read line stipple info in pipeline creation if stipple is disabled
Mike Blumenkrantz [Fri, 16 Jul 2021 20:59:37 +0000 (16:59 -0400)]
lavapipe: don't read line stipple info in pipeline creation if stipple is disabled

otherwise these values may be (harmlessly) garbage

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

3 years agogallium/ttn: Add a debug flag for dumping the shaders.
Eric Anholt [Sat, 9 Jan 2021 00:04:42 +0000 (16:04 -0800)]
gallium/ttn: Add a debug flag for dumping the shaders.

Just like for ntt, it's nice to be able to dump the shader that assertion
failed on you.

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

3 years agonir_to_tgsi: Fix image declarations.
Emma Anholt [Tue, 12 Jan 2021 00:21:20 +0000 (16:21 -0800)]
nir_to_tgsi: Fix image declarations.

We failed to translate the target type, which virgl needs for translation.
Also the read_only flag is for consts, shader inputs, and uniforms.  The
access flag gives you the readonly qualifier.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11916>

3 years agoanv: Stop reference counting semaphores
Jason Ekstrand [Tue, 23 Mar 2021 19:00:25 +0000 (14:00 -0500)]
anv: Stop reference counting semaphores

The only reason we had to refcount semaphores was for the ancient
sync_file semaphores which we used for pre-syncobj kernels.  Now that we
assume syncobj and that code is gone, we don't need reference counting
anymore either.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9777>

3 years agoanv: Drop unused sync_file and BO semaphore code
Jason Ekstrand [Tue, 23 Mar 2021 18:58:34 +0000 (13:58 -0500)]
anv: Drop unused sync_file and BO semaphore code

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9777>

3 years agoanv: Assume syncobj support
Jason Ekstrand [Tue, 23 Mar 2021 18:58:12 +0000 (13:58 -0500)]
anv: Assume syncobj support

Sync object for i915 support has been in upstream Linux since 4.14 which
is 3.5 years old at this point and, as far as we can tell, it also
exists in all the ChromeOS kernels.  Assuming it allows us to drop some
of our more gnarly synchronization fall-back paths.

At the time of merge, ChromeOS was on the following kernels:

 - kernel 3.18: SKL
 - kernel 4.4: BYT, KBL, APL
 - Kernel 4.14: BDW, GLK

All of the pre-4.14 kernels have had syncobj support back-ported.

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

3 years agointel/eu: Start validating LSC message descriptors
Jason Ekstrand [Wed, 30 Jun 2021 15:27:27 +0000 (10:27 -0500)]
intel/eu: Start validating LSC message descriptors

This is certainly not a full validation but it at least gets the
framework in place and validates one hard-to-find restriction.

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11657>

3 years agointel/compiler: Enable has_iadd3 option on XeHP
Sagar Ghuge [Tue, 29 Jun 2021 00:49:01 +0000 (17:49 -0700)]
intel/compiler: Enable has_iadd3 option on XeHP

shader-db result is inconclusive but doesn't harm to include it for
reference.

Shader-db result on XeHPG:

total instructions in shared programs: 1397405 -> 1397315 (<.01%)
instructions in affected programs: 88252 -> 88162 (-0.10%)
helped: 20
HURT: 7
helped stats (abs) min: 1 max: 18 x̄: 7.20 x̃: 7
helped stats (rel) min: 0.03% max: 2.20% x̄: 0.37% x̃: 0.23%
HURT stats (abs)   min: 4 max: 23 x̄: 7.71 x̃: 4
HURT stats (rel)   min: 0.10% max: 0.68% x̄: 0.22% x̃: 0.11%
95% mean confidence interval for instructions value: -6.81 0.14
95% mean confidence interval for instructions %-change: -0.42% -0.02%
Inconclusive result (value mean confidence interval includes 0).

total cycles in shared programs: 119924219 -> 119931868 (<.01%)
cycles in affected programs: 45029193 -> 45036842 (0.02%)
helped: 11
HURT: 16
helped stats (abs) min: 15 max: 5490 x̄: 1655.73 x̃: 140
helped stats (rel) min: <.01% max: 0.35% x̄: 0.11% x̃: <.01%
HURT stats (abs)   min: 1 max: 2944 x̄: 1616.38 x̃: 1743
HURT stats (rel)   min: <.01% max: 0.17% x̄: 0.09% x̃: 0.10%
95% mean confidence interval for cycles value: -606.11 1172.70
95% mean confidence interval for cycles %-change: -0.04% 0.07%
Inconclusive result (value mean confidence interval includes 0).

v2:
- Include shader-db result (Jason)

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

3 years agonir: Add optimizations for iadd3
Sagar Ghuge [Tue, 29 Jun 2021 00:41:20 +0000 (17:41 -0700)]
nir: Add optimizations for iadd3

This patch also adds has_iadd3 bit to give more control if backend
supports ternary add instruction or not.

v2:
- Add patterns in late optimization (Connor Abbott)

Suggested-by: Alyssa/Jason
Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11596>

3 years agointel/compiler: Allow ternary add to promote source to immediate
Sagar Ghuge [Thu, 8 Jul 2021 01:14:57 +0000 (18:14 -0700)]
intel/compiler: Allow ternary add to promote source to immediate

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

3 years agointel/compiler: Make decision based on source type instead of opcode
Sagar Ghuge [Thu, 8 Jul 2021 01:10:19 +0000 (18:10 -0700)]
intel/compiler: Make decision based on source type instead of opcode

This patch restructure code a little bit to check if source can be
represented as immediate operand. This is a foundation for next patch
which add checks for integer operand as well.

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

3 years agointel/compiler: Add support for ternary add instruction on XeHP
Sagar Ghuge [Sat, 6 Jun 2020 05:40:26 +0000 (22:40 -0700)]
intel/compiler: Add support for ternary add instruction on XeHP

v2:
- Re-arragne opcode in correct order (Matt Turner)
- Move ADD3 case closer to LRP (Jason)

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

3 years agonir: Add new opcode for ternary addition
Sagar Ghuge [Sat, 6 Jun 2020 05:52:33 +0000 (22:52 -0700)]
nir: Add new opcode for ternary addition

v2:
- Make it 2src commutative (Connor Abbott)

Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11596>

3 years agoradv: Use pre-computed viewport transform for NGG culling state.
Timur Kristóf [Wed, 14 Jul 2021 10:47:35 +0000 (12:47 +0200)]
radv: Use pre-computed viewport transform for NGG culling state.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11839>

3 years agoradv: remove unused variable from radv_emit_viewport
Mike Blumenkrantz [Thu, 15 Jul 2021 13:46:27 +0000 (09:46 -0400)]
radv: remove unused variable from radv_emit_viewport

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11839>

3 years agoradv: pre-calculate viewport transforms
Mike Blumenkrantz [Fri, 9 Jul 2021 18:30:43 +0000 (14:30 -0400)]
radv: pre-calculate viewport transforms

this requires more storage in the viewport struct, but it avoids
the need to repeatedly calculate the same transform if e.g., a meta
operation occurs, which can save about 5% cpu in some cases

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11839>

3 years agoradv: merge si_write_viewport into radv_emit_viewport
Mike Blumenkrantz [Fri, 9 Jul 2021 18:30:02 +0000 (14:30 -0400)]
radv: merge si_write_viewport into radv_emit_viewport

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11839>

3 years agofreedreno: fix wrong tile aligment for 3 CCU gpu
Danylo Piliaiev [Fri, 16 Jul 2021 13:01:14 +0000 (16:01 +0300)]
freedreno: fix wrong tile aligment for 3 CCU gpu

Fixes: 78c8a8af80d5b0ccd68dd85ff7ecbb699be31f7d "freedreno: Generate device-info tables at build time"
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5060

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11928>

3 years agoaco: Remove s_and with exec when all lanes are active.
Timur Kristóf [Fri, 18 Jun 2021 13:25:35 +0000 (15:25 +0200)]
aco: Remove s_and with exec when all lanes are active.

This helps NGG GS and culling shaders.
No Fossil DB changes without NGG culling.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11458>

3 years agoaco: Allow elect to take advantage of knowing when all lanes are active.
Timur Kristóf [Fri, 18 Jun 2021 13:21:43 +0000 (15:21 +0200)]
aco: Allow elect to take advantage of knowing when all lanes are active.

Implement elect using a pseudo-op which is lowered during the
insert_exec_mask pass. This makes it possible to emit a more
optimal sequence when the exec mask is constant.

Fossil DB results on Sienna Cichlid:
Totals from 211 (0.16% of 128647) affected shaders:
CodeSize: 2254356 -> 2240468 (-0.62%); split: -0.62%, +0.00%
Instrs: 438471 -> 434996 (-0.79%); split: -0.80%, +0.01%
Latency: 2717082 -> 2709400 (-0.28%); split: -0.28%, +0.00%
InvThroughput: 566987 -> 566342 (-0.11%); split: -0.11%, +0.00%
Copies: 40058 -> 40162 (+0.26%)
Branches: 31209 -> 31211 (+0.01%)
PreSGPRs: 9927 -> 10125 (+1.99%)

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11458>

3 years agoaco: Swap s_and operand order for ballot.
Timur Kristóf [Fri, 18 Jun 2021 09:48:18 +0000 (11:48 +0200)]
aco: Swap s_and operand order for ballot.

This allows our optimizer to recognize this and eliminate it when
it can prove that the s_and with exec is unneeded.

Fossil DB changes on Sienna Cichlid:
Totals from 1969 (1.53% of 128647) affected shaders:
CodeSize: 9468228 -> 9469348 (+0.01%); split: -0.00%, +0.01%
Instrs: 1773566 -> 1773581 (+0.00%); split: -0.01%, +0.01%
Latency: 19504042 -> 19503385 (-0.00%); split: -0.00%, +0.00%
InvThroughput: 3617406 -> 3617333 (-0.00%)
Copies: 108998 -> 110592 (+1.46%)

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11458>