Marek Olšák
16afaf0355
radeonsi: assume that constant load_local_group_size has been optimized out
...
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6782 >
2020-09-25 04:37:23 -04:00
Marek Olšák
0492adaca7
radeonsi: run NIR optimizations that glsl_to_nir runs but other places might not
...
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6782 >
2020-09-25 04:37:23 -04:00
Marek Olšák
8a1d556c5a
radeonsi: get input/output usage flags from shader_info directly
...
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6782 >
2020-09-25 04:37:23 -04:00
Marek Olšák
0280cc75ba
radeonsi: get information about FS color outputs from shader_info directly
...
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6782 >
2020-09-25 04:37:23 -04:00
Marek Olšák
343e5caa75
radeonsi: use info.system_values_read
...
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6782 >
2020-09-25 04:37:23 -04:00
Marek Olšák
cce3556abd
radeonsi: call nir_shader_gather_info after lowering and optimizing NIR
...
to get more accurate info
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6782 >
2020-09-25 04:37:23 -04:00
Marek Olšák
8be46d6558
radeonsi: fix indirect dispatches with variable block sizes
...
The block size input was uninitialized.
Fixes: 77c81164bc "radeonsi: support ARB_compute_variable_group_size"
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6782 >
2020-09-25 04:37:23 -04:00
Christian Gmeiner
a7e3cc7a0e
etnaviv: simplify linear stride implementation
...
As documented in the galcore kernel driver "only LOD0 is valid
for this register". This makes sense, as NTE's LINEAR_STRIDE is
only capable to store one linear stride value per sampler.
This fixes linear textures in sampler slot != 0.
Fixes: 34458c1cf6 ("etnaviv: add linear sampling support")
CC: <mesa-stable@lists.freedesktop.org >
Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com >
Reviewed-by: Michael Tretter <m.tretter@pengutronix.de >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3285 >
2020-09-25 08:03:17 +00:00
Vinson Lee
4bd0df0e4a
r600/sfn: Initialize GPRValue member m_pin_to_channel.
...
Fix defects reported by Coverity Scan.
Uninitialized scalar field (UNINIT_CTOR)
uninit_member: Non-static class member m_pin_to_channel is not
initialized in this constructor nor in any functions that it calls.
Signed-off-by: Vinson Lee <vlee@freedesktop.org >
Reviewed-by: Gert Wollny <gert.wollny@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6830 >
2020-09-24 17:29:04 -07:00
Eric Anholt
974981c4e6
gallium/drm: Make the pipe loader handle the driconf merging.
...
We can pretty easily handle merging the driver's driconf with the common
driverconf right there, rather than pushing that to each driver.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6751 >
2020-09-24 16:35:17 -07:00
Jason Ekstrand
472a20c5fc
radeonsi: Only call nir_lower_var_copies at the end of the opt loop
...
In 283ad85944 , radeonsi started using nir_find_var_copies. However,
it was also calling nir_lower_var_copies in the optimization loop and
the two can end up fighting. The simple solution is to wait to lower
copies until the end of the optimization loop.
Fixes: 283ad85944
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3550
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6841 >
2020-09-24 21:01:30 +00:00
Mike Blumenkrantz
7971918924
zink: reorder create_stream_output_target to fix failure case leak
...
the previous version of this leaked a reference to the streamout buffer here
thanks to deltragon on my blog for pointing this out!
Fixes: 37778fcd9a ("zink: implement transform feedback support to finish off opengl 3.0")
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6457 >
2020-09-24 20:55:02 +00:00
Mike Blumenkrantz
bc5c0433be
zink: apply viewport count when creating pipelines
...
without VK_EXT_extended_dynamic_state, we need to pass this directly or
else only the first viewport will work
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6349 >
2020-09-24 20:48:51 +00:00
Mike Blumenkrantz
cc939fe9b7
zink: correctly set up fb-sized scissors for each viewport
...
each viewport must have a corresponding scissor, so we need to generate
an array of these to ensure our states match up
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6349 >
2020-09-24 20:48:51 +00:00
Mike Blumenkrantz
8a2ddcb4a9
zink: set multiviewport cap in ntv when gl_ViewportIndex is a written output
...
this cap varies based on the shader stage, but it must be enabled any time this
output is written
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6349 >
2020-09-24 20:48:51 +00:00
Mike Blumenkrantz
09be30b9e4
zink: move viewport count to zink_gfx_pipeline_state
...
this is part of the pipeline state (there's an extension for setting it
dynamically but we don't supprot that atm
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6349 >
2020-09-24 20:48:51 +00:00
Mike Blumenkrantz
818bd61099
zink: implement ARB_instanced_arrays
...
this is just a simple case of connecting up the vertex state to the pipeline
state
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6270 >
2020-09-24 20:40:39 +00:00
Mike Blumenkrantz
0051551701
zink: verify that src and dst aspects are the same in resource_copy_region hook
...
this is required by spec
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6263 >
2020-09-24 20:31:37 +00:00
Mike Blumenkrantz
6feec2d40e
zink: clamp min created fb size to 1x1
...
this is required by spec
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6263 >
2020-09-24 20:31:37 +00:00
Mike Blumenkrantz
9ce1e99913
zink: use correct layer count when creating framebuffer
...
pipe_framebuffer_state::layers doesn't necessarily reflect the value we
need to use here, so we can use the util function to verify
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6263 >
2020-09-24 20:31:37 +00:00
Mike Blumenkrantz
e30367a273
zink: use correct number of samples on framebuffer in set_framebuffer_state
...
state->samples doesn't necessarily reflect the correct value here, so we need
to use the util function
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6263 >
2020-09-24 20:31:37 +00:00
Mike Blumenkrantz
f6c87216d3
zink: use correct value for color buffer sample count when creating renderpass
...
nr_samples is valid on the texture pipe_resource, not the surface
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6263 >
2020-09-24 20:31:37 +00:00
Kenneth Graunke
140f53e646
Revert "nir: replace lower_ffma and fuse_ffma with has_ffma"
...
This reverts commit 939ddf3f67 .
Intel has a separate pass for fusing FFMAs selectively. We split
these flags in commit 1b72c31e1f and
the reasoning still stands. The patch being reverted was just a
cleanup, so there should be no issue with reverting it.
Acked-by: Matt Turner <mattst88@gmail.com >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6849 >
2020-09-24 13:11:50 -07:00
Pierre-Eric Pelloux-Prayer
90b98c0649
amd/tmz: move uses_secure_bos to radeon_winsys
...
This allows to inline radeon_uses_secure_bos calls and reduce CPU overhead.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
2479689968
radeonsi/tmz: add workaround for mpv/vaapi subtitles
...
Subtitles are rendering with an upload through a staging texture.
So the sequence is:
1. draw video (with a secure cs)
2. copy staging texture to the real texture (via si_resource_copy_region) in
a non-secure cs.
3. draw video (with a secure cs)
Step 2 and 3 both generates a flush with RADEON_FLUSH_TOGGLE_SECURE_SUBMISSION.
These flushes are executed quite late: right before doing the draw/dispatch,
so maybe the issue here is the handling of dependencies.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
2c6643546a
radeonsi/tmz: add a tmz variant for sctx::eop_bug_scratch
...
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
133895574c
radeonsi: disable primitive discard if tmz is in use
...
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
8e2768bbfb
radeonsi/tmz: add tmz variant for sctx::tess_rings
...
tess_rings must be encrypted when used in a secure job so this commit
introduces a tess_rings_tmz resource.
The cs_preamble_state doesn't contain the tess_rings address anymore since
it can change. The tess_rings related registers go in a separate preamble.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
2589888ce9
radeonsi/tmz: add tmz variant of sctx::wait_mem_scratch
...
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
de088daccc
radeonsi/tmz: fail si_texture_transfer_map if tex is encrypted
...
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
55b018b634
amd/winsys: add RADEON_FLUSH_TOGGLE_SECURE_SUBMISSION
...
Instead of exposing a cs_set_secure() callback that always needs a call
to si_flush_gfx_cs before a switch, this commit introduces a new
flag to switch between secure and non-secure on submissions.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
1b0d660cbc
radeonsi/tmz: allow secure job if the app made a tmz allocation
...
This commit makes TMZ always allowed instead of being either off or forced-on
with AMD_DEBUG=tmz.
With this change:
- secure job can be used as soon as the application made a tmz allocation. Driver
internal allocations are not enough to enable secure jobs (if tmz is supported
and enabled by the kernel)
- AMD_DEBUG=tmz forces all scanout/depth/stencil buffers to be allocated as TMZ.
This is useful to test app thats don't explicitely support protected content.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
5e4aecec93
radeonsi: introduce SI_RESOURCE_FLAG_INTERNAL / RADEON_FLAG_DRIVER_INTERNAL
...
Tag allocations as driver internal.
Some of these allocations will need to be doubled to handle TMZ (one secure bo,
one normal bo) but these allocations shouldn't switch the winsys in "the app
is using TMZ".
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
131412cc4d
radeonsi/tmz: allocate depth/stencil buffers as encrypted
...
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
0a59d2a3e9
radeonsi/tmz: add safety assert when tmz is enabled
...
This commit adds asserts verifying the following conditions when
using a secure job:
- fb textures are encrypted (both colors and depth/stencil buffers)
- all writeable bo are encrypted
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
59b267dea4
radeonsi/tmz: use secure job if using an encrypted z/s buffer
...
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Pierre-Eric Pelloux-Prayer
5bc24fe283
radeonsi/tmz: use secure job if framebuffer has dcc
...
Fixes a hang with DCC.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049 >
2020-09-24 14:51:16 +00:00
Marek Olšák
32d754825c
radeonsi: always inline draw-related functions that have only one use
...
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6786 >
2020-09-24 13:08:03 +00:00
Marek Olšák
f24b5894f8
radeonsi: lift the conditional for skipping si_upload_vertex_buffer_descriptors
...
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6786 >
2020-09-24 13:08:03 +00:00
Marek Olšák
0b2f75f9ac
radeonsi: add unlikely statements into si_draw_vbo
...
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6786 >
2020-09-24 13:08:03 +00:00
Marek Olšák
8ab15c9e33
radeonsi: move si_upload_vertex_buffer_descriptors into si_state_draw.c
...
It will be inlined there.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6786 >
2020-09-24 13:08:03 +00:00
Marek Olšák
12b1e8a35d
radeonsi: reorganize the code around the gfx9 scissor bug
...
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6786 >
2020-09-24 13:08:03 +00:00
Marek Olšák
532259b8a3
radeonsi: don't call emit_cache_flush after uploading bindless descriptors
...
The next draw call will do it.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6786 >
2020-09-24 13:08:03 +00:00
Marek Olšák
d647065b06
radeonsi: move a displaced comment in si_draw_vbo
...
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6786 >
2020-09-24 13:08:03 +00:00
Marek Olšák
816a867bbd
radeonsi: call si_upload_graphics_shader_descriptors before the big conditional
...
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6786 >
2020-09-24 13:08:03 +00:00
Marek Olšák
0051f2cb2a
radeonsi: use optimal order of operations when setting up a compute dispatch
...
The order is:
- set registers
- flush caches
- set render condition
- prefetch the shader
- set registers that may be read from memory (indirect draw)
- dispatch
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6786 >
2020-09-24 13:08:03 +00:00
Icecream95
e560028c8e
panfrost: Remove redundant casts of viewport position
...
The position is already converted to int when clamping to framebuffer
size.
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6840 >
2020-09-24 12:56:31 +00:00
Icecream95
3d0ae7a9da
panfrost: Handle non-positive viewport positions
...
It's possible for viewport positions to be negative, so add a lower
bound of zero and avoid wraparound when maximum values are zero.
Fixes the menu blur effect in the OpenGL 3.3 render of GZDoom.
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6840 >
2020-09-24 12:56:31 +00:00
Icecream95
2aa48bb5a8
panfrost: Clamp uniform buffer size
...
Issue (57) for the ARB_uniform_buffer_object spec states:
"The uniform buffer could be larger than the amount of uniform
block(s) data inside it."
This means we need to clamp the uniform buffer size in case it is
bigger than what hardware supports.
Fixes the OpenGL 3.3 renderer of GZDoom.
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6835 >
2020-09-24 12:43:19 +00:00
Marek Olšák
939ddf3f67
nir: replace lower_ffma and fuse_ffma with has_ffma
...
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6756 >
2020-09-24 12:29:11 +00:00