Jason Ekstrand
379b9bb7b0
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
937ffb1af0
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
770d331285
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
c92fd35848
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
705395344d
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
d055ac9bdf
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
55508bbe66
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
f7668d6fe5
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
d95d5b1465
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
8cc5080580
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
dc05daf0e5
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
f366f6a071
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
d258b0bf0e
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
4664c92478
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
e97002ebcf
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 >
2021-06-22 21:09:25 +00:00
Jason Ekstrand
72437f6d54
spirv: Create acceleration structure and shader record variables
...
spirv_to_nir now requires NIR variables to be created for everything.
Fixes: 10b3eecd36 "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 >
2021-06-22 21:09:25 +00:00
Mike Blumenkrantz
5cecf826d3
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
b315aa43f1
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
d8dc03c213
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
c1d06c402a
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
97f8249336
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
478f129ee7
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
d4159963e3
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
ef418cfc59
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
18c22f5024
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
d574b0a51e
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
d80d9e1c93
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
28496f6ff2
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
59ec1794f6
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
1226628eb6
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
982a2dfbd4
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 >
2021-06-22 20:57:33 +00:00
Mike Blumenkrantz
618784732a
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 >
2021-06-22 20:57:33 +00:00
Emma Anholt
56c7e69c4d
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 >
2021-06-22 20:39:18 +00:00
Dave Airlie
b76f229954
crocus/bufmgr: fix userptr left over fail
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11538 >
2021-06-23 06:08:19 +10:00
Dave Airlie
45c12da211
croucs: limit stencil swizzle change to older generations
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11538 >
2021-06-23 06:08:19 +10:00
Mike Blumenkrantz
7eb3728e4b
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 >
2021-06-22 19:37:07 +00:00
Dave Airlie
a0608b3efc
crocus/gen8: add support for cherryview (env var for bdw)
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507 >
2021-06-22 18:56:21 +00:00
Dave Airlie
c630304196
crocus/gen8: hookup gen8 state generators
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507 >
2021-06-22 18:56:21 +00:00
Dave Airlie
edf05076a4
crocus/gen8: handle sampler differences
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507 >
2021-06-22 18:56:21 +00:00
Dave Airlie
661f108d80
croucs/gen8: handle gfx8 surface aux addr reloc.
...
This is ported from i965
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507 >
2021-06-22 18:56:21 +00:00
Dave Airlie
12e4da8053
crocus/gen8: port over VFE/compute state changes
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507 >
2021-06-22 18:56:21 +00:00
Dave Airlie
612c30bff7
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 >
2021-06-22 18:56:21 +00:00
Dave Airlie
5888b71847
crocus/gen8: port over vs/gs/ds state changes.
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507 >
2021-06-22 18:56:21 +00:00
Dave Airlie
457f21aa91
crocus/gen8: add depth stencil state support
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507 >
2021-06-22 18:56:21 +00:00
Dave Airlie
524eae8b78
crocus/gen8: add viewport support
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507 >
2021-06-22 18:56:21 +00:00
Dave Airlie
d12a9eda72
crocus/gen8: add rasterizer state changes.
...
Port over raster packet and state changes
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507 >
2021-06-22 18:56:21 +00:00
Dave Airlie
6613c0ac37
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 >
2021-06-22 18:56:21 +00:00
Dave Airlie
4025c9d340
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 >
2021-06-22 18:56:21 +00:00
Dave Airlie
22b9063aee
crocus/gen8: add VF SGVS support.
...
This is moved functionality on gen8
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507 >
2021-06-22 18:56:21 +00:00
Dave Airlie
5b32fccd3f
crocus/gen8: add SBE swiz support
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11507 >
2021-06-22 18:56:21 +00:00