diff mbox

[i-g-t] lib/rendercopy: Use gen8_wm_kernel__affine

Message ID 20180703154135.14101-1-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson July 3, 2018, 3:41 p.m. UTC
The shaders/blit.g7a has weird artefacts (random pixel kill) when
drawing with to an odd destination coordinate. Rather than debug the
issue with the assembler, replace the kernel with the one used by SNA
for simple copies.

Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 lib/rendercopy_gen8.c | 10 ++++------
 lib/rendercopy_gen9.c | 10 ++++------
 2 files changed, 8 insertions(+), 12 deletions(-)

Comments

Ville Syrjälä July 3, 2018, 4:04 p.m. UTC | #1
On Tue, Jul 03, 2018 at 04:41:35PM +0100, Chris Wilson wrote:
> The shaders/blit.g7a has weird artefacts (random pixel kill) when
> drawing with to an odd destination coordinate. Rather than debug the
> issue with the assembler, replace the kernel with the one used by SNA
> for simple copies.
> 
> Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

Yep, works on my chv and skl.

Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

I can see the obvious pln(8) -> pln(16) change from the hex, but
didn't bother reading through the assembly to try and figure out
what the rest of the differences amount to. So I'll just toss in
an ack.

Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---
>  lib/rendercopy_gen8.c | 10 ++++------
>  lib/rendercopy_gen9.c | 10 ++++------
>  2 files changed, 8 insertions(+), 12 deletions(-)
> 
> diff --git a/lib/rendercopy_gen8.c b/lib/rendercopy_gen8.c
> index 2b5d9b52e..2e590e391 100644
> --- a/lib/rendercopy_gen8.c
> +++ b/lib/rendercopy_gen8.c
> @@ -51,12 +51,10 @@ struct {
>  /* see shaders/ps/blit.g7a */
>  static const uint32_t ps_kernel[][4] = {
>  #if 1
> -   { 0x0060005a, 0x21403ae8, 0x3a0000c0, 0x008d0040 },
> -   { 0x0060005a, 0x21603ae8, 0x3a0000c0, 0x008d0080 },
> -   { 0x0060005a, 0x21803ae8, 0x3a0000d0, 0x008d0040 },
> -   { 0x0060005a, 0x21a03ae8, 0x3a0000d0, 0x008d0080 },
> -   { 0x02800031, 0x2e0022e8, 0x0e000140, 0x08840001 },
> -   { 0x05800031, 0x200022e0, 0x0e000e00, 0x90031000 },
> +	{ 0x0080005a, 0x2f403ae8, 0x3a0000c0, 0x008d0040 },
> +	{ 0x0080005a, 0x2f803ae8, 0x3a0000d0, 0x008d0040 },
> +	{ 0x02800031, 0x2e203a48, 0x0e8d0f40, 0x08840001 },
> +	{ 0x05800031, 0x20003a40, 0x0e8d0e20, 0x90031000 },
>  #else
>     /* Write all -1 */
>     { 0x00600001, 0x2e000608, 0x00000000, 0x3f800000 },
> diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
> index 0157ced9c..79e312409 100644
> --- a/lib/rendercopy_gen9.c
> +++ b/lib/rendercopy_gen9.c
> @@ -52,12 +52,10 @@ struct {
>  /* see shaders/ps/blit.g7a */
>  static const uint32_t ps_kernel[][4] = {
>  #if 1
> -   { 0x0060005a, 0x21403ae8, 0x3a0000c0, 0x008d0040 },
> -   { 0x0060005a, 0x21603ae8, 0x3a0000c0, 0x008d0080 },
> -   { 0x0060005a, 0x21803ae8, 0x3a0000d0, 0x008d0040 },
> -   { 0x0060005a, 0x21a03ae8, 0x3a0000d0, 0x008d0080 },
> -   { 0x02800031, 0x2e0022e8, 0x0e000140, 0x08840001 },
> -   { 0x05800031, 0x200022e0, 0x0e000e00, 0x90031000 },
> +	{ 0x0080005a, 0x2f403ae8, 0x3a0000c0, 0x008d0040 },
> +	{ 0x0080005a, 0x2f803ae8, 0x3a0000d0, 0x008d0040 },
> +	{ 0x02800031, 0x2e203a48, 0x0e8d0f40, 0x08840001 },
> +	{ 0x05800031, 0x20003a40, 0x0e8d0e20, 0x90031000 },
>  #else
>     /* Write all -1 */
>     { 0x00600001, 0x2e000608, 0x00000000, 0x3f800000 },
> -- 
> 2.18.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/lib/rendercopy_gen8.c b/lib/rendercopy_gen8.c
index 2b5d9b52e..2e590e391 100644
--- a/lib/rendercopy_gen8.c
+++ b/lib/rendercopy_gen8.c
@@ -51,12 +51,10 @@  struct {
 /* see shaders/ps/blit.g7a */
 static const uint32_t ps_kernel[][4] = {
 #if 1
-   { 0x0060005a, 0x21403ae8, 0x3a0000c0, 0x008d0040 },
-   { 0x0060005a, 0x21603ae8, 0x3a0000c0, 0x008d0080 },
-   { 0x0060005a, 0x21803ae8, 0x3a0000d0, 0x008d0040 },
-   { 0x0060005a, 0x21a03ae8, 0x3a0000d0, 0x008d0080 },
-   { 0x02800031, 0x2e0022e8, 0x0e000140, 0x08840001 },
-   { 0x05800031, 0x200022e0, 0x0e000e00, 0x90031000 },
+	{ 0x0080005a, 0x2f403ae8, 0x3a0000c0, 0x008d0040 },
+	{ 0x0080005a, 0x2f803ae8, 0x3a0000d0, 0x008d0040 },
+	{ 0x02800031, 0x2e203a48, 0x0e8d0f40, 0x08840001 },
+	{ 0x05800031, 0x20003a40, 0x0e8d0e20, 0x90031000 },
 #else
    /* Write all -1 */
    { 0x00600001, 0x2e000608, 0x00000000, 0x3f800000 },
diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
index 0157ced9c..79e312409 100644
--- a/lib/rendercopy_gen9.c
+++ b/lib/rendercopy_gen9.c
@@ -52,12 +52,10 @@  struct {
 /* see shaders/ps/blit.g7a */
 static const uint32_t ps_kernel[][4] = {
 #if 1
-   { 0x0060005a, 0x21403ae8, 0x3a0000c0, 0x008d0040 },
-   { 0x0060005a, 0x21603ae8, 0x3a0000c0, 0x008d0080 },
-   { 0x0060005a, 0x21803ae8, 0x3a0000d0, 0x008d0040 },
-   { 0x0060005a, 0x21a03ae8, 0x3a0000d0, 0x008d0080 },
-   { 0x02800031, 0x2e0022e8, 0x0e000140, 0x08840001 },
-   { 0x05800031, 0x200022e0, 0x0e000e00, 0x90031000 },
+	{ 0x0080005a, 0x2f403ae8, 0x3a0000c0, 0x008d0040 },
+	{ 0x0080005a, 0x2f803ae8, 0x3a0000d0, 0x008d0040 },
+	{ 0x02800031, 0x2e203a48, 0x0e8d0f40, 0x08840001 },
+	{ 0x05800031, 0x20003a40, 0x0e8d0e20, 0x90031000 },
 #else
    /* Write all -1 */
    { 0x00600001, 0x2e000608, 0x00000000, 0x3f800000 },