mesa.git
5 years agomesa: release references to image textures when a context is destroyed
Gert Wollny [Sat, 2 Feb 2019 12:17:16 +0000 (13:17 +0100)]
mesa: release references to image textures when a context is destroyed

When a texture is still bound as an image and the context it was bound in
is destroyed but not the texture, then the texture will still hold the
resource and will not be freed when it is finally destroyed. Hence, release
these references when the context is destroyed.

This leak was triggered by virglrenderer:
https://gitlab.freedesktop.org/virgl/virglrenderer/issues/86

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
5 years agoradeonsi: release tokens after creating the shader program
Gert Wollny [Thu, 31 Jan 2019 13:50:41 +0000 (14:50 +0100)]
radeonsi: release tokens after creating the shader program

ureg_get_tokens clears the reference to the tokens, and create_compute_state makes
a copy, hence the tokens must be explicitely released.

Fixes: Direct leak of 256 byte(s) in 1 object(s) allocated from:
    #0 0x7ff729cf3c60 in realloc (/usr/lib64/gcc/x86_64-pc-linux-gnu/7.3.0/libasan.so+0xdbc60)
    #1 0x7ff721b1240c in tokens_expand ../../samba/mesa/src/gallium/auxiliary/tgsi/tgsi_ureg.c:234
    #2 0x7ff721b1c9c0 in get_tokens ../../samba/mesa/src/gallium/auxiliary/tgsi/tgsi_ureg.c:257
    #3 0x7ff721b1c9c0 in copy_instructions ../../samba/mesa/src/gallium/auxiliary/tgsi/tgsi_ureg.c:2040
    #4 0x7ff721b1c9c0 in ureg_finalize ../../samba/mesa/src/gallium/auxiliary/tgsi/tgsi_ureg.c:2090
    #5 0x7ff721b1e919 in ureg_get_tokens ../../samba/mesa/src/gallium/auxiliary/tgsi/tgsi_ureg.c:2167
    #6 0x7ff721f8b35a in si_create_dma_compute_shader ../../samba/mesa/src/gallium/drivers/radeonsi/si_shaderlib_tgsi.c:219
    #7 0x7ff722043ed9 in si_compute_do_clear_or_copy ../../samba/mesa/src/gallium/drivers/radeonsi/si_compute_blit.c:156
    #8 0x7ff7220448d3 in si_clear_buffer ../../samba/mesa/src/gallium/drivers/radeonsi/si_compute_blit.c:247
    #9 0x7ff7220350e8 in vi_dcc_clear_level ../../samba/mesa/src/gallium/drivers/radeonsi/si_clear.c:274

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
5 years agoisl: assert that Gen8+ don't have bit6_swizzling
Caio Marcelo de Oliveira Filho [Thu, 31 Jan 2019 21:18:19 +0000 (13:18 -0800)]
isl: assert that Gen8+ don't have bit6_swizzling

v2: Rewrite the condition to more clearly match the comment. (Jordan)

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
5 years agoanv: skip bit6 swizzle detection in Gen8+
Caio Marcelo de Oliveira Filho [Thu, 31 Jan 2019 21:29:40 +0000 (13:29 -0800)]
anv: skip bit6 swizzle detection in Gen8+

It is always false on Gen8+.  Also, move the variable definition near
its use.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
5 years agoi965: skip bit6 swizzle detection in Gen8+
Caio Marcelo de Oliveira Filho [Thu, 31 Jan 2019 21:28:24 +0000 (13:28 -0800)]
i965: skip bit6 swizzle detection in Gen8+

It is always false on Gen8+.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
5 years agonir: keep the phi order when splitting blocks
Caio Marcelo de Oliveira Filho [Sat, 26 Jan 2019 09:05:14 +0000 (01:05 -0800)]
nir: keep the phi order when splitting blocks

All things being equal is better to keep the original order.  Since
the new block is empty, push the phis in order to tail.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Daniel Schürmann <daniel.schuermann@campus.tu-berlin.de>
5 years agonv50,nvc0: add explicit settings for recent caps
Ilia Mirkin [Tue, 5 Feb 2019 04:33:09 +0000 (23:33 -0500)]
nv50,nvc0: add explicit settings for recent caps

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: 19.0 <mesa-stable@lists.freedesktop.org>
5 years agopanfrost: Implement Midgard shader toolchain
Alyssa Rosenzweig [Wed, 30 Jan 2019 01:11:31 +0000 (01:11 +0000)]
panfrost: Implement Midgard shader toolchain

This patch implements the free Midgard shader toolchain: the assembler,
the disassembler, and the NIR-based compiler. The assembler is a
standalone inaccessible Python script for reference purposes. The
disassembler and the compiler are implemented in C, accessible via the
standalone `midgard_compiler` binary. Later patches will use these
interfaces from the driver for online compilation.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Acked-by: Rob Clark <robdclark@gmail.com>
Acked-by: Eric Anholt <eric@anholt.net>
Acked-by: Emil Velikov <emil.velikov@collabora.com>
5 years agopanfrost: Initial stub for Panfrost driver
Alyssa Rosenzweig [Tue, 29 Jan 2019 05:46:07 +0000 (05:46 +0000)]
panfrost: Initial stub for Panfrost driver

This patch adds an initial stub for the Gallium driver, containing
simple screen functions and the majority of the driver headers but no
actual functionality. It further adds the winsys glue for linking in
this stub driver via kmsro on Rockchip/Amlogic boards.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Acked-by: Rob Clark <robdclark@gmail.com>
Acked-by: Eric Anholt <eric@anholt.net>
Acked-by: Emil Velikov <emil.velikov@collabora.com>
5 years agoradeonsi: fix crashing performance counters (division by zero)
Marek Olšák [Sat, 26 Jan 2019 01:39:40 +0000 (20:39 -0500)]
radeonsi: fix crashing performance counters (division by zero)

Fixes: e2b9329f17 "radeonsi: move remaining perfcounter code into si_perfcounter.c"
5 years agoradeonsi: handle render_condition_enable in si_compute_clear_render_target
Marek Olšák [Wed, 23 Jan 2019 21:54:28 +0000 (16:54 -0500)]
radeonsi: handle render_condition_enable in si_compute_clear_render_target

5 years agoradeonsi: use compute for clear_render_target when possible
Sonny Jiang [Mon, 21 Jan 2019 23:16:40 +0000 (18:16 -0500)]
radeonsi: use compute for clear_render_target when possible

Signed-off-by: Sonny Jiang <sonny.jiang@amd.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
5 years agost/mesa: Set pipe_image_view::shader_access in PBO readpixels.
Kenneth Graunke [Fri, 1 Feb 2019 00:54:43 +0000 (16:54 -0800)]
st/mesa: Set pipe_image_view::shader_access in PBO readpixels.

Commit 8b626a22b24089edf90cb1b06e5b1895bb36c61b introduced a new
pipe_image_view::shader_access field, indicating the access mode
specified in the shader.  st/mesa's built-in PBO download shader
creates a write-only image buffer, so we should flag it as such.

Nobody uses this field yet (Iris will), so we don't need to backport
this fix to stable branches.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
5 years agointel: Add more PCI Device IDs for Coffee Lake and Ice Lake.
Rodrigo Vivi [Sat, 2 Feb 2019 08:03:04 +0000 (00:03 -0800)]
intel: Add more PCI Device IDs for Coffee Lake and Ice Lake.

Align with kernel commits:

5e0f5a58b167 ("drm/i915/cfl: Adding another PCI Device ID.")
03ca3cf8e9aa ("drm/i915/icl: Adding few more device IDs for Ice Lake")

Cc: José Roberto de Souza <jose.souza@intel.com>
Cc: Kenneth Graunke <kenneth@whitecape.org>
Cc: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
5 years agoanv: Fix VK_EXT_transform_feedback working with varyings packed in PSIZ
Danylo Piliaiev [Fri, 1 Feb 2019 10:21:38 +0000 (12:21 +0200)]
anv: Fix VK_EXT_transform_feedback working with varyings packed in PSIZ

Transform feedback did not set correct SO_DECL.ComponentMask for
varyings packed in VARYING_SLOT_PSIZ:
 gl_Layer         - VARYING_SLOT_LAYER    in VARYING_SLOT_PSIZ.y
 gl_ViewportIndex - VARYING_SLOT_VIEWPORT in VARYING_SLOT_PSIZ.z
 gl_PointSize     - VARYING_SLOT_PSIZ     in VARYING_SLOT_PSIZ.w

Fixes: 36ee2fd61c8f94 "anv: Implement the basic form of VK_EXT_transform_feedback"
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
5 years agoradv: Handle VK_ATTACHMENT_UNUSED in CmdClearAttachment
Danylo Piliaiev [Thu, 31 Jan 2019 13:56:21 +0000 (15:56 +0200)]
radv: Handle VK_ATTACHMENT_UNUSED in CmdClearAttachment

From the Vulkan 1.0.98 spec for vkCmdClearAttachments:

"If any attachment to be cleared in the current subpass is VK_ATTACHMENT_UNUSED,
then the clear has no effect on that attachment."

"If the aspectMask member of any element of pAttachments contains
VK_IMAGE_ASPECT_COLOR_BIT, then the colorAttachment member of that
element must either refer to a color attachment which is VK_ATTACHMENT_UNUSED,
or must be a valid color attachment."

"If the aspectMask member of any element of pAttachments contains
VK_IMAGE_ASPECT_DEPTH_BIT, then the current subpass' depth/stencil attachment
must either be VK_ATTACHMENT_UNUSED, or must have a depth component"

"If the aspectMask member of any element of pAttachments contains
VK_IMAGE_ASPECT_STENCIL_BIT, then the current subpass' depth/stencil attachment
must either be VK_ATTACHMENT_UNUSED, or must have a stencil component"

Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoanv: Handle VK_ATTACHMENT_UNUSED in colorAttachment
Danylo Piliaiev [Thu, 31 Jan 2019 13:49:35 +0000 (15:49 +0200)]
anv: Handle VK_ATTACHMENT_UNUSED in colorAttachment

From the Vulkan 1.0.98 spec for vkCmdClearAttachments:

"If the aspectMask member of any element of pAttachments contains
VK_IMAGE_ASPECT_COLOR_BIT, then the colorAttachment member of that
element must either refer to a color attachment which is VK_ATTACHMENT_UNUSED,
or must be a valid color attachment."

Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
5 years agoradv: don't flush src stages when dstStageMask == BOTTOM_OF_PIPE
Samuel Pitoiset [Tue, 29 Jan 2019 21:19:04 +0000 (22:19 +0100)]
radv: don't flush src stages when dstStageMask == BOTTOM_OF_PIPE

Original patch by Fredrik Höglund.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: do not set preserveAttachments for internal render passes
Samuel Pitoiset [Tue, 29 Jan 2019 21:19:03 +0000 (22:19 +0100)]
radv: do not set preserveAttachments for internal render passes

We don't use that.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: drop useless checks when resolving subpass color attachments
Samuel Pitoiset [Tue, 29 Jan 2019 21:19:02 +0000 (22:19 +0100)]
radv: drop useless checks when resolving subpass color attachments

The Vulkan spec says:
   "If pResolveAttachments is not NULL, for each resolve attachment
    that does not have the value VK_ATTACHMENT_UNUSED, the
    corresponding color attachment must not have the value
    VK_ATTACHMENT_UNUSED."

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: execute external subpass barriers after ending subpasses
Samuel Pitoiset [Tue, 29 Jan 2019 21:19:01 +0000 (22:19 +0100)]
radv: execute external subpass barriers after ending subpasses

Outgoing dependencies (ie. external) should happen after the subpass.
This doesn't change anything for subpass resolves as we already
make sure that attachments are shader readable.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: accumulate all ingoing external dependencies to the first subpass
Samuel Pitoiset [Tue, 29 Jan 2019 21:19:00 +0000 (22:19 +0100)]
radv: accumulate all ingoing external dependencies to the first subpass

In case two or more subpasses declare ingoing external dependencies.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: handle subpass dependencies correctly
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:59 +0000 (22:18 +0100)]
radv: handle subpass dependencies correctly

The different masks should be accumulated. For example if two
subpasses declare an outgoing dependency (ie. dst ==
VK_SUBPASS_EXTERNAL).

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: track if subpasses have color attachments
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:58 +0000 (22:18 +0100)]
radv: track if subpasses have color attachments

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: add radv_render_pass_add_subpass_dep() helper
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:57 +0000 (22:18 +0100)]
radv: add radv_render_pass_add_subpass_dep() helper

To share common code that handles subpass dependencies.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: move some render pass things to radv_render_pass_compile()
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:56 +0000 (22:18 +0100)]
radv: move some render pass things to radv_render_pass_compile()

radv_render_pass_compile() is common to vkCreateRenderPass()
and vkCreateRenderPass2().

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: handle final layouts at end of every subpass and render pass
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:54 +0000 (22:18 +0100)]
radv: handle final layouts at end of every subpass and render pass

That shouldn't change anything as we check if the last
subpass id is the final subpass.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: determine the last subpass id for every attachments
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:53 +0000 (22:18 +0100)]
radv: determine the last subpass id for every attachments

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: use the new attachments array when starting subpasses
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:52 +0000 (22:18 +0100)]
radv: use the new attachments array when starting subpasses

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: store the list of attachments for every subpass
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:51 +0000 (22:18 +0100)]
radv: store the list of attachments for every subpass

This reworks how the depth stencil attachment is used for
simplicity. This also introduces radv_render_pass_compile()
helper that will be used for further optimizations.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: move subpass image transitions to radv_cmd_buffer_begin_subpass()
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:50 +0000 (22:18 +0100)]
radv: move subpass image transitions to radv_cmd_buffer_begin_subpass()

Instead of doing them in radv_cmd_buffer_set_subpass().

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: add radv_cmd_buffer_begin_subpass() helper
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:49 +0000 (22:18 +0100)]
radv: add radv_cmd_buffer_begin_subpass() helper

To unify some code in BeginRenderPass() and NextSubpass().
Based on Intel ANV driver.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: remove useless MAYBE_UNUSED in CmdBeginRenderPass()
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:48 +0000 (22:18 +0100)]
radv: remove useless MAYBE_UNUSED in CmdBeginRenderPass()

Trivial.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: remove unused radv_render_pass_attachment::view_mask
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:47 +0000 (22:18 +0100)]
radv: remove unused radv_render_pass_attachment::view_mask

Trivial.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: bail out when no image transitions will be performed
Samuel Pitoiset [Tue, 29 Jan 2019 21:18:46 +0000 (22:18 +0100)]
radv: bail out when no image transitions will be performed

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agomeson: drop the xcb-xrandr version requirement
Marek Olšák [Thu, 24 Jan 2019 00:48:26 +0000 (19:48 -0500)]
meson: drop the xcb-xrandr version requirement

autotools doesn't have any requirement. This fixes meson on Ubuntu 16.04.

Cc: 18.3 19.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
5 years agowsi/display: add comment
Eric Engestrom [Sun, 16 Sep 2018 14:22:29 +0000 (15:22 +0100)]
wsi/display: add comment

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
5 years agorelnotes: Add VK_EXT_buffer_device_address
Jason Ekstrand [Sat, 2 Feb 2019 14:41:19 +0000 (08:41 -0600)]
relnotes: Add VK_EXT_buffer_device_address

5 years agoanv: Implement VK_EXT_buffer_device_address
Jason Ekstrand [Sat, 19 Jan 2019 14:54:32 +0000 (08:54 -0600)]
anv: Implement VK_EXT_buffer_device_address

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
5 years agointel/fs: Implement nir_intrinsic_global_atomic_*
Jason Ekstrand [Mon, 26 Nov 2018 21:15:04 +0000 (15:15 -0600)]
intel/fs: Implement nir_intrinsic_global_atomic_*

eviewed-by: Kenneth Graunke <kenneth@whitecape.org>

5 years agointel/fs: Use SENDS for A64 writes on gen9+
Jason Ekstrand [Fri, 16 Nov 2018 16:13:51 +0000 (10:13 -0600)]
intel/fs: Use SENDS for A64 writes on gen9+

eviewed-by: Kenneth Graunke <kenneth@whitecape.org>

5 years agointel/fs: Implement load/store_global with A64 untyped messages
Jason Ekstrand [Wed, 14 Nov 2018 23:13:57 +0000 (17:13 -0600)]
intel/fs: Implement load/store_global with A64 untyped messages

eviewed-by: Kenneth Graunke <kenneth@whitecape.org>

5 years agointel/fs: Do the grf127 hack on SIMD8 instructions in SIMD16 mode
Jason Ekstrand [Tue, 15 Jan 2019 16:53:44 +0000 (10:53 -0600)]
intel/fs: Do the grf127 hack on SIMD8 instructions in SIMD16 mode

Previously, we only applied the fix to shaders with a dispatch mode of
SIMD8 but the code it relies on for SIMD16 mode only applies to SIMD16
instructions.  If you have a SIMD8 instruction in a SIMD16 shader,
neither would trigger and the restriction could still be hit.

Fixes: 232ed8980217dd "i965/fs: Register allocator shoudn't use grf127..."
Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/fs: Properly handle 64-bit types in LOAD_PAYLOAD
Jason Ekstrand [Thu, 15 Nov 2018 04:38:23 +0000 (22:38 -0600)]
intel/fs: Properly handle 64-bit types in LOAD_PAYLOAD

By just assigning dst.type to src[i].type, we ensure that the offset at
the end of the loop actually offsets it by the right number of
registers.  Otherwise, we'll get into a case where we copy with a Q type
and then offset with a D type and things get out of sync.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/fs/cse: Split create_copy_instr into three cases
Jason Ekstrand [Tue, 15 Jan 2019 04:21:48 +0000 (22:21 -0600)]
intel/fs/cse: Split create_copy_instr into three cases

Previously, we tried to combine all cases where the instruction being
CSE'd writes to more than one MOV worth of registers into one case with
a bit of special casing for LOAD_PAYLOAD.  This commit splits things so
that LOAD_PAYLOAD is entirely it's own case.  This makes tweaking the
LOAD_PAYLOAD case simpler in the next commit.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/nir: Add global support to lower_mem_access_bit_sizes
Jason Ekstrand [Wed, 14 Nov 2018 21:40:43 +0000 (15:40 -0600)]
intel/nir: Add global support to lower_mem_access_bit_sizes

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/fs: Fix memory corruption when compiling a CS
Oscar Blumberg [Sat, 26 Jan 2019 15:47:42 +0000 (16:47 +0100)]
intel/fs: Fix memory corruption when compiling a CS

Missing check for shader stage in the fs_visitor would corrupt the
cs_prog_data.push information and trigger crashes / corruption later
when uploading the CS state.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agospirv: Support LocalSizeId and LocalSizeHintId execution modes
Jason Ekstrand [Tue, 22 Jan 2019 19:55:20 +0000 (13:55 -0600)]
spirv: Support LocalSizeId and LocalSizeHintId execution modes

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
5 years agospirv: Handle OpExecutionModeId
Jason Ekstrand [Tue, 22 Jan 2019 19:41:15 +0000 (13:41 -0600)]
spirv: Handle OpExecutionModeId

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
5 years agospirv: Handle constants and types before execution modes
Jason Ekstrand [Tue, 22 Jan 2019 19:42:08 +0000 (13:42 -0600)]
spirv: Handle constants and types before execution modes

We already defer handling the actual execution modes until after we've
created the shader.  This just moves it a tiny bit further so we
actually have constants and types and can handle OpExecutionModeId.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
5 years agospirv: Rework handling of spec constant workgroup size built-ins
Jason Ekstrand [Wed, 23 Jan 2019 18:49:15 +0000 (12:49 -0600)]
spirv: Rework handling of spec constant workgroup size built-ins

Instead of handling it as part of the handling of constant instructions,
just stash the vtn_value when we see the decoration and handle it
explicitly later.  This will let us re-order handling of constant
instructions without breaking the Vulkan SPIR-V requirement that
decorating a specialization constant as the WorkgroupSize built-in
overrides the workgroup size set as an execution mode.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
5 years agospirv: Replace vtn_constant_value with vtn_constant_uint
Jason Ekstrand [Tue, 22 Jan 2019 17:57:48 +0000 (11:57 -0600)]
spirv: Replace vtn_constant_value with vtn_constant_uint

The uint version is less typing, supports different bit sizes, and is
probably a bit more safe because we're actually verifying that the
SPIR-V value is an integer scalar constant.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
5 years agoradv: fix build
Samuel Pitoiset [Fri, 1 Feb 2019 14:30:31 +0000 (15:30 +0100)]
radv: fix build

Fixes: 9b9ccee4d64 ("radv: take LDS into account for compute shader occupancy stats")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
5 years agoradv: take LDS into account for compute shader occupancy stats
Timothy Arceri [Fri, 1 Feb 2019 11:04:39 +0000 (22:04 +1100)]
radv: take LDS into account for compute shader occupancy stats

Ported from d205faeb6c96.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoac/radv/radeonsi: add ac_get_num_physical_sgprs() helper
Timothy Arceri [Fri, 1 Feb 2019 10:16:54 +0000 (21:16 +1100)]
ac/radv/radeonsi: add ac_get_num_physical_sgprs() helper

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
5 years agodocs: add GL_EXT_texture_compression_s3tc_srgb to release notes
Gurchetan Singh [Thu, 31 Jan 2019 16:47:47 +0000 (08:47 -0800)]
docs: add GL_EXT_texture_compression_s3tc_srgb to release notes

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
5 years agost/mesa: expose EXT_texture_compression_s3tc_srgb
Gurchetan Singh [Wed, 30 Jan 2019 18:48:19 +0000 (10:48 -0800)]
st/mesa: expose EXT_texture_compression_s3tc_srgb

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
5 years agoi965: Set flag for EXT_texture_compression_s3tc_srgb
Gurchetan Singh [Wed, 30 Jan 2019 18:26:50 +0000 (10:26 -0800)]
i965: Set flag for EXT_texture_compression_s3tc_srgb

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
5 years agomesa/main: Expose EXT_texture_compression_s3tc_srgb
Gurchetan Singh [Wed, 30 Jan 2019 02:46:11 +0000 (18:46 -0800)]
mesa/main: Expose EXT_texture_compression_s3tc_srgb

Required for the following test:

bin/compressedteximage GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT

pass when emulating GL on GLES.

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
5 years agost/glsl_to_nir: remove dead local variables
Timothy Arceri [Thu, 31 Jan 2019 04:59:18 +0000 (15:59 +1100)]
st/glsl_to_nir: remove dead local variables

Without this we do not end up with a deterministic NIR because
temporary register variables are added in random order. NIR must
be deterministic because we use it to produce a sha for the
radeonsi backends disk cache.

This fixes the shader cache for a bunch of shaders.

Another positive is that this results in a large reduction in the
size of the NIR that the state tracker stores to the disk cache.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agomeson: remove -std=c++11 from intel/tools
Dylan Baker [Tue, 29 Jan 2019 19:25:30 +0000 (11:25 -0800)]
meson: remove -std=c++11 from intel/tools

for meson all C++ code is already compiled as C++11, so it's
unnecessary. It's also the wrong way to do this, if we really needed
this the correct way is to set:

```meson
executable(
  ...
  override_options : ['cpp_std=c++11'],
)
```

Which ensures not only that the correct syntax for the current
compiler is used, but also that meson doesn't create arguments like
`-std=c++14 ... -std=c++11`

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
5 years agomeson: fix style in intel/tools
Dylan Baker [Tue, 29 Jan 2019 19:24:14 +0000 (11:24 -0800)]
meson: fix style in intel/tools

The `:` in options should always have one space before and after `foo
: bar`, and lists do not get spaces around the braces: `[foo]` not `[
foo ]`

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
5 years agomeson: remove build_by_default : true
Dylan Baker [Tue, 29 Jan 2019 19:22:53 +0000 (11:22 -0800)]
meson: remove build_by_default : true

Which is and has always been the default. This is largely an artifact
of how the building of these tools was controlled when the meson build
was originally created.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
5 years agodocs: update calendar, add news item and link release notes for 18.3.3
Emil Velikov [Thu, 31 Jan 2019 21:17:38 +0000 (21:17 +0000)]
docs: update calendar, add news item and link release notes for 18.3.3

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
5 years agodocs: add sha256 checksums for 18.3.3
Emil Velikov [Thu, 31 Jan 2019 21:08:36 +0000 (21:08 +0000)]
docs: add sha256 checksums for 18.3.3

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
(cherry picked from commit 7475d7727f172387ac3d069887f3095dcb884649)

5 years agodocs: add release notes for 18.3.3
Emil Velikov [Thu, 31 Jan 2019 20:58:09 +0000 (20:58 +0000)]
docs: add release notes for 18.3.3

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
(cherry picked from commit 190a79f462710f04d67eaefe498ef6ae5b7f5b1a)
[Emil: drop VERSION hunk]
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
 Conflicts:
VERSION

5 years agost/mesa: Fix topogun-1.06-orc-84k-resize.trace crash
Neha Bhende [Tue, 29 Jan 2019 19:21:00 +0000 (12:21 -0700)]
st/mesa: Fix topogun-1.06-orc-84k-resize.trace crash

We need to initialize all fields in rs->prim explicitly while
creating new rastpos stage.

Fixes: bac8534267 ("st/mesa: allow glDrawElements to work with GL_SELECT
feedback")

v2: Initializing all fields in rs->prim as per Ilia.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
5 years agoandroid,autotools,i965: Fix location of float64_glsl.h
Dylan Baker [Wed, 30 Jan 2019 18:02:41 +0000 (10:02 -0800)]
android,autotools,i965: Fix location of float64_glsl.h

Android.mk and autotools disagree about where generated files should
go, which wasn't a problem until we wanted to build a dist
tarball. This corrects the problem by changing the output and include
paths to be the same on android and autotools (meson already has the
correct include path).

Fixes: 7d7b30835cfb9eb89beca9fb8593d0954f79b84d
       ("automake: Fix path to generated source")
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
5 years agogallium: allow more PIPE_RESOURCE_ driver flags
Marek Olšák [Wed, 30 Jan 2019 19:20:03 +0000 (14:20 -0500)]
gallium: allow more PIPE_RESOURCE_ driver flags

radeonsi has 8 and will probably have 9 soon.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agov3d: Fix image_load_store clamping of signed integer stores.
Eric Anholt [Wed, 30 Jan 2019 19:17:35 +0000 (11:17 -0800)]
v3d: Fix image_load_store clamping of signed integer stores.

This was copy-and-paste fail, that oddly showed up in the CTS's
reinterprets of r32f, rgba8, and srgba8 to rgba8i, but not r32ui and r32i
to rgba8i or reinterprets to other signed int formats.

Fixes: 6281f26f064a ("v3d: Add support for shader_image_load_store.")
5 years agomesa: Skip partial InvalidateFramebuffer of packed depth/stencil.
Eric Anholt [Wed, 30 Jan 2019 17:33:53 +0000 (09:33 -0800)]
mesa: Skip partial InvalidateFramebuffer of packed depth/stencil.

One of the CTS cases tries to invalidate just stencil of packed
depth/stencil, and we incorrectly lost the depth contents.

Fixes dEQP-GLES3.functional.fbo.invalidate.whole.unbind_read_stencil
Fixes: 0c42b5f3cb90 ("mesa: wire up InvalidateFramebuffer")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
5 years agofreedreno: more fixing release tarball
Rob Clark [Thu, 31 Jan 2019 14:56:19 +0000 (09:56 -0500)]
freedreno: more fixing release tarball

Fixes: aa0fed10d35 freedreno: move ir3 to common location
Signed-off-by: Rob Clark <robdclark@gmail.com>
5 years agofreedreno: fix release tarball
Rob Clark [Thu, 31 Jan 2019 13:03:43 +0000 (08:03 -0500)]
freedreno: fix release tarball

Fixes: b4476138d5a freedreno: move drm to common location
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Signed-off-by: Rob Clark <robdclark@gmail.com>
5 years agodocs: make bugs.html easier to find
Emmanuel Gil Peyrot [Sun, 27 Jan 2019 20:46:56 +0000 (21:46 +0100)]
docs: make bugs.html easier to find

Thanks to Yann Kervran for the report and suggestions.

Signed-off-by: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
5 years agovirgl: ARB_query_buffer_object support
Dave Airlie [Mon, 21 May 2018 23:32:42 +0000 (09:32 +1000)]
virgl: ARB_query_buffer_object support

v1.1: fix size define.

Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
5 years agovirgl: enable elapsed time queries
Dave Airlie [Tue, 8 Jan 2019 06:50:28 +0000 (16:50 +1000)]
virgl: enable elapsed time queries

GL underneath always has GL_TIME_ELAPSED so always enable these.

Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
5 years agoautomake: Add --enable-autotools to distcheck flags
Dylan Baker [Wed, 30 Jan 2019 17:44:24 +0000 (09:44 -0800)]
automake: Add --enable-autotools to distcheck flags

Fixes: e68777c87ceed02ab199b32f941778c3cf97c794
       ("autotools: Deprecate the use of autotools")
Reviewed-by: Matt Turner <mattst88@gmail.com>
5 years agoradeonsi: fix a comment typo in si_fine_fence_set
Marek Olšák [Wed, 30 Jan 2019 19:31:48 +0000 (14:31 -0500)]
radeonsi: fix a comment typo in si_fine_fence_set

5 years agor600: add -Wstrict-overflow=0 to meson to silence the warning
Marek Olšák [Wed, 30 Jan 2019 17:49:30 +0000 (12:49 -0500)]
r600: add -Wstrict-overflow=0 to meson to silence the warning

same as radeonsi

5 years agowinsys/amdgpu: remove amdgpu_drm.h definitions
Marek Olšák [Mon, 28 Jan 2019 21:55:11 +0000 (16:55 -0500)]
winsys/amdgpu: remove amdgpu_drm.h definitions

trivial

5 years agoradeonsi: unify error paths in si_texture_create_object
Marek Olšák [Sat, 5 Jan 2019 00:30:48 +0000 (19:30 -0500)]
radeonsi: unify error paths in si_texture_create_object

5 years agoradeonsi: merge & rename texture BO metadata functions
Marek Olšák [Tue, 8 Jan 2019 16:51:22 +0000 (11:51 -0500)]
radeonsi: merge & rename texture BO metadata functions

5 years agoradeonsi: enable dithered alpha-to-coverage for better quality
Marek Olšák [Tue, 15 Jan 2019 02:21:28 +0000 (21:21 -0500)]
radeonsi: enable dithered alpha-to-coverage for better quality

same as AMDVLK.

GL_NV_alpha_to_coverage_dither_control allows controlling this behavior.
The default is implementation-dependent.

5 years agogallium: wrap u_screen in extern "C" for c++
Dylan Baker [Mon, 28 Jan 2019 18:50:31 +0000 (10:50 -0800)]
gallium: wrap u_screen in extern "C" for c++

Some drivers (notabily SWR) are written in C++, and as such they need
access to C headers with extern "C". So lets add that.

5 years agomesa/core: Enable EXT_texture_sRGB_R8 also for desktop GL
Gert Wollny [Thu, 24 Jan 2019 11:38:05 +0000 (12:38 +0100)]
mesa/core: Enable EXT_texture_sRGB_R8 also for desktop GL

As of Nov/30/2018 the extension is also valid for OpenGL >= 1.2, so
enable it accordingly and also add the required view class entry.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
5 years agoradv/winsys: fix hash when adding internal buffers
Samuel Pitoiset [Wed, 30 Jan 2019 11:07:29 +0000 (12:07 +0100)]
radv/winsys: fix hash when adding internal buffers

This fixes serious stuttering in Shadow Of The Tomb Raider.

Fixes: 50fd253bd6e ("radv/winsys: Add priority handling during submit.")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agomesa: expose NV_conditional_render on GLES
Erik Faye-Lund [Thu, 1 Nov 2018 12:28:25 +0000 (13:28 +0100)]
mesa: expose NV_conditional_render on GLES

The extension spec has been updated to include GLES 2 support, so let's
enable it there.

v2: fixup ABI-check as well

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
5 years agov3d: Fix leak in resource setup error path
Ernestas Kulik [Thu, 30 Aug 2018 16:02:46 +0000 (19:02 +0300)]
v3d: Fix leak in resource setup error path

Reported by Coverity: in the case of unsupported modifier request, the
code does not jump to the “fail” label to destroy the acquired resource.

CID: 1435704
Signed-off-by: Ernestas Kulik <ernestas.kulik@gmail.com>
Fixes: 45bb8f295710 ("broadcom: Add V3D 3.3 gallium driver called "vc5", for BCM7268.")
5 years agovc4: Fix leak in HW queries error path
Ernestas Kulik [Thu, 30 Aug 2018 16:02:47 +0000 (19:02 +0300)]
vc4: Fix leak in HW queries error path

Reported by Coverity: in the case where there exist hardware and
non-hardware queries, the code does not jump to err_free_query and leaks
the query.

CID: 1430194
Signed-off-by: Ernestas Kulik <ernestas.kulik@gmail.com>
Fixes: 9ea90ffb98fb ("broadcom/vc4: Add support for HW perfmon")
5 years agov3d: Fix a release build set-but-unused compiler warning.
Eric Anholt [Wed, 30 Jan 2019 00:02:51 +0000 (16:02 -0800)]
v3d: Fix a release build set-but-unused compiler warning.

5 years agov3d: Always enable the NEON utile load/store code.
Eric Anholt [Tue, 29 Jan 2019 01:12:48 +0000 (17:12 -0800)]
v3d: Always enable the NEON utile load/store code.

I can't imagine the new HW block being paired with a v6 CPU, so don't
bother with the CPU detection that vc4 had to do.

Improves 1024x1024 TexImage on my 7278 by 47.3229% +/- 0.679632%

5 years agovc4: Declare the last cpu pointer as being modified in NEON asm.
Emil Velikov [Tue, 29 Jan 2019 17:25:17 +0000 (17:25 +0000)]
vc4: Declare the last cpu pointer as being modified in NEON asm.

Earlier commit addressed 7 of the 8 instances available.

v2: Rebase patch back to master (by anholt)

Cc: Carsten Haitzler (Rasterman) <raster@rasterman.com>
Cc: Eric Anholt <eric@anholt.net>
Fixes: 300d3ae8b14 ("vc4: Declare the cpu pointers as being modified in NEON asm.")
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
5 years agodocs: Add relnotes stub for 19.1
Dylan Baker [Tue, 29 Jan 2019 23:32:16 +0000 (15:32 -0800)]
docs: Add relnotes stub for 19.1

5 years agobump version for 19.0 branch
Dylan Baker [Tue, 29 Jan 2019 23:30:25 +0000 (15:30 -0800)]
bump version for 19.0 branch

5 years agoautomake: Add include dir for nir src directory
Dylan Baker [Tue, 29 Jan 2019 22:25:46 +0000 (14:25 -0800)]
automake: Add include dir for nir src directory

Fixes: 6281f26f064ada36b57d45feb68d8e7d783198c9
       ("v3d: Add support for shader_image_load_store.")
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
5 years agoautomake: Add float64.glsl to dist tarball
Dylan Baker [Tue, 29 Jan 2019 22:19:00 +0000 (14:19 -0800)]
automake: Add float64.glsl to dist tarball

Fixes: b63a1f8e40b6705d6a1d806fbd38dcd197d4229b
       ("glsl: Create file to contain software fp64 functions")
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
5 years agoautomake: Fix path to generated source
Dylan Baker [Tue, 29 Jan 2019 17:52:39 +0000 (09:52 -0800)]
automake: Fix path to generated source

Fixes: b63a1f8e40b6705d6a1d806fbd38dcd197d4229b
       ("glsl: Create file to contain software fp64 functions")
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
5 years agonir: Optimize double-precision lower_round_even()
Matt Turner [Sun, 27 Jan 2019 20:38:19 +0000 (12:38 -0800)]
nir: Optimize double-precision lower_round_even()

Use the trick of adding and then subtracting 2**52 (52 is the number of
explicit mantissa bits a double-precision floating-point value has) to
implement round-to-even.

Cuts the number of instructions on SKL of the piglit test
fs-roundEven-double.shader_test from 109 to 21.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agoac: use the correct LLVM processor name on Raven2
Marek Olšák [Mon, 28 Jan 2019 15:56:11 +0000 (10:56 -0500)]
ac: use the correct LLVM processor name on Raven2

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
5 years agov3d: Fix the autotools build.
Eric Anholt [Tue, 29 Jan 2019 22:00:27 +0000 (14:00 -0800)]
v3d: Fix the autotools build.

Noticed while looking at the gitlab-CI MR.