- U_r300g-Set-R300_VAP_CNTL-on-RSxxx-to-avoid-triangle-flickering.patch:
Initialize RSxxx chipsets correctly (bsc#985650) OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=541
This commit is contained in:
parent
12a58d062e
commit
6cd013da6f
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Oct 14 10:17:17 UTC 2016 - mstaudt@suse.com
|
||||||
|
|
||||||
|
- U_r300g-Set-R300_VAP_CNTL-on-RSxxx-to-avoid-triangle-flickering.patch:
|
||||||
|
Initialize RSxxx chipsets correctly (bsc#985650)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Oct 14 09:10:46 UTC 2016 - mstaudt@suse.com
|
Fri Oct 14 09:10:46 UTC 2016 - mstaudt@suse.com
|
||||||
|
|
||||||
|
@ -71,6 +71,8 @@ Patch15: u_mesa-8.0-llvmpipe-shmget.patch
|
|||||||
Patch18: n_VDPAU-XVMC-libs-Replace-hardlinks-with-copies.patch
|
Patch18: n_VDPAU-XVMC-libs-Replace-hardlinks-with-copies.patch
|
||||||
# never to be upstreamed
|
# never to be upstreamed
|
||||||
Patch21: n_Define-GLAPIVAR-separate-from-GLAPI.patch
|
Patch21: n_Define-GLAPIVAR-separate-from-GLAPI.patch
|
||||||
|
# Already upstream
|
||||||
|
Patch22: U_r300g-Set-R300_VAP_CNTL-on-RSxxx-to-avoid-triangle-flickering.patch
|
||||||
# Nouveau multithreading workarounds from https://github.com/imirkin/mesa/commits/locking
|
# Nouveau multithreading workarounds from https://github.com/imirkin/mesa/commits/locking
|
||||||
Patch61: N_01-WIP-nouveau-add-locking.patch
|
Patch61: N_01-WIP-nouveau-add-locking.patch
|
||||||
Patch62: N_02-nouveau-more-locking-make-sure-that-fence-work-is-always-done-with-the-push-mutex-acquired.patch
|
Patch62: N_02-nouveau-more-locking-make-sure-that-fence-work-is-always-done-with-the-push-mutex-acquired.patch
|
||||||
@ -589,6 +591,7 @@ rm -rf docs/README.{VMS,WIN32,OS2}
|
|||||||
%patch12 -p1
|
%patch12 -p1
|
||||||
%patch18 -p1
|
%patch18 -p1
|
||||||
%patch21 -p1
|
%patch21 -p1
|
||||||
|
%patch22 -p1
|
||||||
%patch61 -p1
|
%patch61 -p1
|
||||||
%patch62 -p1
|
%patch62 -p1
|
||||||
%patch63 -p1
|
%patch63 -p1
|
||||||
|
@ -0,0 +1,67 @@
|
|||||||
|
From: Max Staudt <mstaudt@suse.de>
|
||||||
|
Date: Thu Sep 8 01:53:45 2016 +0200
|
||||||
|
Subject: [PATCH]r300g: Set R300_VAP_CNTL on RSxxx to avoid triangle flickering
|
||||||
|
Patch-mainline: 02675622b02742960678c438f1b239321c075f50
|
||||||
|
Git-repo: git://anongit.freedesktop.org/mesa/mesa
|
||||||
|
References: bsc#985650
|
||||||
|
Signed-off-by: Max Staudt <mstaudt@suse.de>
|
||||||
|
|
||||||
|
On the RSxxx chip series, HW TCL is missing and r300_emit_vs_state()
|
||||||
|
is never called.
|
||||||
|
|
||||||
|
However, if R300_VAP_CNTL is never set, the hardware (at least the
|
||||||
|
RS690 I tested this on) comes up with rendering artifacts, and
|
||||||
|
parts that are uploaded before this "fix" remain broken in VRAM.
|
||||||
|
This causes artifacts as in fdo#69076 ("triangle flickering").
|
||||||
|
|
||||||
|
It seems like this setup needs to happen at least once after power on
|
||||||
|
for 3D rendering to work properly. In the DDX with EXA, this happens in
|
||||||
|
RADEON_SWITCH_TO_3D() when processing an XRENDER Composite or an
|
||||||
|
Xv request. So playing back a video or starting a GTK+2 application
|
||||||
|
fixes 3D rendering for the rest of the session. However, this auto-fix
|
||||||
|
doesn't happen when EXA is not used, such as with GLAMOR or Wayland.
|
||||||
|
|
||||||
|
This patch ensures the register is configured even in absence of
|
||||||
|
the DDX's EXA module.
|
||||||
|
|
||||||
|
The register setting is taken from:
|
||||||
|
xf86-video-ati -- RADEONInit3DEngineInternal()
|
||||||
|
mesa/src/mesa/drivers/dri/r300 -- r300EmitClearState()
|
||||||
|
|
||||||
|
Tested on RS690.
|
||||||
|
|
||||||
|
CC: <mesa-stable@lists.freedesktop.org>
|
||||||
|
Signed-off-by: Max Staudt <mstaudt@suse.de>
|
||||||
|
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||||
|
---
|
||||||
|
src/gallium/drivers/r300/r300_context.c | 10 +++++++++-
|
||||||
|
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c
|
||||||
|
index 82ba043..0998fac 100644
|
||||||
|
--- a/src/gallium/drivers/r300/r300_context.c
|
||||||
|
+++ b/src/gallium/drivers/r300/r300_context.c
|
||||||
|
@@ -190,7 +190,7 @@ static boolean r300_setup_atoms(struct r300_context* r300)
|
||||||
|
/* VAP. */
|
||||||
|
R300_INIT_ATOM(viewport_state, 9);
|
||||||
|
R300_INIT_ATOM(pvs_flush, 2);
|
||||||
|
- R300_INIT_ATOM(vap_invariant_state, is_r500 ? 11 : 9);
|
||||||
|
+ R300_INIT_ATOM(vap_invariant_state, is_r500 || !has_tcl ? 11 : 9);
|
||||||
|
R300_INIT_ATOM(vertex_stream_state, 0);
|
||||||
|
R300_INIT_ATOM(vs_state, 0);
|
||||||
|
R300_INIT_ATOM(vs_constants, 0);
|
||||||
|
@@ -314,6 +314,14 @@ static void r300_init_states(struct pipe_context *pipe)
|
||||||
|
|
||||||
|
if (r300->screen->caps.is_r500) {
|
||||||
|
OUT_CB_REG(R500_VAP_TEX_TO_COLOR_CNTL, 0);
|
||||||
|
+ } else if (!r300->screen->caps.has_tcl) {
|
||||||
|
+ /* RSxxx:
|
||||||
|
+ * Static VAP setup since r300_emit_vs_state() is never called.
|
||||||
|
+ */
|
||||||
|
+ OUT_CB_REG(R300_VAP_CNTL, R300_PVS_NUM_SLOTS(10) |
|
||||||
|
+ R300_PVS_NUM_CNTLRS(5) |
|
||||||
|
+ R300_PVS_NUM_FPUS(2) |
|
||||||
|
+ R300_PVS_VF_MAX_VTX_NUM(5));
|
||||||
|
}
|
||||||
|
END_CB;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user