Mike Blumenkrantz [Fri, 21 May 2021 11:31:49 +0000 (07:31 -0400)]
zink: export PIPE_CAP_EMULATE_NONFIXED_PRIMITIVE_RESTART
gallium will now handle unsupported restart index rewriting, so
this codepath can be removed
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>
Mike Blumenkrantz [Fri, 21 May 2021 11:25:40 +0000 (07:25 -0400)]
gallium: add a pipe cap for determining driver support for prim type in restarts
this is another prim type bitmask which will trigger automatic draw rewriting
to a direct draw any time a prim-restart draw occurs with a prim type that is
not supported by the driver for prim restart, even if that prim type is supported
for normal drawing
the default is set to all prim types to preserve existing functionality, and PrimitiveRestartForPatches
is now explicitly set to false because no driver supports it
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>
Mike Blumenkrantz [Fri, 21 May 2021 11:17:34 +0000 (07:17 -0400)]
gallium: add a pipe cap for performing automatic prim type conversion
drivers can now export a bitmask of the primitive types they support,
and all others will be automatically be rewritten
the default value is set to all primitive types supported to preserve
existing behavior
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>
Mike Blumenkrantz [Fri, 21 May 2021 11:09:43 +0000 (07:09 -0400)]
gallium: handle automatic 8bit -> 16bit index buffer rewrites
this is based on PIPE_FORMAT_R8_UINT format support
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>
Mike Blumenkrantz [Fri, 21 May 2021 11:00:52 +0000 (07:00 -0400)]
gallium: add a pipe cap to rewrite index buffers for draws using a non-fixed restart index
for drivers that set it, this now automatically handles restart index rewriting
by running draws through primconvert when necessary
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>
Mike Blumenkrantz [Fri, 21 May 2021 15:37:45 +0000 (11:37 -0400)]
util/primconvert: handle multidraws in primconvert
once a draw reaches primconvert, it should never be able to reach the driver
until all draw operations have been converted as necessary
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>
Mike Blumenkrantz [Fri, 21 May 2021 10:47:32 +0000 (06:47 -0400)]
util/primconvert: handle rewriting of prim-restart draws with unsupported primtype
this is a bit more work, as the primitive restart needs to be rewritten into a multidraw,
then the multidraw converted to the new primitive type and serialized back into a
single draw
detection is handled using a new primconvert config member, which is set to the full
primtype mask by default for compatibility with existing drivers
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>
Mike Blumenkrantz [Fri, 21 May 2021 10:33:52 +0000 (06:33 -0400)]
util/primconvert: map index buffer before getting index translator function
also set other local values on init using new util functions
no functional changes
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>
Mike Blumenkrantz [Fri, 21 May 2021 10:31:31 +0000 (06:31 -0400)]
util/primconvert: handle indirect draws
this avoids ping-ponging to the driver, which would have to call back
to here anyway with the unwrapped indirect draw
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>
Mike Blumenkrantz [Fri, 21 May 2021 10:27:19 +0000 (06:27 -0400)]
util/prim_restart: break out draw rewriting into separate function
this enables doing the draw rewrites without calling draw_vbo
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>
Mike Blumenkrantz [Fri, 21 May 2021 09:34:28 +0000 (05:34 -0400)]
aux/draw: add a util function for reading back indirect draw params
the return type of this is a bit clunky because instance values can change,
but it's simpler to just return the full draw info struct than to force the
caller to keep pulling from arrays or whatever
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>
Mike Blumenkrantz [Wed, 23 Jun 2021 02:52:47 +0000 (22:52 -0400)]
ci: disable panfrost t760 jobs
these are timing out
Acked-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11548>
Dave Airlie [Wed, 23 Jun 2021 00:25:57 +0000 (10:25 +1000)]
crocus: Explicitly cast value to uint64_t
Ports
565a80450d28f6daa0ca8b98dad93924e712f94b from iris.
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11546>
Simon Ser [Tue, 22 Jun 2021 12:58:16 +0000 (14:58 +0200)]
amd/addrlib: remove Meson debug message()
This message pops up in the Meson build logs, but has no context
and doesn't seem to be directed at end-users. Sounds like a leftover
from a debugging session.
Signed-off-by: Simon Ser <contact@emersion.fr>
Fixes:
d0767fc045a1 ("amd/addrlib: use cpp.has_argument() to filter compiler arguments")
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11524>
Thong Thai [Tue, 22 Jun 2021 17:47:52 +0000 (13:47 -0400)]
radeon/vcn/enc: Add missing line to HEVC SPS header code
Add previously missing line in HEVC SPS header generation on VCN 1.0
devices, for when an image does not need to be cropped.
Fixes:
e62c7e7c6ca ("radeon: Add cropping to encoded H.265 when padding is used")
Signed-off-by: Thong Thai <thong.thai@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11535>
Marek Olšák [Tue, 22 Jun 2021 04:10:19 +0000 (00:10 -0400)]
ac/llvm: don't set skip-uniform-regions to fix atomic.cmpswap
This fixes SSBO atomic cmpswap tests and transform feedback order piglit tests.
Fixes:
3bb65c06706 - ac: force enable -structurizecfg-skip-uniform-regions for LLVM 11
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3884
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11517>
Paul Gofman [Tue, 22 Jun 2021 15:01:51 +0000 (18:01 +0300)]
util: add force_gl_names_reuse for SWKOTOR.
SWKOTOR is expecting texture names generated by glGenTextures() to
be small enough and crashes otherwise.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11527>
Emma Anholt [Tue, 22 Jun 2021 20:31:22 +0000 (13:31 -0700)]
i915g: Fix GL_ARB_copy_buffer assertion fails.
The i915_texture() asserts that the resource is not a buffer, so check for
the buffer fallback first.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11540>
Lionel Landwerlin [Tue, 22 Jun 2021 11:23:04 +0000 (14:23 +0300)]
nir: use a more fitting index for btd_stack_push_intel
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Lionel Landwerlin [Tue, 22 Jun 2021 11:18:17 +0000 (14:18 +0300)]
nir: drop the btd_resume_intel intrinsic
This is now 100% equivalent to the new rt_resume intrinsic.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Lionel Landwerlin [Fri, 28 May 2021 12:06:09 +0000 (15:06 +0300)]
intel/rt: switch to common pass for shader calls lowering
v2: rename for new indices
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Lionel Landwerlin [Sat, 3 Apr 2021 09:01:19 +0000 (12:01 +0300)]
anv: implement caching for ray tracing pipelines
v2: Turn a bunch of pointer checks into checks against NULL (Jason)
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Lionel Landwerlin [Tue, 6 Apr 2021 14:10:16 +0000 (17:10 +0300)]
anv: move trivial return shader to device
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Lionel Landwerlin [Fri, 2 Apr 2021 14:18:47 +0000 (17:18 +0300)]
anv: store more RT shader data in pipeline_stage object
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Lionel Landwerlin [Fri, 2 Apr 2021 14:03:13 +0000 (17:03 +0300)]
anv: cache raytracing trampoline shader
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Lionel Landwerlin [Fri, 2 Apr 2021 13:28:59 +0000 (16:28 +0300)]
blorp: add blorp string in shader keys
Upon looking at caching the raytracing shader (in particular the
trampoline one) I kind of got afraid that some of the keys used for
blorp would end up matching other keys. This is because blorp keys are
fairly simple. There is no SPIRV module hash included.
This change includes a "blorp" string at the beginning of the queue to
ensure we don't collide with other keys.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Fri, 7 Aug 2020 04:05:03 +0000 (23:05 -0500)]
anv: Implement vkCmdTraceRays and vkCmdTraceRaysIndirect
v2: Fix anv_cmd_state::binding_tables array size (Lionel)
v2: Fix anv_cmd_state::samplers array size (Lionel)
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Mon, 6 Jul 2020 23:12:35 +0000 (18:12 -0500)]
anv: Make anv_address::offset 64-bit
This allows us to convert a 64-bit address to an anv_address which is
useful for working with device addresses.
v2: switch to int64_t to keep state pool relative relocation working
on non-softpin platforms
v3: Update assert to reflect relative offsets (Jason)
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Fri, 7 Aug 2020 03:59:35 +0000 (22:59 -0500)]
anv: Allow _anv_combine_address with a NULL batch
This is required in order to be able to use GenXML pack functions for
structs with addresses when you're not packing into a batch.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Fri, 7 Aug 2020 03:53:06 +0000 (22:53 -0500)]
anv: Add support for vkCmdSetRayTracingPipelineStackSizeKHR
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Thu, 21 Jan 2021 21:38:01 +0000 (15:38 -0600)]
anv: Compute scratch sizes for ray-tracing pipelines and shader groups
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Thu, 21 Jan 2021 21:37:21 +0000 (15:37 -0600)]
anv: Create and return ray-tracing pipeline SBT handles
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Wed, 17 Jun 2020 04:06:56 +0000 (23:06 -0500)]
intel/fs: Don't pull CS push constants if uses_inline_data
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Thu, 21 Jan 2021 21:30:27 +0000 (15:30 -0600)]
anv: Compile trivial return and trampoline shaders
These don't necessarily go in any group but are required for dispatch to
work properly. The trampoline is a compute shader that is the initial
start point for the trace. It's in charge of invoking the actual
ray-gen shader. The trivial return shader is used whenever another
shader is missing and it does no work except the minimum required to do
a stack return.
v2: Rebase on upstream changes (Lionel)
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Thu, 21 Jan 2021 21:28:28 +0000 (15:28 -0600)]
anv: Compile ray-tracing shaders
This doesn't look too different from other compile functions we have in
anv_pipeline.c. The primary difference is that ray-tracing pipelines
have this weird two-stage thing where you have "stages" which are
individual shaders and "groups" which are sort of mini pipelines that
are used to handle hits. For any given ray intersection, only the hit
and intersection shaders from the same group get used together. You
can't have an intersection shader from group A used with an any-hit from
group B. This results in a weird two-step compile.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Thu, 21 Jan 2021 20:13:47 +0000 (14:13 -0600)]
anv: Support fetching descriptor addresses from push constants
Bindless shaders don't have binding tables so they have to get at the
descriptor sets via a different mechanism.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Thu, 21 Jan 2021 08:55:59 +0000 (02:55 -0600)]
nir/apply_pipeline_layout: Handle bindless shaders
They don't have binding tables so they have to use A64 descriptor set
access and everything has to be bindless all the time.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Fri, 7 Aug 2020 03:31:02 +0000 (22:31 -0500)]
anv: Disallow UBO pushing for bindless shaders
They don't really have push constants.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Thu, 21 Jan 2021 21:16:30 +0000 (15:16 -0600)]
intel/rt: Use reloc constants for the resume SBT
It's going to be attached to the end of the shader binary, not an
arbitrary table somewhere in memory.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Fri, 4 Sep 2020 17:40:06 +0000 (12:40 -0500)]
intel/fs: Add support for compiling bindless shaders with resume shaders
Instead of depending on the driver to compile each resume shader
separately, we compile them all in one go in the back-end and build an
SBT as part of the shader program. Shader relocs are used to make the
entries in the SBT point point to the correct resume shader.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Fri, 4 Sep 2020 17:23:35 +0000 (12:23 -0500)]
intel/compiler: Add a U32 reloc type
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Fri, 4 Sep 2020 17:09:11 +0000 (12:09 -0500)]
intel/compiler: Generalize shader relocations a bit
This commit adds a delta to be added to the relocated value as well as
the possibility of multiple types of relocations.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Fri, 4 Sep 2020 17:00:42 +0000 (12:00 -0500)]
anv,iris: Move the SHADER_RELOC enums to brw_compiler.h
They're common between the two drivers and we want to add a couple more
that get emitted from code in src/intel/compiler.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Fri, 7 Aug 2020 03:51:01 +0000 (22:51 -0500)]
anv: Add support for binding ray-tracing pipelines
This includes not only vkCmdBindPipeline but also descriptor sets and
push constants.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Thu, 6 Aug 2020 23:56:54 +0000 (18:56 -0500)]
anv: Add a ray-tracing pipeline object
This just adds the core data structure which we'll build on going
forward.
v2: Add VK_EXT_pipeline_creation_cache_control handling (Lionel)
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Thu, 21 Jan 2021 22:58:50 +0000 (16:58 -0600)]
anv: Get ready for more pipeline stages
This makes a bunch of loops use ARRAY_SIZE instead of MESA_SHADER_STAGES,
extends a few arrays, and adds a bunch of array length asserts.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Wed, 5 Aug 2020 21:53:12 +0000 (16:53 -0500)]
anv: Add minimal boilerplate for VK_KHR_ray_tracing_pipeline
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Wed, 5 Aug 2020 22:28:48 +0000 (17:28 -0500)]
anv: Add support for binding acceleration structures
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Wed, 13 May 2020 21:22:02 +0000 (16:22 -0500)]
anv: Add stub support for acceleration structures
This just adds a base struct and trivial implementations of all the
create/destroy/bind functions.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Wed, 13 May 2020 20:44:11 +0000 (15:44 -0500)]
anv: Add minimal boilerplate for VK_KHR_acceleration_structure
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Jason Ekstrand [Mon, 1 Feb 2021 22:55:33 +0000 (16:55 -0600)]
spirv: Create acceleration structure and shader record variables
spirv_to_nir now requires NIR variables to be created for everything.
Fixes:
10b3eecd361af "spirv: Don't remove variables used by resource..."
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
Mike Blumenkrantz [Fri, 7 May 2021 12:10:00 +0000 (08:10 -0400)]
zink: don't clear batch resources on fence finish
this eliminates the need for locking here and has no noticeable
increase in overhead, so the reduction of complexity seems worthwhile
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Thu, 17 Jun 2021 01:40:37 +0000 (21:40 -0400)]
zink: move some end-of-batch stuff to submit thread
no reason to do this on the driver thread when it could be async
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Wed, 9 Jun 2021 15:29:36 +0000 (11:29 -0400)]
zink: flag scanout updates to batch state, not resource
now that submission is serialized better, it's not actually the resource that should be
tagged for scanout sync, it's the batch state, as multiple contexts might reuse the same
resource, thus requiring synchronization on every submit
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Wed, 9 Jun 2021 15:25:28 +0000 (11:25 -0400)]
zink: move fence reset to submit thread
try to reduce job queue latency
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Sun, 9 May 2021 16:56:06 +0000 (12:56 -0400)]
zink: move sparse buffer commit to screen queue
all queue submission must be serialized with the dispatch thread
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Sun, 9 May 2021 16:55:39 +0000 (12:55 -0400)]
zink: move queue submit thread to screen
this needs to be a screen-based queue in order to serialize properly
with multiple contexts
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Thu, 17 Jun 2021 01:32:14 +0000 (21:32 -0400)]
zink: enforce multi-context waiting for unflushed resources on foreign batches
this doesn't seem to be a real issue now that tc doesn't break makeCurrent
anymore, but if such a thing were to once again become a problem, at least
there will be handling for it
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Fri, 14 May 2021 18:56:35 +0000 (14:56 -0400)]
zink: make init_mem_range() a public function
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Wed, 9 Jun 2021 20:15:03 +0000 (16:15 -0400)]
zink: break out offset alignment calculation into helper
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Thu, 13 May 2021 12:54:51 +0000 (08:54 -0400)]
zink: apply zink_resource_object::offset for memory flush/invalidates
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Thu, 17 Jun 2021 01:28:46 +0000 (21:28 -0400)]
zink: queue v3.0
this uses a pointer to a batch state substruct for timeline tracking,
which provides a few nice benefits:
* explicit ability to detect unflushed batches (even on other contexts)
* the context doesn't need to have a "current" timeline id
* timeline (batch) ids can be distributed during submit, not when recording begins
* an abstracted api which can be more easily changed under the hood
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Fri, 7 May 2021 12:52:50 +0000 (08:52 -0400)]
zink: remove no-longer-used resource helper functions
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Fri, 7 May 2021 12:52:18 +0000 (08:52 -0400)]
zink: use batch usage api for resource helper function
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Fri, 7 May 2021 12:45:15 +0000 (08:45 -0400)]
zink: add and use fencing functions which take batch usage structs
this hides the exact mechanics of fencing based on batch usage and makes
the usage a bit more explicit
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Fri, 7 May 2021 12:39:27 +0000 (08:39 -0400)]
zink: improve tc fence disambiguation
instead of storing separate batch_id values onto the tc fence for matching:
* use a fence pointer on the main context to indicate the current deferred fence
* add a monotonic counter to each batch state which double-increments on each use,
thereby enabling direct determination by the tc fence as to whether this is the same
batch state it was created with
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Mike Blumenkrantz [Thu, 8 Apr 2021 13:09:06 +0000 (09:09 -0400)]
zink: only update last_finished during batch reset if the batch was used
0 is never a valid batch_id, so don't try to update this
minor cosmetic change
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11437>
Emma Anholt [Tue, 22 Jun 2021 19:09:44 +0000 (12:09 -0700)]
freedreno: Fix leak of the screen hash table.
Now we have no leaks detected on a run of a basic deqp test
(dEQP-GLES2.functional.shaders.constants.const_float_assignment_3_fragment).
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11537>
Dave Airlie [Tue, 22 Jun 2021 01:13:04 +0000 (11:13 +1000)]
crocus/bufmgr: fix userptr left over fail
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11538>
Dave Airlie [Tue, 22 Jun 2021 01:05:29 +0000 (11:05 +1000)]
croucs: limit stencil swizzle change to older generations
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11538>
Mike Blumenkrantz [Thu, 15 Apr 2021 16:18:35 +0000 (12:18 -0400)]
zink: clear textures directly when possible
now that overhead for resuming renderpasses has been made mostly nonexistent,
this is by far the better option and cuts cpu usage by ~90% in some cases,
e.g., tomb raider benchmark
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11430>
Dave Airlie [Mon, 21 Jun 2021 19:42:54 +0000 (05:42 +1000)]
crocus/gen8: add support for cherryview (env var for bdw)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:40:49 +0000 (05:40 +1000)]
crocus/gen8: hookup gen8 state generators
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:36:55 +0000 (05:36 +1000)]
crocus/gen8: handle sampler differences
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:23:57 +0000 (05:23 +1000)]
croucs/gen8: handle gfx8 surface aux addr reloc.
This is ported from i965
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:22:58 +0000 (05:22 +1000)]
crocus/gen8: port over VFE/compute state changes
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:22:07 +0000 (05:22 +1000)]
crocus/gen8: port over ps/wm state changes from iris.
This emits the PS extra packet as well
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:21:10 +0000 (05:21 +1000)]
crocus/gen8: port over vs/gs/ds state changes.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:20:23 +0000 (05:20 +1000)]
crocus/gen8: add depth stencil state support
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:19:38 +0000 (05:19 +1000)]
crocus/gen8: add viewport support
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:18:37 +0000 (05:18 +1000)]
crocus/gen8: add rasterizer state changes.
Port over raster packet and state changes
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:16:50 +0000 (05:16 +1000)]
crocus/gen8: refactor blend state for gen8
gen8 emits these packets differently, port the i965 style
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:14:38 +0000 (05:14 +1000)]
crocus/gen8: add PS blend command support.
This adds support for new gen8 command
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:11:25 +0000 (05:11 +1000)]
crocus/gen8: add VF SGVS support.
This is moved functionality on gen8
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:06:36 +0000 (05:06 +1000)]
crocus/gen8: add SBE swiz support
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 19:02:59 +0000 (05:02 +1000)]
crocus/gen8: add streamout support
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 18:57:07 +0000 (04:57 +1000)]
crocus/gen8: add PMA fix from iris
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 18:54:11 +0000 (04:54 +1000)]
crocus/gen8: add VF topology support
this is a new command on gen8
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 18:51:23 +0000 (04:51 +1000)]
crocus/gen8: state base address + misc setup state.
This ports over SBA setup and some misc packets needed to
setup the context
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 18:48:37 +0000 (04:48 +1000)]
crocus/gen8: add support for vertex instancing and index buffers.
This ports over the VF instancing code from iris
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 07:35:06 +0000 (17:35 +1000)]
crocus/gen8: add raw pipe control support for gen8 workarounds
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 07:32:27 +0000 (17:32 +1000)]
crocus/gen8: limit vertex buffer workarounds to ivb
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 07:29:39 +0000 (17:29 +1000)]
crocus/gen8: extending gen7 binding table pointers
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 07:29:09 +0000 (17:29 +1000)]
crocus/gen8: add l3 config support
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 07:25:55 +0000 (17:25 +1000)]
crocus/gen8: add sampler / border color support for gen8
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 07:24:08 +0000 (17:24 +1000)]
crocus/gen8: extend predicate handling to gen8.
This adds some gen8 specific code to do MI_PREDICATE properly,
otherwise just extends the hsw code
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 07:19:42 +0000 (17:19 +1000)]
crocus: extend hsw cut index to gen8
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 07:06:08 +0000 (17:06 +1000)]
crocus/gen8: extend image support to gen8
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 07:00:37 +0000 (17:00 +1000)]
crocus/gen8: extend some compute + state functions to gen8
This just extends some hsw functionality to gen8
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>
Dave Airlie [Mon, 21 Jun 2021 06:57:48 +0000 (16:57 +1000)]
crocus/gen8: add push constant support (extend hsw)
This just extends the gen7 checks and adds the gen8 value
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507>