xf86-video-intel: 2 commits - src/render_program/exa_wm_src_affine.g8a src/render_program/exa_wm_src_sample_argb.g8a src/render_program/exa_wm_src_sample_planar.g8a src/render_program/exa_wm_write.g8a src/render_program/exa_wm_yuv_rgb.g8a src/render_program/exa_wm_yuv_rgb.g8b src/render_program/Makefile.am src/sna/gen8_render.c

Chris Wilson ickle at kemper.freedesktop.org
Fri Aug 29 02:45:28 PDT 2014


 src/render_program/Makefile.am                  |   11 ++
 src/render_program/exa_wm_src_affine.g8a        |    1 
 src/render_program/exa_wm_src_sample_argb.g8a   |    1 
 src/render_program/exa_wm_src_sample_planar.g8a |    1 
 src/render_program/exa_wm_write.g8a             |    1 
 src/render_program/exa_wm_yuv_rgb.g8a           |  105 ++++++++++++++++++++++++
 src/render_program/exa_wm_yuv_rgb.g8b           |   21 +++-
 src/sna/gen8_render.c                           |    8 -
 8 files changed, 136 insertions(+), 13 deletions(-)

New commits:
commit 2086965e5c0781e0a3996de89e4dda03c5d42610
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Aug 29 10:37:09 2014 +0100

    gen8: Refresh video render programs
    
    Reported-by: Timo Aaltonen <tjaalton at ubuntu.com>
    References: https://bugs.freedesktop.org/show_bug.cgi?id=83207
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/render_program/Makefile.am b/src/render_program/Makefile.am
index 9d36787..67a74ad 100644
--- a/src/render_program/Makefile.am
+++ b/src/render_program/Makefile.am
@@ -174,6 +174,14 @@ INTEL_G7B =				\
 	exa_wm_yuv_rgb.g7b		\
 	$(NULL)
 
+INTEL_G8A =				\
+	exa_wm_src_affine.g8a 		\
+	exa_wm_src_sample_argb.g8a 	\
+	exa_wm_src_sample_planar.g8a 	\
+	exa_wm_write.g8a 		\
+	exa_wm_yuv_rgb.g8a		\
+	$(NULL)
+
 INTEL_G8B =				\
 	exa_wm_src_affine.g8b 		\
 	exa_wm_src_sample_argb.g8b 	\
@@ -194,6 +202,7 @@ EXTRA_DIST = 		\
 	$(INTEL_G6I)	\
 	$(INTEL_G7A)	\
 	$(INTEL_G7B)	\
+	$(INTEL_G8A)	\
 	$(INTEL_G8B)
 
 if HAVE_GEN4ASM
@@ -210,7 +219,7 @@ SUFFIXES = .g4a .g4b .g5a .g5b .g6a .g6b .g7a .g7b .g8b
 
 .g7a.g7b:
 	$(AM_V_GEN)m4 -I$(srcdir) -s $< > $*.g7m && @INTEL_GEN4ASM@ -g 7 -o $@ $*.g7m && rm $*.g7m
-.g7a.g8b:
+.g8a.g8b:
 	$(AM_V_GEN)m4 -I$(srcdir) -s $< > $*.g8m && @INTEL_GEN4ASM@ -g 8 -o $@ $*.g8m && rm $*.g8m
 
 $(INTEL_G4B): $(INTEL_GEN4ASM) $(INTEL_G4I)
diff --git a/src/render_program/exa_wm_src_affine.g8a b/src/render_program/exa_wm_src_affine.g8a
new file mode 120000
index 0000000..1c9c9db
--- /dev/null
+++ b/src/render_program/exa_wm_src_affine.g8a
@@ -0,0 +1 @@
+exa_wm_src_affine.g7a
\ No newline at end of file
diff --git a/src/render_program/exa_wm_src_sample_argb.g8a b/src/render_program/exa_wm_src_sample_argb.g8a
new file mode 120000
index 0000000..d63e08c
--- /dev/null
+++ b/src/render_program/exa_wm_src_sample_argb.g8a
@@ -0,0 +1 @@
+exa_wm_src_sample_argb.g7a
\ No newline at end of file
diff --git a/src/render_program/exa_wm_src_sample_planar.g8a b/src/render_program/exa_wm_src_sample_planar.g8a
new file mode 120000
index 0000000..7b7a258
--- /dev/null
+++ b/src/render_program/exa_wm_src_sample_planar.g8a
@@ -0,0 +1 @@
+exa_wm_src_sample_planar.g7a
\ No newline at end of file
diff --git a/src/render_program/exa_wm_write.g8a b/src/render_program/exa_wm_write.g8a
new file mode 120000
index 0000000..614abfb
--- /dev/null
+++ b/src/render_program/exa_wm_write.g8a
@@ -0,0 +1 @@
+exa_wm_write.g7a
\ No newline at end of file
diff --git a/src/render_program/exa_wm_yuv_rgb.g8a b/src/render_program/exa_wm_yuv_rgb.g8a
new file mode 100644
index 0000000..7def093
--- /dev/null
+++ b/src/render_program/exa_wm_yuv_rgb.g8a
@@ -0,0 +1,105 @@
+/*
+ * Copyright © 2006 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Keith Packard <keithp at keithp.com>
+ *    Eric Anholt <eric at anholt.net>
+ *
+ */
+
+include(`exa_wm.g4i')
+
+define(`YCbCr_base',	`src_sample_base')
+
+define(`Cr',		`src_sample_r')
+define(`Cr_01',		`src_sample_r_01')
+define(`Cr_23',		`src_sample_r_23')
+
+define(`Y',		`src_sample_g')
+define(`Y_01',		`src_sample_g_01')
+define(`Y_23',		`src_sample_g_23')
+
+define(`Cb',		`src_sample_b')
+define(`Cb_01',		`src_sample_b_01')
+define(`Cb_23',		`src_sample_b_23')
+
+define(`Crn',		`mask_sample_r')
+define(`Crn_01',	`mask_sample_r_01')
+define(`Crn_23',	`mask_sample_r_23')
+
+define(`Yn',		`mask_sample_g')
+define(`Yn_01',		`mask_sample_g_01')
+define(`Yn_23',		`mask_sample_g_23')
+
+define(`Cbn',		`mask_sample_b')
+define(`Cbn_01',	`mask_sample_b_01')
+define(`Cbn_23',	`mask_sample_b_23')
+
+    /* color space conversion function:
+     * R = Clamp ( 1.164(Y-16/255) + 1.596(Cr-128/255), 0, 1)
+     * G = Clamp ( 1.164(Y-16/255) - 0.813(Cr-128/255) - 0.392(Cb-128/255), 0, 1)
+     * B = Clamp ( 1.164(Y-16/255) + 2.017(Cb-128/255), 0, 1)
+     */
+
+    /* Normalize Y, Cb and Cr:
+     *
+     * Yn = (Y - 16/255) * 1.164
+     * Crn = Cr - 128 / 255
+     * Cbn = Cb - 128 / 255
+     */
+add (16)    Yn<1>F		Y<8,8,1>F	-0.0627451F { compr align1 };
+mul (16)    Yn<1>F		Yn<8,8,1>F	1.164F	    { compr align1 };
+
+add (16)    Crn<1>F		Cr<8,8,1>F	-0.501961F  { compr align1 };
+
+add (16)    Cbn<1>F		Cb<8,8,1>F	-0.501961F  { compr align1 };
+
+    /* 
+     * R = Y + Cr * 1.596
+     */
+mov (8)    acc0<1>F		Yn<8,8,1>F		    { compr align1 };
+mac.sat(8) src_sample_r_01<1>F	Crn_01<8,8,1>F	1.596F	    { compr align1 };
+     
+mov (8)    acc0<1>F		Yn_23<8,8,1>F		    { compr align1 };
+mac.sat(8) src_sample_r_23<1>F	Crn_23<8,8,1>F	1.596F	    { compr align1 };
+    /*
+     * G = Crn * -0.813 + Cbn * -0.392 + Y
+     */
+mov (8)    acc0<1>F		Yn_23<8,8,1>F		    { compr align1 };
+mac (8)    acc0<1>F		Crn_01<8,8,1>F    	-0.813F	    { compr align1 };
+mac.sat(8) src_sample_g_01<1>F	Cbn_01<8,8,1>F    	-0.392F	    { compr align1 };
+
+mov (8)    acc0<1>F		Yn_23<8,8,1>F	    { compr align1 };
+mac (8)    acc0<1>F		Crn_23<8,8,1>F    	-0.813F	    { compr align1 };
+mac.sat(16) src_sample_g_23<1>F	Cbn_23<8,8,1>F    	-0.392F	    { compr align1 };
+    /*
+     * B = Cbn * 2.017 + Y
+     */
+mov (8)    acc0<1>F	        Yn_01<8,8,1>F		    { compr align1 };
+mac.sat(8) src_sample_b_01<1>F	Cbn_01<8,8,1>F     2.017F	    { compr align1 };
+
+mov (8)    acc0<1>F	        Yn_23<8,8,1>F		    { compr align1 };
+mac.sat(8) src_sample_b_23<1>F	Cbn_23<8,8,1>F     2.017F	    { compr align1 };
+    /*
+     * A = 1.0
+     */
+mov (16)    src_sample_a<1>F	1.0F			    { compr align1 };
diff --git a/src/render_program/exa_wm_yuv_rgb.g8b b/src/render_program/exa_wm_yuv_rgb.g8b
index 0da262c..4494953 100644
--- a/src/render_program/exa_wm_yuv_rgb.g8b
+++ b/src/render_program/exa_wm_yuv_rgb.g8b
@@ -2,11 +2,18 @@
    { 0x00800041, 0x23003ae8, 0x3e8d0300, 0x3f94fdf4 },
    { 0x00800040, 0x22c03ae8, 0x3e8d01c0, 0xbf008084 },
    { 0x00800040, 0x23403ae8, 0x3e8d0240, 0xbf008084 },
-   { 0x00800001, 0x24003ae0, 0x008d0300, 0x00000000 },
-   { 0x80800048, 0x21c03ae8, 0x3e8d02c0, 0x3fcc49ba },
-   { 0x00800001, 0x24003ae0, 0x008d0300, 0x00000000 },
-   { 0x00800048, 0x24003ae0, 0x3e8d02c0, 0xbf5020c5 },
-   { 0x80800048, 0x22003ae8, 0x3e8d0340, 0xbec8b439 },
-   { 0x00800001, 0x24003ae0, 0x008d0300, 0x00000000 },
-   { 0x80800048, 0x22403ae8, 0x3e8d0340, 0x40011687 },
+   { 0x00600001, 0x24003ae0, 0x008d0300, 0x00000000 },
+   { 0x80600048, 0x21c03ae8, 0x3e8d02c0, 0x3fcc49ba },
+   { 0x00600001, 0x24003ae0, 0x008d0320, 0x00000000 },
+   { 0x80600048, 0x21e03ae8, 0x3e8d02e0, 0x3fcc49ba },
+   { 0x00600001, 0x24003ae0, 0x008d0320, 0x00000000 },
+   { 0x00600048, 0x24003ae0, 0x3e8d02c0, 0xbf5020c5 },
+   { 0x80600048, 0x22003ae8, 0x3e8d0340, 0xbec8b439 },
+   { 0x00600001, 0x24003ae0, 0x008d0320, 0x00000000 },
+   { 0x00600048, 0x24003ae0, 0x3e8d02e0, 0xbf5020c5 },
+   { 0x80800048, 0x22203ae8, 0x3e8d0360, 0xbec8b439 },
+   { 0x00600001, 0x24003ae0, 0x008d0300, 0x00000000 },
+   { 0x80600048, 0x22403ae8, 0x3e8d0340, 0x40011687 },
+   { 0x00600001, 0x24003ae0, 0x008d0320, 0x00000000 },
+   { 0x80600048, 0x22603ae8, 0x3e8d0360, 0x40011687 },
    { 0x00800001, 0x22803ee8, 0x38000000, 0x3f800000 },
commit b822bc8c2c0b47dfc391c86c3e5764f718898dce
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Aug 29 10:14:35 2014 +0100

    sna/gen8: Check instead of asserting for a hang whilst setting up video state
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/gen8_render.c b/src/sna/gen8_render.c
index 826675c..22df53d 100644
--- a/src/sna/gen8_render.c
+++ b/src/sna/gen8_render.c
@@ -193,10 +193,6 @@ static const struct blendinfo {
 #define FILL_FLAGS(op, format) GEN8_SET_FLAGS(FILL_SAMPLER, gen8_get_blend((op), false, (format)), GEN8_WM_KERNEL_NOMASK, FILL_VERTEX)
 #define FILL_FLAGS_NOBLEND GEN8_SET_FLAGS(FILL_SAMPLER, NO_BLEND, GEN8_WM_KERNEL_NOMASK, FILL_VERTEX)
 
-#define VIDEO_SAMPLER \
-	SAMPLER_OFFSET(SAMPLER_FILTER_BILINEAR, SAMPLER_EXTEND_PAD, \
-		       SAMPLER_FILTER_NEAREST, SAMPLER_EXTEND_NONE)
-
 #define GEN8_SAMPLER(f) (((f) >> 20) & 0xfff)
 #define GEN8_BLEND(f) (((f) >> 4) & 0x7ff)
 #define GEN8_READS_DST(f) (((f) >> 15) & 1)
@@ -3759,7 +3755,9 @@ gen8_render_video(struct sna *sna,
 	kgem_set_mode(&sna->kgem, KGEM_RENDER, tmp.dst.bo);
 	if (!kgem_check_bo(&sna->kgem, tmp.dst.bo, frame->bo, NULL)) {
 		kgem_submit(&sna->kgem);
-		assert(kgem_check_bo(&sna->kgem, tmp.dst.bo, frame->bo, NULL));
+		if (!kgem_check_bo(&sna->kgem, tmp.dst.bo, frame->bo, NULL))
+			return false;
+
 		_kgem_set_mode(&sna->kgem, KGEM_RENDER);
 	}
 


More information about the xorg-commit mailing list