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