Axel Davy
a2c3db34d1
st/nine: Optimize DrawPrimitiveUp
...
Try to keep the same vertex buffer state when
having several consecutive DrawPrimitiveUp.
Signed-off-by: Axel Davy <davyaxel0@gmail.com >
Nicer DrawPrimUp opt patch
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9451 >
2021-03-13 21:23:24 +00:00
Axel Davy
9168a37692
st/nine: Refactor DrawPrimitiveUp
...
. Use the same fonction as DrawPrimitive
. Drop the user vbuf path
. Avoid setting NULL vertexbuffer to the context
Signed-off-by: Axel Davy <davyaxel0@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9451 >
2021-03-13 21:23:24 +00:00
Axel Davy
247d135f67
st/nine: Implement SYSTEMMEM buffers same as MANAGED
...
Use the MANAGED path for SYSTEMMEM buffers.
Tests point out the locking behaviour of SYSTEMEMM
buffers is very close to MANAGED.
Signed-off-by: Axel Davy <davyaxel0@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9451 >
2021-03-13 21:23:24 +00:00
Axel Davy
634adfa253
st/nine: Optimize EndScene
...
So far we did nothing on EndScene, but the API
doc says it flushes the GPU command queue.
The doc implies one can optimize CPU usage
by calling EndScene long before Present() is called.
Implementing the flush behaviour gives me +15-20%
on the CPU limited Halo. On the other hand, do limit
the flush to only once per frame.
3DMark03/3Mark05 get a 2% perf hit with the patch,
but 5% if I allow more flushes.
Signed-off-by: Axel Davy <davyaxel0@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9451 >
2021-03-13 21:23:24 +00:00
Matt Turner
2497195aab
docs: Mark VK_KHR_maintenance1 as done on turnip
...
I think I messed this up when splitting the turnip and lavapipe patches
apart.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9580 >
2021-03-13 12:01:04 -05:00
Mike Blumenkrantz
7b2e35128c
lavapipe: set more resource bind flags using image/buffer usage bits
...
we have this info available, so we can be more precise about it
stop the printf spam!
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9573 >
2021-03-13 04:14:17 +00:00
Ilia Mirkin
a04a797b89
mesa: only report INCOMPLETE_FORMATS for GLES1 / desktop
...
The enum is defined in EXT_framebuffer_object (available on desktop),
and was copied to OES_framebuffer_object (available in GLES1). The ES2
spec has no mention of such an enum. If the underlying implementation
does not support this, it will set a generic incomplete error (as is
done in st_cb_fbo.c if mixed_formats == false).
This should fix the following dEQP tests on ES2 drivers:
dEQP-GLES2.functional.fbo.completeness.attachment_combinations.rbo_tex_none_none
dEQP-GLES2.functional.fbo.completeness.attachment_combinations.tex_rbo_none_none
Fixes: fd017458bc (mesa: fix fbo attachment size check for RBs, make it trigger in ES2)
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4444
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu >
Reviewed-by: Eric Anholt <eric@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9572 >
2021-03-12 21:40:04 +00:00
Eric Anholt
87c85139ea
virgl: Update GLES expectations.
...
These are only used in manual runs, and I noticed in a recent run that
something on master had fixed them.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9509 >
2021-03-12 21:14:27 +00:00
Eric Anholt
1cf8cf99c8
mesa/st: Fix precompile misses on compat GL VSes writing to color outputs.
...
In compat GL, the gl_FrontColor/BackColor gets clamped unless you
explicitly turn it off with ARB_color_buffer_float, and most apps doing
floating point color rendering are going to be using non-compat varyings
anyway instead of hoping that ARB_color_buffer_float exists. Thus, guess
that the app will get clamping on the color outputs to reduce draw-time
recompiles.
Saves 60 VS recompiles on half-life-2.trace on freedreno (and similarly for
many other compat GL apps).
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9509 >
2021-03-12 21:14:27 +00:00
Eric Anholt
35247ac017
mesa/st: Add perf debug for draw-time variant compiles.
...
This ARB_debug_output is particularly useful in that default apitrace will
log it, so we can find when we're doing draw-time recompiles we shouldn't be.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9509 >
2021-03-12 21:14:27 +00:00
Eric Anholt
6864ff35e9
mesa/st: Unify st_get_vp_variant() and st_get_common_variant().
...
Fixes the following issues I can see:
- Non-VS NIR shaders not gathering info after ucp lowering
- Non-VS NIR shaders not doing GL_CLAMP lowering
- Non-VS TGSI shaders not setting up stream output state.
- Non-VS TGSI shaders leaking lower_depth_clamp lowering across variant
compiles.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9509 >
2021-03-12 21:14:27 +00:00
Mike Blumenkrantz
536533f556
lavapipe: fix push descriptor set indexing
...
the push set index isn't always 0, so the offsets need to be updated
in order to avoid clobbering other sets
Fixes: 6be19765cf ("lavapipe: add support for VK_KHR_push_descriptor")
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9558 >
2021-03-12 21:02:23 +00:00
Lionel Landwerlin
8e36f7da85
anv: move L3 initialization to device init on Gen11+
...
On Gen11+ we tend to only use a single configuration, so just get rid
of the stalls in the command buffers by moving the config to device
initialization.
v2: drop NULL config check
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/9534 >
2021-03-12 20:49:01 +00:00
Lionel Landwerlin
581e68bc99
anv: move L3 config emission to genX_state.c
...
We're about to reuse this at device initialization.
v2: Handle NULL configs on Gen12+
v3: Handle NULL config in emission helper (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/9534 >
2021-03-12 20:49:01 +00:00
Danylo Piliaiev
914e7a7f73
turnip: set zmode to A6XX_EARLY_Z if FS forces early fragment test
...
Specifying "early_fragment_tests" in fragment shader takes precedence
over our internal conditions.
Fixes test:
dEQP-VK.fragment_operations.early_fragment.early_fragment_tests_stencil
Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9569 >
2021-03-12 20:11:28 +00:00
Lionel Landwerlin
1d658c8598
intel/dev: switch over to mesa log infrastructure
...
v2: Deal with line wrapping (Jordan)
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Suggested-by: Jordan Justen <jordan.l.justen@intel.com >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9052 >
2021-03-12 18:54:07 +00:00
Lionel Landwerlin
cef063826e
anv: stop using get_param for things queried by gen_device_info
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9052 >
2021-03-12 18:54:07 +00:00
Lionel Landwerlin
5f057f6e91
i965: stop using get_param for things queried by gen_device_info
...
All this code exists in gen_device_info. It will print out the same
warning.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9052 >
2021-03-12 18:54:07 +00:00
Lionel Landwerlin
f08f8eaa48
iris: use gen_device_info helper to get subslice total
...
gen_device_info will try to use the most recent uAPI to get this
number and will fallback to this get_param. So just use what was
queries by gen_device_info_from_fd().
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9052 >
2021-03-12 18:54:07 +00:00
Lionel Landwerlin
fa17bbe00c
intel/dev: add warning on missing kernel uAPI for Gen8+
...
We carry those warnings in i965/anv. Let's have them here. Next commit
we remove some code from the drivers.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9052 >
2021-03-12 18:54:07 +00:00
Lionel Landwerlin
196d0aa110
intel/dev: add helpers to compute subslice/eu total
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9052 >
2021-03-12 18:54:07 +00:00
Mike Blumenkrantz
45e6fcef4b
zink: remove debug printf
...
accidentally left this in while bisecting
Fixes: 929a748401 ("zink: avoid hashing states without descriptors")
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Acked-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9564 >
2021-03-12 17:45:44 +00:00
Michel Zou
862671369d
vulkan: fix CreateRenderPass prototype
...
Fixes compilation on win32
Fixes: 2523c477 " turnip: Move the CreateRenderPass wrapper..."
Reviewed-by: Dave Airlie <airlied@redhat.com >
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9530 >
2021-03-12 17:37:38 +00:00
Mike Blumenkrantz
bf0c5988b2
zink: ci updates
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9540 >
2021-03-12 17:21:40 +00:00
Mike Blumenkrantz
980a8b3fc0
zink: implement an extremely dumb resource memory cache
...
this stores a number (currently 5) of backing allocations for resources
for later reuse when creating matching resources
because this is on the screen object it requires locking, but this is still
far faster than allocating new memory each time
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9540 >
2021-03-12 17:21:40 +00:00
Axel Davy
6205400612
st/nine: Fix compilation issue in nine_debug
...
Some compilers complain of the implicit conversion.
Make it explicit.
Reported by:
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6121
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9250
Signed-off-by: Axel Davy <davyaxel0@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9563 >
2021-03-12 17:12:58 +00:00
Mike Blumenkrantz
378bb07110
zink: optimize pipeline hashing
...
we can reorder the pipeline state and avoid hashing the big arrays based
on context states that we already have available to us
also we can do incremental hashes for the shader modules to further reduce
hashing
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9539 >
2021-03-12 17:02:20 +00:00
Mike Blumenkrantz
da08d67364
zink: move vertex_buffers_enabled_mask to non-hashed part of pipeline state
...
we can use this to optimize pipeline hashing
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9539 >
2021-03-12 17:02:20 +00:00
Samuel Pitoiset
1aabfc77d3
radv: fix initialization of disable_compression when clearing color image
...
Just make sure it's initialized properly.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9473 >
2021-03-12 16:39:21 +00:00
Mike Blumenkrantz
0f7d32073d
zink: ci updates
...
some flakes here that will be resolved in the very near future
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
a5984bdf78
zink: fix arrays of texel buffer descriptors
...
these need to pass a constructed array of buffers, not a single buffer per
descriptor
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
929a748401
zink: avoid hashing states without descriptors
...
this is unnecessary hashing which decreases the accuracy of the states
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
72a06746bf
zink: remove image layouts from descriptor states
...
these are always the same value, so there's no need to track them
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
5700cbfa1a
zink: always use VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL for sampler bindings
...
if a resource is used multiple times with different samplers then this can result
in conflicting layouts, so it's better to just use the general case here
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
e4421c4b82
zink: don't create descriptor barrier hash tables for cached descriptor set
...
this won't be used, so there's no point in allocating it
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
38e6e44262
zink: remove struct zink_descriptor_resource from descriptor updating
...
this can be inferred from a resource's barrier usage, and then by merging
the batch-tracking for resources into the barrier loop, this deduplicates
calls for resources which are bound for multiple stages as well as removing
another iteration during descriptor updating
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
4a3b344b23
zink: directly use resource count from pool instead of accumulating every time
...
this is a surprisingly impactful speedup
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
201cd1a8c0
zink: track resource count on descriptor pool object
...
we can do this once here instead of accumulating the count all over later
also remove the debug value on the set which duplicated this
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
d9793a8a60
zink: reuse descriptor barriers across draws
...
if we aren't invalidating the descriptor set then we can safely reuse its
barriers to avoid doing any sort of hashing during descriptor updating
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
c55e2fb59c
zink: move descriptor binding out of the update codepath
...
we won't always need to update sets that we bind
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
dc020db723
zink: pre-size descriptor transition hash table
...
this avoids costly rehashing
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
80d9f3aa34
zink: simplify check for knowing whether descriptor updating is needed
...
if a program has at least one pool object set then it will have descriptors
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
fe31566fbb
zink: remove intermediate func for descriptor set getting
...
we can simplify this a bit by just getting the objects in the function
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
141ff0e091
zink: allow reuse of zink_descriptor_pools between programs
...
now that we've split these into their own objects, we can reuse them across
programs with matching binding layouts for a given type, giving even more value to
the descriptor set cache by increasing reuse
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
ee40550b87
zink: move descriptor type to pool object from set
...
this is a little less memory usage
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
58500979a8
zink: track number of sets currently allocated per descriptor pool
...
if we're going to be sharing pools across programs, it's no longer sufficient
to check the hash populations, so we need a separate counter to know when we have
to flush
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
871022dc84
zink: change program pointer on struct zink_descriptor_set to pool pointer
...
the program using the set isn't very relevant now that there's the intermediate
pool struct which stores the sets
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
817de3c776
zink: break out all the descriptor pool/layout stuff into a new struct
...
by pushing these into a separate struct, we can eventually reuse them between
programs to make the descriptor set caches even more valuable
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
3d4e6c641b
zink: break out descriptor stuff into new files
...
this is getting to be enough code that it's getting to be a hassle to
keep with the program stuff
also rename a couple of the moved functions
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00
Mike Blumenkrantz
eee488abad
zink: deduplicate VkWriteDescriptorSet setup
...
no functional changes
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9348 >
2021-03-12 16:32:53 +00:00