Qiang Yu
a4b048c046
lima: move pp_max_stack_size to lima_submit
...
pp_max_stack_size is preserved across draws.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
6a5b1c62db
lima: move resolve into lima_submit
...
resolve is preserved across draws.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
7e5abc11f4
lima: move plbu/vs_cmd_array into lima_submit
...
This information is preserved across draws and needed
when task submission.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
c64994433c
lima: track write submits of context (v3)
...
We need to flush submit which write to the FBO before read it as
texture.
v2:
rename lima_flush_previous_write_submit to
lima_flush_previous_submit_writing_resouce.
v3:
delay add submit to hash_table to lima_update_submit_wb when really
know the render target will be written.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
48fc5f841a
lima: make lima_submit one time use drop data (v3)
...
lima_submit is created by lima_submit_get() in draw/clear functions
and freed after submit to kernel.
There is a hash map to find the same lima_submit for color/depth
buffer combination if user switch framebuffer w/o flush the command
then switch back again.
v2:
rename lima_flush_submit to lima_flush_submit_accessing_bo.
v3:
delay flush access submit to lima_update_submit_wb when really know
if this submit will write to the target buffer.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
545988c617
lima: add lima_submit_get
...
Replace all usage of "ctx->submit" in draw code path with
lima_submit_get(). This function will create new submit
in the following changes.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
0caefb6d9d
lima: use lima_submit_create_stream_bo for plbu/vs_cmd and pp_stack
...
lima_ctx_buff is used cross function calls in draws. But plbu/vs_cmd
and pp_stack are used immediately after create. And we need to get
rid of "ctx->submit" in the flush code path which exists in
lima_ctx_buff.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
ed8837f946
lima: adjust pp_stream to use lima_submit_create_stream_bo
...
No need to save the bo, just map and va for use in this submit
is enough.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
e90d8b6e4d
lima: add lima_submit_create_stream_bo
...
For creating stream buffer which is used in single submit
and freed after the submit is passed to kernel driver.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
5c78ba6014
lima: pass submit parameter for functions in lima_submic.c (v2)
...
"ctx->submit" won't be used directly, so remove the usage in
lima_submit.c by directly passing the submit parameter. And
more data in lima_context will be moved to lima_submit, so
"ctx" will be replaced by "submit" in those functions.
v2:
rename lima_submit_flush to lima_do_submit.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
21a2ce71b1
lima: move flush code to lima_submit.c
...
Just code move, no content change.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
29c7235507
lima: put hardware related info to lima_gpu.h
...
For sharing with multi .c files.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
09127641f4
lima: merge gp/pp submit
...
Use single lima_submit for the submit operation. This is also
for moving more information in lima_context to lima_submit.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
79c65fa56f
lima: move syncobj from lima_submit to lima_context
...
As there will be multi lima_submit per context, move
syncobj out of it.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
b9003111bb
lima: add missing resolve check for damage and reload
...
If color buffer is not touched, we do not need to reload or get
damage region from it.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
47200f5c8d
lima: add render target to submit by dirty buffer flags
...
No need to add un-touched buffer to submit.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
32f1733972
lima: delay plbu head command generation to flush stage (v2)
...
Prepare for multi submit in which case only know the plb_index when
final flush. Another need for this is proper reload detection: only
when flush stage can we know if need to do reload, because user may
first clear depth, then color individually, so we don't know if need
to pack repload plbu cmd when first clear depth.
v2:
move lima_update_submit_wb before ctx->resolve change for lima_ctx_dirty
to work in lima_submit_wb.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
ccfe5f9d28
lima: delay add plb buffer to submit when flush
...
Prepare for multi submit in which case plb buffer is known
only when flush.
Keep the write back buffer update which is needed for FB
dirty track.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
92387ca236
lima: pass array as parameter to PLBU and VS command macros
...
Don't assume the ctx parameter, prepare for moving PLBU and
VS arrary from lima_context to lima_submit and adding new
plbu_cmd_head array.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
c3bbe4f7f8
lima: remove lima_ctx_buff_va submit flags (v2)
...
We don't have any shared lima_ctx_buff for both GP and PP,
so no need to have these flags.
v2:
still add submit in lima_ctx_buff_va because some bo need
to exist cross flush, so not every submit will call
lima_ctx_buff_alloc.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
9f924c795b
lima: always add texture bo to submit
...
No matter texture desc change, we need to add texture to submit.
Otherwise texture may be freed before submit finish.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
3c4ff27250
lima: use util_copy_framebuffer_state
...
Use this helper to replace self written code.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Qiang Yu
c8b53d8020
lima: remove definition of lima_is_scanout
...
There is no implementation of this function.
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3755 >
2020-02-17 02:54:15 +00:00
Alyssa Rosenzweig
0c4a70b64d
pan/decode: Remove extraneous newline
...
pandecode_log already does this.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:50 -05:00
Alyssa Rosenzweig
8ab0bf1f93
pan/midgard: Use fprintf instead of printf for constants
...
I was wondering where those constants disappeared to :-)
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Fixes: 968f36d1fc ("pan/midgard: Support disassembling to a file")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:50 -05:00
Alyssa Rosenzweig
6af14d3685
pan/midgard: Don't crash with constants on unknown ops
...
Just use a dummy name instead.. we can't know a priori what type an
unknown op will consume, but we don't want to dereference a null
pointer.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Fixes: 24360966ab ("panfrost/midgard: Prettify embedded constant
prints")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:50 -05:00
Alyssa Rosenzweig
5c06ecd2c6
pan/midgard: Identify stack barrier flag
...
In case thread local storage is used.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:49 -05:00
Alyssa Rosenzweig
d3747fb1eb
pan/midgard: Set xyzx swizzle for load_compute_arg
...
Probably harmless but the w component doesn't appear valid so let's
match the blob... one less bit to be nervous about.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:48 -05:00
Alyssa Rosenzweig
f0ee55ad2a
pan/midgard: Infer tags entirely
...
We're so close, again marking off a few edge cases is enough to allow us
to omit this data entirely. Woot!
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:48 -05:00
Alyssa Rosenzweig
57a84278fd
pan/midgard: Imply next tags
...
As long as we can disambiguate a few edge cases, we can imply next tags
entirely which cleans up the disassembly a fair bit (though not as much
as implying tags entirely would -- we'll get there!)
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:47 -05:00
Alyssa Rosenzweig
453c64663c
pan/midgard: Overhaul tag handling
...
We unify disparate metadata about tags into a single structure to ensure
information is not left out.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:47 -05:00
Alyssa Rosenzweig
9168e7a65d
pan/midgard: Improve barrier disassembly
...
Just move some state from unknowns to actual keywords.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:47 -05:00
Alyssa Rosenzweig
d208212f80
pan/midgard: Use dummy tag for empty shaders
...
Fixes INSTR_INVALID_ENC in dEQP-GLES31.functional.compute.basic.empty
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:47 -05:00
Alyssa Rosenzweig
b2cab6b6db
pan/midgard: Fix 32/64 mixed swizzle packing
...
Occurs in SSBO address computation.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:47 -05:00
Alyssa Rosenzweig
a55a2e02a5
pan/midgard: Allow jumping out of a shader
...
This comes up as a `return;` instruction in a compute shader. We need to
use the special tag 1 to signify "break". Fixes numerous
INSTR_INVALID_ENC faults in dEQP-GLES31.functional.compute.basic.*
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:47 -05:00
Alyssa Rosenzweig
3f59098d1a
pan/midgard: Implement barriers
...
Barriers execute on the texture pipeline on Midgard, so let's
tentatively handle barrier() as conservatively as possible (forcing
memory barriers of both buffers and shared memory). Implementation isn't
quite there yet -- it doesn't look at interactions of adjacent barriers
like it's supposed to -- but the core is there.
Fixes dEQP-GLES31.functional.compute.basic.ssbo_local_barrier_single_invocation
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:47 -05:00
Alyssa Rosenzweig
4f0b928921
pan/midgard: Fix swizzles harder
...
Just for disassembly for now~
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:47 -05:00
Alyssa Rosenzweig
fbe1fd3de0
pan/midgard: Fix missing prefixes
...
I was wondering where those were going... :)
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Fixes: c1952779d6 ("pan/decode: Dump to a file")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:46 -05:00
Alyssa Rosenzweig
521406a069
pan/midgard: Track pressure when scheduling ld/st
...
Fixes RA failure in
dEQP-GLES31.functional.shaders.builtin_functions.common.modf.* (which
uses multiple indirect SSBO writes)
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:46 -05:00
Alyssa Rosenzweig
9603126b74
panfrost: Allocate RAM backing of shared memory
...
Unlike other GPUs, Mali does not have dedicated shared memory for
compute workloads. Instead, we allocate shared memory (backed to RAM),
and the general memory access functions have modes to access shared
memory (essentially, think of these modes as adding this allocates base
+ workgroupid * stride in harder). So let's allocate enough memory
based on the shared_size parameter and supply it.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:46 -05:00
Alyssa Rosenzweig
50138abb5a
panfrost: Rename unknown2_8 to padding
...
It's zero everywhere.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:46 -05:00
Alyssa Rosenzweig
6d9ee3e65a
panfrost: Rename bifrost_framebuffer->mali_framebuffer
...
(And bifrost_fb_extra to mali_framebuffer_extra, bifrost_render_target
to mali_render_target)
These structures are the norm on midgard t760+, drop the bifrost names,
it's silly... unrelated to the rest of the series but while I'm messing
with pandecode and cleaning up bifrost abstractions, might as well.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:46 -05:00
Alyssa Rosenzweig
6dc105555b
panfrost: Unify bifrost_scratchpad with mali_shared_memory
...
It looks like these are the same structure, so this allows us to reuse
mali_shared_memory across architectures, and dispels with the
Bifrost-specific mystery of the scratchpads... nothing so mysterious
after all, just stack.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:46 -05:00
Alyssa Rosenzweig
254f40fd53
panfrost: Identify mali_shared_memory structure
...
This small structure is used to configure shared memory and stack for
compute shaders, and is also present at the beginning of framebuffer
descriptors. Let's factor it out.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:46 -05:00
Alyssa Rosenzweig
418ca5dc1a
panfrost: Ensure compute shader_meta is zeroed
...
In theory the hardware doesn't care but it'll make for easier traces.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:46 -05:00
Alyssa Rosenzweig
058faf5a4b
panfrost: Update comment about magic number relating to barriers
...
It's a complicated story. But from what I can tell, in GL compute
without barriers, the blob is able to redistribute the workgroups in
various ways (that are not yet understood), whereas with barriers it
cannot redistribute anything, which accounts for erratic workgroup
packing without barriers.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835 >
2020-02-16 09:16:46 -05:00
Dave Airlie
e7375e1795
gallivm/s390: fix pass init order on s390 with llvm 8 (v2)
...
llvm 8 has some missing pass dependencies, fix the s390 case
as well.
v2: add ARM also (Michel)
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com >
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3805 >
2020-02-15 04:15:00 +00:00
Kenneth Graunke
a603822b2f
iris: Trim "../../src/gallium/drivers/iris/" out of debug dump filenames
...
Easier to read.
v2: Also trim "/iris/" (Jordan Justen)
Acked-by: Jason Ekstrand <jason@jlekstrand.net >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3830 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3830 >
2020-02-15 00:55:55 +00:00
Kenneth Graunke
96f247d1b3
iris: Dump frame markers with INTEL_DEBUG=submit
...
Now you can see which batches go with which frames.
Acked-by: Jason Ekstrand <jason@jlekstrand.net >
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3830 >
2020-02-15 00:55:55 +00:00
Marek Olšák
e395ce03e9
gallium/cso_hash: remove another layer of pointer indirection
...
Convert this:
struct cso_hash {
union {
struct cso_hash_data *d;
struct cso_node *e;
} data;
};
to this:
struct cso_hash {
struct cso_hash_data data;
struct cso_node *end;
};
1) data is not a pointer anymore.
2) "end" points to "data" and acts as the end of the linked list.
3) This code is still crazy.
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3829 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3829 >
2020-02-14 18:16:28 -05:00