platform/upstream/mesa.git
4 years agoRevert "radeonsi/gfx10: disable vertex grouping"
Marek Olšák [Wed, 14 Oct 2020 18:46:48 +0000 (14:46 -0400)]
Revert "radeonsi/gfx10: disable vertex grouping"

This reverts commit 42f921387b9c939cf1d809fa447d7980f73aa591.

It causes GPU hangs on gfx10.3.

Fixes: a23802bcb9a - ac,radeonsi: start adding support for gfx10.3

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

4 years agov3dv: Initialize time before usage by free_stale_bos.
Vinson Lee [Wed, 14 Oct 2020 23:55:12 +0000 (16:55 -0700)]
v3dv: Initialize time before usage by free_stale_bos.

Fix defect reported by Coverity Scan.

Uninitialized scalar variable (UNINIT)
uninit_use_in_call: Using uninitialized value time.tv_sec when calling free_stale_bos.

Fixes: f78c99f357ee ("v3dv/bo: add a maximum size for the bo_cache and a envvar to configure it")
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7154>

4 years agov3dv: Remove unsigned comparison to zero.
Vinson Lee [Wed, 14 Oct 2020 23:25:31 +0000 (16:25 -0700)]
v3dv: Remove unsigned comparison to zero.

index is of type uint32_t.

Fix defect reported by Coverity Scan.

Macro compares unsigned to 0 (NO_EFFECT)
unsigned_compare: This greater-than-or-equal-to-zero comparison of
an unsigned value is always true. index >= 0U.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7153>

4 years agointel/isl: Drop redundant unpack of unorm channels
Nanley Chery [Thu, 15 Oct 2020 17:11:57 +0000 (10:11 -0700)]
intel/isl: Drop redundant unpack of unorm channels

Fixes: 09ced654204 ("intel/isl: Add format conversion code")
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7168>

4 years agost/mesa: Add missing sentinels in format_map[]
Nanley Chery [Thu, 15 Oct 2020 16:25:23 +0000 (09:25 -0700)]
st/mesa: Add missing sentinels in format_map[]

Cc: mesa-stable
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7169>

4 years agozink: mark ARB_sample_shading as supported
Mike Blumenkrantz [Fri, 16 Oct 2020 16:19:34 +0000 (12:19 -0400)]
zink: mark ARB_sample_shading as supported

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

4 years agozink: add a pipe_context::get_sample_position hook
Mike Blumenkrantz [Fri, 16 Oct 2020 16:18:59 +0000 (12:18 -0400)]
zink: add a pipe_context::get_sample_position hook

standard for most gallium drivers, not sure why it's not a util function

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

4 years agozink: add ntv handling for ARB_sample_shading
Mike Blumenkrantz [Fri, 16 Oct 2020 16:18:05 +0000 (12:18 -0400)]
zink: add ntv handling for ARB_sample_shading

this involves variable handling and decorations as well as a weird bitcast
for the array[1] gl_SampleMask in spirv

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

4 years agozink: add helper for vec-type input variables in ntv
Mike Blumenkrantz [Fri, 16 Oct 2020 14:21:26 +0000 (10:21 -0400)]
zink: add helper for vec-type input variables in ntv

we'll see a lot of reuse of this type of thing, so we can avoid duplicating
it later

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

4 years agozink: implement ARB_draw_indirect
Mike Blumenkrantz [Sat, 11 Jul 2020 15:46:21 +0000 (11:46 -0400)]
zink: implement ARB_draw_indirect

other than the vaguely gross case of primitive restart with incompatible
draw modes and/or restart index, this is no trouble since the buffer formats
are compatible

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

4 years agozink: set 3.3 complete in features.txt
Mike Blumenkrantz [Fri, 10 Jul 2020 19:07:17 +0000 (15:07 -0400)]
zink: set 3.3 complete in features.txt

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

4 years agozink: bump GLSL to 3.30
Mike Blumenkrantz [Fri, 10 Jul 2020 19:02:24 +0000 (15:02 -0400)]
zink: bump GLSL to 3.30

somehow all these tests Just Pass™

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

4 years agozink: set 3.2 complete in features.txt
Mike Blumenkrantz [Fri, 10 Jul 2020 19:06:11 +0000 (15:06 -0400)]
zink: set 3.2 complete in features.txt

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

4 years agozink: GLSL 1.50
Mike Blumenkrantz [Mon, 6 Jul 2020 13:18:07 +0000 (09:18 -0400)]
zink: GLSL 1.50

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

4 years agozink: mark off GL 3.1 as done in features.txt
Mike Blumenkrantz [Fri, 3 Jul 2020 20:16:17 +0000 (16:16 -0400)]
zink: mark off GL 3.1 as done in features.txt

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

4 years agozink: bump to glsl 1.40
Mike Blumenkrantz [Wed, 1 Jul 2020 19:51:14 +0000 (15:51 -0400)]
zink: bump to glsl 1.40

but leaving compat mode at 1.30 for now

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

4 years agozink: enable gs pipe caps
Mike Blumenkrantz [Wed, 14 Oct 2020 14:42:17 +0000 (10:42 -0400)]
zink: enable gs pipe caps

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

4 years agozink: add gallium handling for geometry shaders
Mike Blumenkrantz [Wed, 14 Oct 2020 14:41:29 +0000 (10:41 -0400)]
zink: add gallium handling for geometry shaders

this is the create/bind/destroy hooks as well as the u_blitter shader
save during blit setup

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

4 years agozink: round out handling for streamout buffer stride setting during draw
Mike Blumenkrantz [Wed, 14 Oct 2020 14:40:14 +0000 (10:40 -0400)]
zink: round out handling for streamout buffer stride setting during draw

this adds cases for tess and geometry shaders in the xfb path for grabbing
stride off the shader

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

4 years agozink: remove ADJACENCY prim types from primconvert path
Mike Blumenkrantz [Wed, 14 Oct 2020 14:39:24 +0000 (10:39 -0400)]
zink: remove ADJACENCY prim types from primconvert path

we can (and do) actually handle these natively

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

4 years agozink: add handling for gs in ntv
Mike Blumenkrantz [Wed, 14 Oct 2020 14:38:02 +0000 (10:38 -0400)]
zink: add handling for gs in ntv

this hooks up execution modes and the gs-specific instructions

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

4 years agozink: re-transform gl_Position for gs input
Mike Blumenkrantz [Wed, 14 Oct 2020 14:34:06 +0000 (10:34 -0400)]
zink: re-transform gl_Position for gs input

we've transformed this in the vertex output, so we need to undo that here

ideally we'd only be performing this transform once, but that's going to get
complicated later with the halfz extension which requires shader keys on top
of this, so we can get around to simplifying things at that stage

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

4 years agozink: add ntv handling for geometry shader variables
Mike Blumenkrantz [Wed, 14 Oct 2020 14:32:36 +0000 (10:32 -0400)]
zink: add ntv handling for geometry shader variables

these can reuse the unified loader codepath

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

4 years agozink: handle shader io vars more generically for use with gs
Mike Blumenkrantz [Wed, 14 Oct 2020 14:29:30 +0000 (10:29 -0400)]
zink: handle shader io vars more generically for use with gs

geometry shaders have more inputs and use a lot of the same codepaths as
vertex shaders, so these changes add the inputs and remove checks for vertex-only
shaders

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

4 years agozink: add some spirv_builder functions we'll be using for geometry shaders
Mike Blumenkrantz [Wed, 14 Oct 2020 14:27:56 +0000 (10:27 -0400)]
zink: add some spirv_builder functions we'll be using for geometry shaders

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

4 years agor600/sfn: Update state docu
Gert Wollny [Wed, 14 Oct 2020 17:47:32 +0000 (19:47 +0200)]
r600/sfn: Update state docu

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

4 years agor600/sfn: Fix the parameter component type
Gert Wollny [Wed, 14 Oct 2020 12:58:00 +0000 (14:58 +0200)]
r600/sfn: Fix the parameter component type

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7142>

4 years agor600/sfn: Use register keep-alive also when scanning the shader
Gert Wollny [Wed, 14 Oct 2020 12:57:38 +0000 (14:57 +0200)]
r600/sfn: Use register keep-alive also when scanning the shader

Temporaries don't appear in the mapping, so they are not in the initial
register list.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7142>

4 years agor600/sfn: fix remapping of deleted attributes
Gert Wollny [Mon, 12 Oct 2020 20:12:55 +0000 (22:12 +0200)]
r600/sfn: fix remapping of deleted attributes

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

4 years agor600/sfn: use 32 bit bools
Gert Wollny [Mon, 12 Oct 2020 15:51:46 +0000 (17:51 +0200)]
r600/sfn: use 32 bit bools

That's closer to what the driver actually does.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7142>

4 years agor600/sfn: use cacheless op for coherent image write
Gert Wollny [Wed, 7 Oct 2020 12:06:43 +0000 (14:06 +0200)]
r600/sfn: use cacheless op for coherent image write

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7142>

4 years agor600/sfn: Handle mem barrier and image barrier by using ACK
Gert Wollny [Wed, 7 Oct 2020 08:42:17 +0000 (10:42 +0200)]
r600/sfn: Handle mem barrier and image barrier by using ACK

When reading from and writing to the same image in a shader the
memory_barrier can possibly be handled by emitting an ack-write and then
wait for the ack when the memory barrier is set.

Not sure whow well this goes with the syncronization across all shader
invocations though.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7142>

4 years agor600/sfn: use shared pointer to GPR for FS sysvalues
Gert Wollny [Tue, 6 Oct 2020 18:21:23 +0000 (20:21 +0200)]
r600/sfn: use shared pointer to GPR for FS sysvalues

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7142>

4 years agor600/sfn: Rework get_temp_register to return a smart pointer to GPRValue
Gert Wollny [Tue, 6 Oct 2020 17:50:52 +0000 (19:50 +0200)]
r600/sfn: Rework get_temp_register to return a smart pointer to GPRValue

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7142>

4 years agor600/sfn: fix mega fetch count for SSBO/Image atomics result fetch
Gert Wollny [Tue, 6 Oct 2020 16:46:09 +0000 (18:46 +0200)]
r600/sfn: fix mega fetch count for SSBO/Image atomics result fetch

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7142>

4 years agor600/sfn: Fix keepalive patch
Gert Wollny [Tue, 6 Oct 2020 16:45:33 +0000 (18:45 +0200)]
r600/sfn: Fix keepalive patch

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

4 years agor600/sfn: Fix ssbo resource offset for buffer loads
Gert Wollny [Wed, 30 Sep 2020 18:28:10 +0000 (20:28 +0200)]
r600/sfn: Fix ssbo resource offset for buffer loads

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7142>

4 years agor600/sfn: Don't reuse registers for workgroup ID and local invocation ID
Gert Wollny [Wed, 30 Sep 2020 18:14:39 +0000 (20:14 +0200)]
r600/sfn: Don't reuse registers for workgroup ID and local invocation ID

This fixes a number of compute shader tests. I'm not sure why though.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7142>

4 years agoglsl: Initialize add_uniform_to_shader member var in constructor.
Vinson Lee [Wed, 14 Oct 2020 01:17:10 +0000 (18:17 -0700)]
glsl: Initialize add_uniform_to_shader member var in constructor.

Fix defect reported by Coverity Scan.

Uninitialized pointer field (UNINIT_CTOR)
uninit_member: Non-static class member var is not initialized in
this constructor nor in any functions that it calls.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7121>

4 years agozink: fix stencil wrapping
Mike Blumenkrantz [Thu, 15 Oct 2020 22:54:22 +0000 (18:54 -0400)]
zink: fix stencil wrapping

this was using the wrong enums

Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7176>

4 years agoglsl: Initialize lower_ubo_reference_visitor members in constructor.
Vinson Lee [Wed, 14 Oct 2020 01:07:41 +0000 (18:07 -0700)]
glsl: Initialize lower_ubo_reference_visitor members in constructor.

Fix defects reported by Coverity Scan.

Uninitialized pointer field (UNINIT_CTOR)
uninit_member: Non-static class member buffer_access_type is not
initialized in this constructor nor in any functions that it
calls.
uninit_member: Non-static class member uniform_block is not
initialized in this constructor nor in any functions that it
calls.
uninit_member: Non-static class member progress is not initialized
in this constructor nor in any functions that it calls.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7120>

4 years agov3dv: Fix assert using assign instead of compare.
Vinson Lee [Wed, 14 Oct 2020 07:08:13 +0000 (00:08 -0700)]
v3dv: Fix assert using assign instead of compare.

Fix defect reported by Coverity Scan.

Assign instead of compare (PW.ASSIGN_WHERE_COMPARE_MEANT)
assign_where_compare_meant: use of "=" where "==" may have been intended

Fixes: c75846e674e8 ("v3dv: implement DRM modifier setup for WSI")
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7124>

4 years agointel/fs: Handle nir_intrinsic_terminate
Caio Marcelo de Oliveira Filho [Fri, 8 May 2020 16:08:55 +0000 (09:08 -0700)]
intel/fs: Handle nir_intrinsic_terminate

For terminate operation, jump the invocation without predicating on
the rest of the quad being disabled -- which is what is done for
demote and discard.

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

4 years agospirv: Handle SpvOpTerminateInvocation
Caio Marcelo de Oliveira Filho [Thu, 7 May 2020 04:47:29 +0000 (21:47 -0700)]
spirv: Handle SpvOpTerminateInvocation

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

4 years agospirv: Update headers and metadata from latest Khronos commit
Caio Marcelo de Oliveira Filho [Wed, 14 Oct 2020 21:22:27 +0000 (14:22 -0700)]
spirv: Update headers and metadata from latest Khronos commit

This corresponds to c43a43c7cc3af55910b9bec2a71e3e8a622443cf
(" Register the Xenia emulator as a generator (#171)") in
https://github.com/KhronosGroup/SPIRV-Headers.

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

4 years agonir: Add nir_intrinsic_terminate and nir_intrinsic_terminate_if
Caio Marcelo de Oliveira Filho [Fri, 8 May 2020 16:08:34 +0000 (09:08 -0700)]
nir: Add nir_intrinsic_terminate and nir_intrinsic_terminate_if

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

4 years agoaco: add missing SCC clobber in get_buffer_size
Rhys Perry [Thu, 15 Oct 2020 13:10:07 +0000 (14:10 +0100)]
aco: add missing SCC clobber in get_buffer_size

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Fixes: fcd6d832456 ("aco: fix imageSize()/textureSize() with large buffers on GFX8")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7162>

4 years agoRevert "iris: Use the data cache for indirect UBO pulls"
Jason Ekstrand [Thu, 15 Oct 2020 20:06:33 +0000 (15:06 -0500)]
Revert "iris: Use the data cache for indirect UBO pulls"

This reverts commit 3b784370c376dbe642c2a8232169363d4fda0c02.

This fixes a 30% performance regression in Manhattan 3.1 on Icelake.

Fixes: 3b784370c376d "iris: Use the data cache for indirect UBO pulls"
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7173>

4 years agoanv: Go back to using the sampler for UBO pulls
Jason Ekstrand [Thu, 15 Oct 2020 20:11:56 +0000 (15:11 -0500)]
anv: Go back to using the sampler for UBO pulls

This functionally reverts b54d37a8676acbd725ef1817479f2630d3ea95be.

This fixes a 12% performance regression in DOOM (2016) on Tigerlake.

Fixes: b54d37a8676a "anv: Use the data cache for indirect UBO..."
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7173>

4 years agovc4: Enable nir_lower_io for uniforms
Jose Maria Casanova Crespo [Thu, 15 Oct 2020 11:38:11 +0000 (13:38 +0200)]
vc4: Enable nir_lower_io for uniforms

Altough the driver isn't expected to receive nir_var_uniform types
from GLSL this happens currently for one of the internal driver shaders.

At vc4_get_yuv_fs at vc4_blit.c there is a "stride" nir_var_uniform
variable that needs to be lowered so the shader can be compiled.

This regression was affecting several piglit tests under
spec/ext_image_dma_buf_import and at least MythTV application.

Fixes: 96d99f2eccb ("vc4: Only call nir_lower_io on shader_in/out")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3536
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Piotr Oniszczuk <piotr.oniszczuk@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7160>

4 years agovc4: Add missing range_base/range at nir_load_ubos in yuv_blit fs.
Jose Maria Casanova Crespo [Thu, 15 Oct 2020 11:27:50 +0000 (13:27 +0200)]
vc4: Add missing range_base/range at nir_load_ubos in yuv_blit fs.

Fixes: f3b33a5a35e ("nir: Add a range_base+range to nir_intrinsic_load_ubo().")
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Piotr Oniszczuk <piotr.oniszczuk@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7160>

4 years agovc4: Add missing load_ubo set_align in yuv_blit fs.
Jose Maria Casanova Crespo [Thu, 15 Oct 2020 11:22:28 +0000 (13:22 +0200)]
vc4: Add missing load_ubo set_align in yuv_blit fs.

Fixes: e78a7a18252 ("nir: Assert memory loads are aligned")
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Piotr Oniszczuk <piotr.oniszczuk@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7160>

4 years agonir/opt_load_store_vectorize: add some tests for discard/demote behaviour
Rhys Perry [Thu, 15 Oct 2020 13:21:52 +0000 (14:21 +0100)]
nir/opt_load_store_vectorize: add some tests for discard/demote behaviour

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7163>

4 years agonir/opt_load_store_vectorize: don't vectorize stores across demote
Rhys Perry [Thu, 15 Oct 2020 13:13:36 +0000 (14:13 +0100)]
nir/opt_load_store_vectorize: don't vectorize stores across demote

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Fixes: ce9205c03bd ("nir: add a load/store vectorization pass")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7163>

4 years agointel: Remove Gen10-specific device entries
Ian Romanick [Wed, 7 Oct 2020 17:28:47 +0000 (10:28 -0700)]
intel: Remove Gen10-specific device entries

The enables removal of gen_device_info::is_cannonlake.

v2: Remove GEN10_FEATURES and GEN10_HW_INFO macros.  Suggested by
Lionel.

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

4 years agointel: Remove Gen10-speicific perf support
Ian Romanick [Wed, 7 Oct 2020 17:25:42 +0000 (10:25 -0700)]
intel: Remove Gen10-speicific perf support

v2: Also update Makefile.sources and Android build files.  Noticed by
Lionel.

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

4 years agoanv: Don't generate Gen10-specific functions
Ian Romanick [Thu, 24 Sep 2020 20:29:00 +0000 (13:29 -0700)]
anv: Don't generate Gen10-specific functions

v2: Re-wrap lines in meson.build.  Suggested by Jason.

v3: Also update Makefile.sources and Android build files.  Noticed by
Lionel.

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

4 years agoiris: Don't generate Gen10-specific functions
Ian Romanick [Thu, 24 Sep 2020 20:28:03 +0000 (13:28 -0700)]
iris: Don't generate Gen10-specific functions

v2: Also update Makefile.sources and Android build files.  Noticed by
Lionel.  Remove more stuff from iris_context.h.

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

4 years agointel/isl: Don't generate Gen10-specific functions
Ian Romanick [Thu, 24 Sep 2020 20:08:00 +0000 (13:08 -0700)]
intel/isl: Don't generate Gen10-specific functions

v2: Also update Makefile.sources and Android build files.  Noticed by
Lionel.

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

4 years agointel: Remove Gen10-specific cache config code
Ian Romanick [Thu, 24 Sep 2020 20:02:41 +0000 (13:02 -0700)]
intel: Remove Gen10-specific cache config code

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

4 years agoi965: Don't build Gen10-specific files and libraries
Ian Romanick [Thu, 24 Sep 2020 19:36:13 +0000 (12:36 -0700)]
i965: Don't build Gen10-specific files and libraries

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

4 years agoi965: Remove Gen10-specific state setup and workarounds
Ian Romanick [Thu, 24 Sep 2020 19:35:25 +0000 (12:35 -0700)]
i965: Remove Gen10-specific state setup and workarounds

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

4 years agointel/compiler: Remove Gen10-specific code
Ian Romanick [Thu, 24 Sep 2020 18:31:13 +0000 (11:31 -0700)]
intel/compiler: Remove Gen10-specific code

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

4 years agointel: Disable all support for Gen10
Ian Romanick [Thu, 24 Sep 2020 19:49:19 +0000 (12:49 -0700)]
intel: Disable all support for Gen10

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

4 years agoi965: Rename gen10_emit_isp_disable to gen7_emit_isp_disable
Ian Romanick [Thu, 24 Sep 2020 18:49:13 +0000 (11:49 -0700)]
i965: Rename gen10_emit_isp_disable to gen7_emit_isp_disable

It's used on Gen7+, and there's nothing Gen10-specific about it.

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

4 years agoi965: Make MOCS index tables static const
Ian Romanick [Thu, 24 Sep 2020 19:33:25 +0000 (12:33 -0700)]
i965: Make MOCS index tables static const

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

4 years agoi965: Silence many unused parameter warnings in genX_state_upload.c
Ian Romanick [Thu, 24 Sep 2020 19:32:11 +0000 (12:32 -0700)]
i965: Silence many unused parameter warnings in genX_state_upload.c

This file gets built per-Gen, so the warnings are repeated a lot.

src/mesa/drivers/dri/i965/genX_state_upload.c: In function ‘vf_invalidate_for_vb_48bit_transitions’:
src/mesa/drivers/dri/i965/genX_state_upload.c:405:60: warning: unused parameter ‘brw’ [-Wunused-parameter]
  405 | vf_invalidate_for_vb_48bit_transitions(struct brw_context *brw)
      |                                        ~~~~~~~~~~~~~~~~~~~~^~~
src/mesa/drivers/dri/i965/genX_state_upload.c: In function ‘vf_invalidate_for_ib_48bit_transition’:
src/mesa/drivers/dri/i965/genX_state_upload.c:444:59: warning: unused parameter ‘brw’ [-Wunused-parameter]
  444 | vf_invalidate_for_ib_48bit_transition(struct brw_context *brw)
      |                                       ~~~~~~~~~~~~~~~~~~~~^~~
src/mesa/drivers/dri/i965/genX_state_upload.c: In function ‘gen4_upload_default_color’:
src/mesa/drivers/dri/i965/genX_state_upload.c:4951:40: warning: unused parameter ‘format’ [-Wunused-parameter]
 4951 |                            mesa_format format, GLenum base_format,
      |                            ~~~~~~~~~~~~^~~~~~

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

4 years agoi965: Silence many unused parameter warnings in genX_blorp_exec.c
Ian Romanick [Thu, 24 Sep 2020 19:29:53 +0000 (12:29 -0700)]
i965: Silence many unused parameter warnings in genX_blorp_exec.c

This file gets built per-Gen, so the warnings are repeated a lot.

src/mesa/drivers/dri/i965/genX_blorp_exec.c: In function ‘blorp_get_surface_address’:
src/mesa/drivers/dri/i965/genX_blorp_exec.c:98:47: warning: unused parameter ‘blorp_batch’ [-Wunused-parameter]
   98 | blorp_get_surface_address(struct blorp_batch *blorp_batch,
      |                           ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
src/mesa/drivers/dri/i965/genX_blorp_exec.c:99:48: warning: unused parameter ‘address’ [-Wunused-parameter]
   99 |                           struct blorp_address address)
      |                           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/mesa/drivers/dri/i965/genX_blorp_exec.c: In function ‘blorp_vf_invalidate_for_vb_48b_transitions’:
src/mesa/drivers/dri/i965/genX_blorp_exec.c:208:64: warning: unused parameter ‘batch’ [-Wunused-parameter]
  208 | blorp_vf_invalidate_for_vb_48b_transitions(struct blorp_batch *batch,
      |                                            ~~~~~~~~~~~~~~~~~~~~^~~~~
src/mesa/drivers/dri/i965/genX_blorp_exec.c:209:72: warning: unused parameter ‘addrs’ [-Wunused-parameter]
  209 |                                            const struct blorp_address *addrs,
      |                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
src/mesa/drivers/dri/i965/genX_blorp_exec.c:211:53: warning: unused parameter ‘num_vbs’ [-Wunused-parameter]
  211 |                                            unsigned num_vbs)
      |                                            ~~~~~~~~~^~~~~~~

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

4 years agointel: Silence many unused parameter warnings in blorp_genX_exec.h
Ian Romanick [Thu, 24 Sep 2020 19:19:39 +0000 (12:19 -0700)]
intel: Silence many unused parameter warnings in blorp_genX_exec.h

I considered a couple other options (including adding #if / #endif
around UNUSED and adding an UNUSED_ON_SOME_GEN), but this seemed the
best.  There was also at least one other case of having UNUSED on a
paramter that is sometimes unused (params in
blorp_emit_color_calc_state).

This header gets included in a lot of places (esp. in files that get
built per-Gen), so the warnings are repeated a lot.

In file included from src/mesa/drivers/dri/i965/genX_blorp_exec.c:33:
src/intel/blorp/blorp_genX_exec.h: In function ‘emit_urb_config’:
src/intel/blorp/blorp_genX_exec.h:193:48: warning: unused parameter ‘deref_block_size’ [-Wunused-parameter]
  193 |                 enum gen_urb_deref_block_size *deref_block_size)
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
src/intel/blorp/blorp_genX_exec.h: In function ‘blorp_fill_vertex_buffer_state’:
src/intel/blorp/blorp_genX_exec.h:350:52: warning: unused parameter ‘batch’ [-Wunused-parameter]
  350 | blorp_fill_vertex_buffer_state(struct blorp_batch *batch,
      |                                ~~~~~~~~~~~~~~~~~~~~^~~~~
src/intel/blorp/blorp_genX_exec.h: In function ‘blorp_emit_surface_state’:
src/intel/blorp/blorp_genX_exec.h:1403:42: warning: unused parameter ‘aux_op’ [-Wunused-parameter]
 1403 |                          enum isl_aux_op aux_op,
      |                          ~~~~~~~~~~~~~~~~^~~~~~
src/intel/blorp/blorp_genX_exec.h: In function ‘blorp_update_clear_color’:
src/intel/blorp/blorp_genX_exec.h:1867:46: warning: unused parameter ‘batch’ [-Wunused-parameter]
 1867 | blorp_update_clear_color(struct blorp_batch *batch,
      |                          ~~~~~~~~~~~~~~~~~~~~^~~~~

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

4 years agoi965: Allow viewport array extensions with allow_higher_compat_version
Ian Romanick [Tue, 13 Oct 2020 01:13:19 +0000 (18:13 -0700)]
i965: Allow viewport array extensions with allow_higher_compat_version

Also fix the obtuse comment.  I had to dig back through the commit logs
to find the real issue.  GL_ARB_viewport_array requires geometry
shaders, and in i965 the only way to have that is with a 3.2+ Core
profile context... or use allow_higher_compat_version.

This increases the maximum Compatibility profile version from 4.0 to 4.6
(on supported hardware) when the allow_higher_compat_version option is
used.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7118>

4 years agoci: Unskip fragment_ops tests on Bifrost
Tomeu Vizoso [Thu, 15 Oct 2020 13:00:55 +0000 (15:00 +0200)]
ci: Unskip fragment_ops tests on Bifrost

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7165>

4 years agozink: add last few format maps for ARB_vertex_type_2_10_10_10_rev
Mike Blumenkrantz [Fri, 10 Jul 2020 18:58:55 +0000 (14:58 -0400)]
zink: add last few format maps for ARB_vertex_type_2_10_10_10_rev

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

4 years agozink: add VK_BUFFER_USAGE_INDEX_BUFFER_BIT to vertex buffer creation
Mike Blumenkrantz [Thu, 2 Jul 2020 21:40:16 +0000 (17:40 -0400)]
zink: add VK_BUFFER_USAGE_INDEX_BUFFER_BIT to vertex buffer creation

these can be mixed vertex/index buffers, and there's not really any way
to know in advance

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

4 years agozink: handle null attachment for ARB_texture_buffer_object samplers
Mike Blumenkrantz [Thu, 2 Jul 2020 18:56:43 +0000 (14:56 -0400)]
zink: handle null attachment for ARB_texture_buffer_object samplers

according to spec:

If no buffer object is bound to the buffer texture,
the results of the texel access are undefined.

so this is technically allowed

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

4 years agozink: assert valid format in zink_create_sampler_view()
Mike Blumenkrantz [Thu, 2 Jul 2020 16:39:09 +0000 (12:39 -0400)]
zink: assert valid format in zink_create_sampler_view()

catch issues higher up the stack here

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

4 years agozink: ensure resource tracking for sampler buffers in render batches
Mike Blumenkrantz [Thu, 2 Jul 2020 16:27:41 +0000 (12:27 -0400)]
zink: ensure resource tracking for sampler buffers in render batches

this fixes some synchronization issues when using e.g., buffer textures
that change their data repeatedly

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

4 years agozink: implement ARB_texture_buffer_object
Mike Blumenkrantz [Thu, 2 Jul 2020 15:54:53 +0000 (11:54 -0400)]
zink: implement ARB_texture_buffer_object

the pipe cap for this was enabled for some reason, but the actual functionality
was never implemented

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

4 years agozink: increase descriptor pool sizes for other descriptor types we'll be using
Mike Blumenkrantz [Tue, 11 Aug 2020 15:02:01 +0000 (11:02 -0400)]
zink: increase descriptor pool sizes for other descriptor types we'll be using

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

4 years agoglsl: more accurately handle swizzle in 64bit varying split with no left value
Mike Blumenkrantz [Wed, 15 Jul 2020 16:24:35 +0000 (12:24 -0400)]
glsl: more accurately handle swizzle in 64bit varying split with no left value

as implied in the surrounding code, left_components can be 0 here, in which
case creating a left swizzle is unnecessary (and triggers an assert)

this moves a failing assert farther down the stack to a more useful location
when trying to pack e.g., struct[3] { dvec3; float; }

ref spec@arb_gpu_shader_fp64@execution@inout@vs-out-fs-in-s1-s2@3-dvec2-float

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7134>

4 years agoaco: don't use v_pack_b32_f16 if 16-bit input denormals are flushed
Rhys Perry [Tue, 13 Oct 2020 12:38:16 +0000 (13:38 +0100)]
aco: don't use v_pack_b32_f16 if 16-bit input denormals are flushed

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7111>

4 years agoaco: propagate literals into sub-dword pseudo instructions on GFX9+
Rhys Perry [Tue, 13 Oct 2020 12:33:57 +0000 (13:33 +0100)]
aco: propagate literals into sub-dword pseudo instructions on GFX9+

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7111>

4 years agoaco: implement 16-bit literals
Rhys Perry [Tue, 13 Oct 2020 12:32:38 +0000 (13:32 +0100)]
aco: implement 16-bit literals

We can copy any value into a 16-bit subregister with a 3 dword
v_pack_b32_f16 on GFX10 or a v_and_b32+v_or_b32 on GFX9.

Because the generated code can depend on the register assignment and to
improve constant propagation, Builder::copy creates a p_create_vector in
the case of sub-dword literals.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7111>

4 years agopanfrost: Add blend shader support to bifrost
Boris Brezillon [Mon, 12 Oct 2020 13:18:35 +0000 (15:18 +0200)]
panfrost: Add blend shader support to bifrost

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopanfrost: Add missing tile-buffer formats to the format enum
Boris Brezillon [Fri, 9 Oct 2020 13:45:16 +0000 (15:45 +0200)]
panfrost: Add missing tile-buffer formats to the format enum

Some tile-buffer formats are missing, add them.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopan/bi: Special-case load_input for blend shaders
Boris Brezillon [Wed, 14 Oct 2020 12:11:52 +0000 (14:11 +0200)]
pan/bi: Special-case load_input for blend shaders

Blend shaders are passed blend inputs through r0-r3. Let's emit a MOV
from those register when we see a load_input intrinsic.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopan/bi: Reserve r0-r3 in blend shaders
Boris Brezillon [Wed, 14 Oct 2020 12:10:14 +0000 (14:10 +0200)]
pan/bi: Reserve r0-r3 in blend shaders

Blend shaders are passed the source color through r0-r3. Let's avoid
allocating those. The is definitely not the right solution but is good
enough for now.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopan/bi: Special-case BLEND instruction emission for blend shaders
Boris Brezillon [Mon, 12 Oct 2020 13:17:42 +0000 (15:17 +0200)]
pan/bi: Special-case BLEND instruction emission for blend shaders

Blend shaders shouldn't use the blend descriptors stored in the FAU RAM
since this is what triggered the blend shader call in the first place.
The descriptor is instead extracted from the compiler inputs and passed
as a constant to the blend instruction.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopan/bi: Collect return addresses of blend calls
Boris Brezillon [Tue, 13 Oct 2020 10:26:11 +0000 (12:26 +0200)]
pan/bi: Collect return addresses of blend calls

We will need that for blend shaders so they can be passed a return
address and jump back to the fragment shader when they're done.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopan/bi: Add load_output support
Boris Brezillon [Mon, 12 Oct 2020 13:02:29 +0000 (15:02 +0200)]
pan/bi: Add load_output support

This is mapped to the LD_TILE instruction. Note that multi-sample RTs
are not supported yet.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopanfrost: Flag blend shader function as an entry point
Boris Brezillon [Mon, 12 Oct 2020 12:28:46 +0000 (14:28 +0200)]
panfrost: Flag blend shader function as an entry point

Some lowering functions used by bifrost are searching for an entry point.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopanfrost: Scalarize nir_load_blend_const_color_rgba
Boris Brezillon [Mon, 12 Oct 2020 12:26:47 +0000 (14:26 +0200)]
panfrost: Scalarize nir_load_blend_const_color_rgba

Bifrost is a scalar architecture, which means we can't load all
components of the blend constant at once. We could add a lowering pass
to scalarize nir_load_blend_const_color_rgba, but it's easier to handle
that at when lowering the blend equations.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopanfrost: Add a "Bifrost Internal Blend" descriptor
Boris Brezillon [Mon, 12 Oct 2020 12:16:53 +0000 (14:16 +0200)]
panfrost: Add a "Bifrost Internal Blend" descriptor

This descriptor can be passed directly as a constant to the bifrost
BLEND instruction and we'll need to pass this information to blend
shaders. Let's extract the "Bifrost Internal Blend" descriptor from the
"Bifrost Blend Overlay" definition.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopan/bi: Support indirect jumps
Boris Brezillon [Tue, 13 Oct 2020 10:22:02 +0000 (12:22 +0200)]
pan/bi: Support indirect jumps

We need that for blend shaders which are passed the return address
through r48.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopan/bi: Add support for load_blend_const_color_{r,g,b,a}_float
Boris Brezillon [Mon, 12 Oct 2020 09:25:25 +0000 (11:25 +0200)]
pan/bi: Add support for load_blend_const_color_{r,g,b,a}_float

Needed for blend shaders.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopan/bi: Rework blend descriptor access handling
Boris Brezillon [Mon, 12 Oct 2020 09:19:45 +0000 (11:19 +0200)]
pan/bi: Rework blend descriptor access handling

The current logic assumes blend descriptors are always retrieved from
the blend descriptor slots present in the FAU RAM, but this assumption
no longer stands when we add blend shaders to the mix. In that case we
need to use an 'opaque blend' whose descriptor is passed through
embedded constants.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopan/bi: Get rid of the regs argument in bi_assign_fau_idx()
Boris Brezillon [Mon, 12 Oct 2020 09:07:45 +0000 (11:07 +0200)]
pan/bi: Get rid of the regs argument in bi_assign_fau_idx()

Regs are already part of the bundle struct, let's just pass a pointer
to this bundle object instead of passing both the bundle and regs.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopan/bi: Use canonical name for FAU RAM sources
Boris Brezillon [Mon, 12 Oct 2020 08:57:40 +0000 (10:57 +0200)]
pan/bi: Use canonical name for FAU RAM sources

The uniform_constant field and BIFROST_SRC_CONST_{LO,HI} definitions
seem to imply that those only deal with embedded constants. Let's
rename them to reflect the fact that they actually encode accesses to
the Fast-Access-Uniform RAM.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopan/bi: Copy blend shader info from compile_inputs
Boris Brezillon [Mon, 12 Oct 2020 13:00:02 +0000 (15:00 +0200)]
pan/bi: Copy blend shader info from compile_inputs

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopanfrost: Extend compile_inputs to pass a blend descriptor
Boris Brezillon [Mon, 12 Oct 2020 12:56:45 +0000 (14:56 +0200)]
panfrost: Extend compile_inputs to pass a blend descriptor

This is needed for BLEND instructions used from a blend shader so we can
store the result of the shader-based blending back to the tile buffer.
We let the gallium driver build this blend descriptor for us in order
to keep the compiler cmdstream-agnostic.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

4 years agopanfrost: Fix fixed-function blend on bifrost
Boris Brezillon [Fri, 9 Oct 2020 12:00:28 +0000 (14:00 +0200)]
panfrost: Fix fixed-function blend on bifrost

The conversion from a 32b float to a 16b fixed-point number was wrong.

Fixes: 8389976b7c09 ("panfrost: XML-ify the blend descriptors")
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>