Discussion:
[Libva] [Libva-intel-driver][PATCH] Use Media Read message if possible on Gen8+
Xiang, Haihao
2016-10-12 19:07:45 UTC
Permalink
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case Common/JPEGEncodeInputTest.Full/95.

before:
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where GetParam() = (Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[ PASSED ] 0 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where GetParam() = (Fixed Size 7680x4320, 0x501176 pointing to "I420")

after:
[ OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[ PASSED ] 1 test.

Signed-off-by: Xiang, Haihao <***@intel.com>
---
src/gen8_post_processing.c | 56 +++++++++++++++++-
src/shaders/post_processing/gen8/Makefile.am | 2 +
.../gen8/PL2_media_read_buf0123.g8a | 65 +++++++++++++++++++++
.../gen8/PL3_media_read_buf0123.g8a | 68 ++++++++++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl2.g8b | 44 ++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl3.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl3.g8b | 44 ++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl3_to_pl2.g8b | 47 +++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl3.asm | 4 +-
src/shaders/post_processing/gen8/pl3_to_pl3.g8b | 47 +++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl2.g9b | 44 ++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl3.g9b | 44 ++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl2.g9b | 47 +++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl3.g9b | 47 +++++++++++++++
16 files changed, 563 insertions(+), 2 deletions(-)
create mode 100644 src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
create mode 100644 src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a

diff --git a/src/gen8_post_processing.c b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@ gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct i965_post_proc
SURFACE_FORMAT_R8_UNORM, 0,
base_index + 2);
}
+
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, 0,
+ ALIGN(width[0], 4) / 4, height[0], pitch[0],
+ I965_SURFACEFORMAT_R8_UINT,
+ base_index + 3, 1);
+
+ if (fourcc_info->num_planes == 2) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 2) / 2, height[1], pitch[1],
+ I965_SURFACEFORMAT_R8G8_SINT,
+ base_index + 4, 1);
+ } else if (fourcc_info->num_planes == 3) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 4) / 4, height[1], pitch[1],
+ I965_SURFACEFORMAT_R8_SINT,
+ base_index + 4, 1);
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[2],
+ ALIGN(width[2], 4) / 4, height[2], pitch[2],
+ I965_SURFACEFORMAT_R8_SINT,
+ base_index + 5, 1);
+ }
}
}

@@ -788,6 +813,33 @@ gen8_pp_get_8tap_filter_mode(VADriverContextP ctx,
return 3;
}

+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+ const struct i965_surface *src_surface,
+ const VARectangle *src_rect,
+ const struct i965_surface *dst_surface,
+ const VARectangle *dst_rect)
+{
+ int src_fourcc = pp_get_surface_fourcc(ctx, src_surface);
+ int dst_fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+ const i965_fourcc_info *src_fourcc_info = get_fourcc_info(src_fourcc);
+ const i965_fourcc_info *dst_fourcc_info = get_fourcc_info(dst_fourcc);
+
+ if (!src_fourcc_info ||
+ src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+ !dst_fourcc_info ||
+ dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+ return 0;
+
+ if (src_rect->x == dst_rect->x &&
+ src_rect->y == dst_rect->y &&
+ src_rect->width == dst_rect->width &&
+ src_rect->height == dst_rect->height)
+ return 1;
+
+ return 0;
+}
+
VAStatus
gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
@@ -1082,7 +1134,9 @@ gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct i965_post_processing_con
dw = MAX(dw, dst_rect->width + dst_left_edge_extend);

pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
- pp_static_parameter->grf2.avs_wa_enable = 0; /* It is not required on GEN8+ */
+ pp_static_parameter->grf2.avs_wa_enable = gen8_pp_kernel_use_media_read_msg(ctx,
+ src_surface, src_rect,
+ dst_surface, dst_rect); /* reuse this flag for media block reading on gen8+ */
pp_static_parameter->grf2.alpha = 255;

pp_static_parameter->grf3.sampler_load_horizontal_scaling_step_ratio = (float) pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
PL2_AVS_Buf_1.g8a \
PL2_AVS_Buf_2.g8a \
PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
PL3_AVS_Buf_0.g8a \
PL3_AVS_Buf_1.g8a \
PL3_AVS_Buf_2.g8a \
PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
PA_AVS_Buf_0.g8a \
PA_AVS_Buf_1.g8a \
PA_AVS_Buf_2.g8a \
diff --git a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++ b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w //ORI Y (LUMA) = ORI
+ mov (1) r28.2<1>:ud 0xF000F:ud // Y Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc 0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but we can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16) uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ mov (1) r37.0<1>:d r9.0<0;1,0>:w
+ shr (1) r37.1<1>:d r9.1<0;1,0>:w 1:w
+ mov (1) r37.2<1>:ud 0x7000F:ud // U Block width and height (8x8)
+
+ send (1) r38<1>:d r37 0xc 0x2490004:ud
+
+ shl (8) uwBUFFER_0(4)<2> r38.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_0(6)<2> r38.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_1(4)<2> r39.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_1(6)<2> r39.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_2(4)<2> r40.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_2(6)<2> r40.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_3(4)<2> r41.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_3(6)<2> r41.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_0(8)<2> r38.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_0(10)<2> r38.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_1(8)<2> r39.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_1(10)<2> r39.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_2(8)<2> r40.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_2(10)<2> r40.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_3(8)<2> r41.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_3(10)<2> r41.17<16;8,2>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
+__SKIP_MEDIA_READ:
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++ b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w //ORI Y (LUMA) = ORI
+ mov (1) r28.2<1>:ud 0xF000F:ud // Y Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc 0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but we can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16) uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ shr (2) r37.0<1>:d r9.0<2;2,1>:w 1:w //H/V ORI U = H/V ORI/2
+ mov (1) r37.2<1>:ud 0x70007:ud // U Block width and height (8x8)
+ send (1) r38<1>:d r37 0xc 0x2290004:ud
+
+ shl (8) uwBUFFER_0(4)<2> r38.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_0(6)<2> r38.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_1(4)<2> r38.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_1(6)<2> r38.24<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_2(4)<2> r39.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_2(6)<2> r39.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_3(4)<2> r39.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_3(6)<2> r39.24<8;8,1>:ub 8:w
+
+ mov (8) r46<1>:ud r27<8;8,1>:ud
+ shr (2) r46.0<1>:d r9.0<2;2,1>:w 1:w //H/V ORI V = H/V ORI/2
+ mov (1) r46.2<1>:ud 0x70007:ud // V Block width and height (8x8)
+ send (1) r47<1>:d r46 0xc 0x2290005:ud
+
+ shl (8) uwBUFFER_0(8)<2> r47.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_0(10)<2> r47.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_1(8)<2> r47.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_1(10)<2> r47.24<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_2(8)<2> r48.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_2(10)<2> r48.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_3(8)<2> r48.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_3(10)<2> r48.24<8;8,1>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
+__SKIP_MEDIA_READ:
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
+__SAVE_BUF0123:
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"

diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
+__SAVE_BUF0123:
#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"

diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
+__SAVE_BUF0123:
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"

diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+__SAVE_BUF0123:
+#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"

.end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
--
1.9.1
Zhao Yakui
2016-10-14 00:37:27 UTC
Permalink
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case Common/JPEGEncodeInputTest.Full/95.
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where GetParam() = (Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[ PASSED ] 0 tests.
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where GetParam() = (Fixed Size 7680x4320, 0x501176 pointing to "I420")
[ OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[ PASSED ] 1 test.
This looks good to me.

Add: Reviewed-by: Zhao Yakui <***@intel.com>

Thanks
Yakui
Post by Xiang, Haihao
---
src/gen8_post_processing.c | 56 +++++++++++++++++-
src/shaders/post_processing/gen8/Makefile.am | 2 +
.../gen8/PL2_media_read_buf0123.g8a | 65 +++++++++++++++++++++
.../gen8/PL3_media_read_buf0123.g8a | 68 ++++++++++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl2.g8b | 44 ++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl3.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl3.g8b | 44 ++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl3_to_pl2.g8b | 47 +++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl3.asm | 4 +-
src/shaders/post_processing/gen8/pl3_to_pl3.g8b | 47 +++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl2.g9b | 44 ++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl3.g9b | 44 ++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl2.g9b | 47 +++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl3.g9b | 47 +++++++++++++++
16 files changed, 563 insertions(+), 2 deletions(-)
create mode 100644 src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
create mode 100644 src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@ gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct i965_post_proc
SURFACE_FORMAT_R8_UNORM, 0,
base_index + 2);
}
+
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, 0,
+ ALIGN(width[0], 4) / 4, height[0], pitch[0],
+ I965_SURFACEFORMAT_R8_UINT,
+ base_index + 3, 1);
+
+ if (fourcc_info->num_planes == 2) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 2) / 2, height[1], pitch[1],
+ I965_SURFACEFORMAT_R8G8_SINT,
+ base_index + 4, 1);
+ } else if (fourcc_info->num_planes == 3) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 4) / 4, height[1], pitch[1],
+ I965_SURFACEFORMAT_R8_SINT,
+ base_index + 4, 1);
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[2],
+ ALIGN(width[2], 4) / 4, height[2], pitch[2],
+ I965_SURFACEFORMAT_R8_SINT,
+ base_index + 5, 1);
+ }
}
}
@@ -788,6 +813,33 @@ gen8_pp_get_8tap_filter_mode(VADriverContextP ctx,
return 3;
}
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+ const struct i965_surface *src_surface,
+ const VARectangle *src_rect,
+ const struct i965_surface *dst_surface,
+ const VARectangle *dst_rect)
+{
+ int src_fourcc = pp_get_surface_fourcc(ctx, src_surface);
+ int dst_fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+ const i965_fourcc_info *src_fourcc_info = get_fourcc_info(src_fourcc);
+ const i965_fourcc_info *dst_fourcc_info = get_fourcc_info(dst_fourcc);
+
+ if (!src_fourcc_info ||
+ src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+ !dst_fourcc_info ||
+ dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+ return 0;
+
+ if (src_rect->x == dst_rect->x&&
+ src_rect->y == dst_rect->y&&
+ src_rect->width == dst_rect->width&&
+ src_rect->height == dst_rect->height)
+ return 1;
+
+ return 0;
+}
+
VAStatus
gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
@@ -1082,7 +1134,9 @@ gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct i965_post_processing_con
dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
- pp_static_parameter->grf2.avs_wa_enable = 0; /* It is not required on GEN8+ */
+ pp_static_parameter->grf2.avs_wa_enable = gen8_pp_kernel_use_media_read_msg(ctx,
+ src_surface, src_rect,
+ dst_surface, dst_rect); /* reuse this flag for media block reading on gen8+ */
pp_static_parameter->grf2.alpha = 255;
pp_static_parameter->grf3.sampler_load_horizontal_scaling_step_ratio = (float) pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
PL2_AVS_Buf_1.g8a \
PL2_AVS_Buf_2.g8a \
PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
PL3_AVS_Buf_0.g8a \
PL3_AVS_Buf_1.g8a \
PL3_AVS_Buf_2.g8a \
PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
PA_AVS_Buf_0.g8a \
PA_AVS_Buf_1.g8a \
PA_AVS_Buf_2.g8a \
diff --git a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++ b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w //ORI Y (LUMA) = ORI
+ mov (1) r28.2<1>:ud 0xF000F:ud // Y Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc 0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but we can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16) uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ mov (1) r37.0<1>:d r9.0<0;1,0>:w
+ shr (1) r37.1<1>:d r9.1<0;1,0>:w 1:w
+ mov (1) r37.2<1>:ud 0x7000F:ud // U Block width and height (8x8)
+
+ send (1) r38<1>:d r37 0xc 0x2490004:ud
+
+ shl (8) uwBUFFER_0(4)<2> r38.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_0(6)<2> r38.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_1(4)<2> r39.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_1(6)<2> r39.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_2(4)<2> r40.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_2(6)<2> r40.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_3(4)<2> r41.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_3(6)<2> r41.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_0(8)<2> r38.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_0(10)<2> r38.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_1(8)<2> r39.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_1(10)<2> r39.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_2(8)<2> r40.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_2(10)<2> r40.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_3(8)<2> r41.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_3(10)<2> r41.17<16;8,2>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++ b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w //ORI Y (LUMA) = ORI
+ mov (1) r28.2<1>:ud 0xF000F:ud // Y Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc 0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but we can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16) uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ shr (2) r37.0<1>:d r9.0<2;2,1>:w 1:w //H/V ORI U = H/V ORI/2
+ mov (1) r37.2<1>:ud 0x70007:ud // U Block width and height (8x8)
+ send (1) r38<1>:d r37 0xc 0x2290004:ud
+
+ shl (8) uwBUFFER_0(4)<2> r38.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_0(6)<2> r38.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_1(4)<2> r38.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_1(6)<2> r38.24<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_2(4)<2> r39.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_2(6)<2> r39.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_3(4)<2> r39.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_3(6)<2> r39.24<8;8,1>:ub 8:w
+
+ mov (8) r46<1>:ud r27<8;8,1>:ud
+ shr (2) r46.0<1>:d r9.0<2;2,1>:w 1:w //H/V ORI V = H/V ORI/2
+ mov (1) r46.2<1>:ud 0x70007:ud // V Block width and height (8x8)
+ send (1) r47<1>:d r46 0xc 0x2290005:ud
+
+ shl (8) uwBUFFER_0(8)<2> r47.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_0(10)<2> r47.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_1(8)<2> r47.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_1(10)<2> r47.24<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_2(8)<2> r48.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_2(10)<2> r48.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_3(8)<2> r48.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_3(10)<2> r48.24<8;8,1>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"
.end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
Sean V Kelley
2016-10-14 18:44:29 UTC
Permalink
Post by Zhao Yakui
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case Common/JPEGEncodeInputTest.Full/95.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420")
[       OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[  PASSED  ] 1 test.
This looks good to me.
Getting a core dump although the test is now passing. We'll need to
debug further.

Sean
Post by Zhao Yakui
Thanks
   Yakui
Post by Xiang, Haihao
---
  src/gen8_post_processing.c                         | 56
+++++++++++++++++-
  src/shaders/post_processing/gen8/Makefile.am       |  2 +
  .../gen8/PL2_media_read_buf0123.g8a                | 65
+++++++++++++++++++++
  .../gen8/PL3_media_read_buf0123.g8a                | 68
++++++++++++++++++++++
  src/shaders/post_processing/gen8/pl2_to_pl2.asm    |  2 +
  src/shaders/post_processing/gen8/pl2_to_pl2.g8b    | 44
++++++++++++++
  src/shaders/post_processing/gen8/pl2_to_pl3.asm    |  2 +
  src/shaders/post_processing/gen8/pl2_to_pl3.g8b    | 44
++++++++++++++
  src/shaders/post_processing/gen8/pl3_to_pl2.asm    |  2 +
  src/shaders/post_processing/gen8/pl3_to_pl2.g8b    | 47
+++++++++++++++
  src/shaders/post_processing/gen8/pl3_to_pl3.asm    |  4 +-
  src/shaders/post_processing/gen8/pl3_to_pl3.g8b    | 47
+++++++++++++++
  src/shaders/post_processing/gen9/pl2_to_pl2.g9b    | 44
++++++++++++++
  src/shaders/post_processing/gen9/pl2_to_pl3.g9b    | 44
++++++++++++++
  src/shaders/post_processing/gen9/pl3_to_pl2.g9b    | 47
+++++++++++++++
  src/shaders/post_processing/gen9/pl3_to_pl3.g9b    | 47
+++++++++++++++
  16 files changed, 563 insertions(+), 2 deletions(-)
  create mode 100644
src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
  create mode 100644
src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c
b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@
gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct
i965_post_proc
                                         SURFACE_FORMAT_R8_UNORM,
0,
                                         base_index + 2);
          }
+
+        gen8_pp_set_surface_state(ctx, pp_context,
+                                  bo, 0,
+                                  ALIGN(width[0], 4) / 4,
height[0], pitch[0],
+                                  I965_SURFACEFORMAT_R8_UINT,
+                                  base_index + 3, 1);
+
+        if (fourcc_info->num_planes == 2) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 2) / 2,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8G8_SINT
,
+                                      base_index + 4, 1);
+        } else if (fourcc_info->num_planes == 3) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 4) / 4,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8_SINT,
+                                      base_index + 4, 1);
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[2],
+                                      ALIGN(width[2], 4) / 4,
height[2], pitch[2],
+                                      I965_SURFACEFORMAT_R8_SINT,
+                                      base_index + 5, 1);
+        }
      }
  }
@@ -788,6 +813,33 @@ gen8_pp_get_8tap_filter_mode(VADriverContextP ctx,
          return 3;
  }
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+                                  const struct i965_surface
*src_surface,
+                                  const VARectangle *src_rect,
+                                  const struct i965_surface
*dst_surface,
+                                  const VARectangle *dst_rect)
+{
+    int src_fourcc = pp_get_surface_fourcc(ctx, src_surface);
+    int dst_fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+    const i965_fourcc_info *src_fourcc_info =
get_fourcc_info(src_fourcc);
+    const i965_fourcc_info *dst_fourcc_info =
get_fourcc_info(dst_fourcc);
+
+    if (!src_fourcc_info ||
+        src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+        !dst_fourcc_info ||
+        dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+        return 0;
+
+    if (src_rect->x == dst_rect->x&&
+        src_rect->y == dst_rect->y&&
+        src_rect->width == dst_rect->width&&
+        src_rect->height == dst_rect->height)
+        return 1;
+
+    return 0;
+}
+
  VAStatus
  gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct
i965_post_processing_context *pp_context,
                             const struct i965_surface
*src_surface,
@@ -1082,7 +1134,9 @@ gen8_pp_plx_avs_initialize(VADriverContextP
ctx, struct i965_post_processing_con
      dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
      pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
-    pp_static_parameter->grf2.avs_wa_enable = 0; /* It is not
required on GEN8+ */
+    pp_static_parameter->grf2.avs_wa_enable =
gen8_pp_kernel_use_media_read_msg(ctx,
+                                                                  
              src_surface, src_rect,
+                                                                  
              dst_surface, dst_rect); /* reuse this flag for media
block reading on gen8+ */
      pp_static_parameter->grf2.alpha = 255;
      pp_static_parameter-
Post by Xiang, Haihao
grf3.sampler_load_horizontal_scaling_step_ratio = (float)
pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am
b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
   PL2_AVS_Buf_1.g8a \
   PL2_AVS_Buf_2.g8a \
   PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
   PL3_AVS_Buf_0.g8a \
   PL3_AVS_Buf_1.g8a \
   PL3_AVS_Buf_2.g8a \
   PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
   PA_AVS_Buf_0.g8a \
   PA_AVS_Buf_1.g8a \
   PA_AVS_Buf_2.g8a \
diff --git
a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++ b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w                   
//ORI Y (LUMA) = ORI
+    mov  (1)
r28.2<1>:ud    0xF000F:ud                               // Y
Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc
0x2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16) uwBUFFER_0(0)<1>   r29.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(1)<1>   r29.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_0(2)<1>   r30.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(3)<1>   r30.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_1(0)<1>   r31.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(1)<1>   r31.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_1(2)<1>   r32.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(3)<1>   r32.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_2(0)<1>   r33.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(1)<1>   r33.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_2(2)<1>   r34.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(3)<1>   r34.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_3(0)<1>   r35.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(1)<1>   r35.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_3(2)<1>   r36.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(3)<1>   r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    mov  (1) r37.0<1>:d     r9.0<0;1,0>:w
+    shr  (1) r37.1<1>:d     r9.1<0;1,0>:w               1:w
+    mov  (1) r37.2<1>:ud    0x7000F:ud                     
      // U Block width and height (8x8)
+
+    send (1) r38<1>:d    r37    0xc
0x2490004:ud
+
+    shl  (8) uwBUFFER_0(4)<2>   r38.0<16;8,2>:ub         8:w
+    shl  (8) uwBUFFER_0(6)<2>   r38.16<16;8,2>:ub        8:w
+
+    shl  (8) uwBUFFER_1(4)<2>   r39.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_1(6)<2>   r39.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_2(4)<2>   r40.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_2(6)<2>   r40.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_3(4)<2>   r41.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_3(6)<2>   r41.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_0(8)<2>   r38.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_0(10)<2>  r38.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_1(8)<2>   r39.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_1(10)<2>  r39.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_2(8)<2>   r40.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_2(10)<2>  r40.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_3(8)<2>   r41.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_3(10)<2>  r41.17<16;8,2>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git
a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++ b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w                   
//ORI Y (LUMA) = ORI
+    mov  (1)
r28.2<1>:ud    0xF000F:ud                               // Y
Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc
0x2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16) uwBUFFER_0(0)<1>   r29.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(1)<1>   r29.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_0(2)<1>   r30.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(3)<1>   r30.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_1(0)<1>   r31.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(1)<1>   r31.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_1(2)<1>   r32.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(3)<1>   r32.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_2(0)<1>   r33.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(1)<1>   r33.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_2(2)<1>   r34.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(3)<1>   r34.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_3(0)<1>   r35.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(1)<1>   r35.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_3(2)<1>   r36.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(3)<1>   r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    shr  (2) r37.0<1>:d     r9.0<2;2,1>:w               1:w  
//H/V ORI U  = H/V ORI/2
+    mov  (1) r37.2<1>:ud    0x70007:ud                     
      // U Block width and height (8x8)
+    send (1) r38<1>:d    r37    0xc
0x2290004:ud
+
+    shl  (8) uwBUFFER_0(4)<2>   r38.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_0(6)<2>   r38.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_1(4)<2>   r38.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_1(6)<2>   r38.24<8;8,1>:ub         8:w
+
+    shl  (8) uwBUFFER_2(4)<2>   r39.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_2(6)<2>   r39.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_3(4)<2>   r39.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_3(6)<2>   r39.24<8;8,1>:ub         8:w
+
+    mov  (8) r46<1>:ud      r27<8;8,1>:ud
+    shr  (2) r46.0<1>:d     r9.0<2;2,1>:w               1:w  
//H/V ORI V  = H/V ORI/2
+    mov  (1) r46.2<1>:ud    0x70007:ud                     
      // V Block width and height (8x8)
+    send (1) r47<1>:d    r46    0xc
0x2290005:ud
+
+    shl  (8) uwBUFFER_0(8)<2>   r47.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_0(10)<2>  r47.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_1(8)<2>   r47.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_1(10)<2>  r47.24<8;8,1>:ub         8:w
+
+    shl  (8) uwBUFFER_2(8)<2>   r48.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_2(10)<2>  r48.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_3(8)<2>   r48.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_3(10)<2>  r48.24<8;8,1>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
  #include "PL2_AVS_Buf_0.g8a"
  #include "PL2_AVS_Buf_1.g8a"
  #include "PL2_AVS_Buf_2.g8a"
  #include "PL2_AVS_Buf_3.g8a"
  #include "Save_AVS_NV12.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
  #include "PL2_AVS_Buf_0.g8a"
  #include "PL2_AVS_Buf_1.g8a"
  #include "PL2_AVS_Buf_2.g8a"
  #include "PL2_AVS_Buf_3.g8a"
  #include "Save_AVS_PL3.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
  #include "PL3_AVS_Buf_0.g8a"
  #include "PL3_AVS_Buf_1.g8a"
  #include "PL3_AVS_Buf_2.g8a"
  #include "PL3_AVS_Buf_3.g8a"
  #include "Save_AVS_NV12.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
  #include "PL3_AVS_Buf_0.g8a"
  #include "PL3_AVS_Buf_1.g8a"
  #include "PL3_AVS_Buf_2.g8a"
  #include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+#include "Save_AVS_PL3.g8a"
  #include "EOT.g8a"
  .end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
Eoff, Ullysses A
2016-10-14 19:58:03 UTC
Permalink
-----Original Message-----
Sent: Friday, October 14, 2016 11:44 AM
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read message if possible on Gen8+
Post by Zhao Yakui
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case Common/JPEGEncodeInputTest.Full/95.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420")
[       OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[  PASSED  ] 1 test.
This looks good to me.
Getting a core dump although the test is now passing. We'll need to
debug further.
I don't get any core dump on my SKL... And the test passes for me with
this patch. Are you running the test in isolation or with the entire suite?
If with the entire suite, does the core dump occur during this test case or
another?

I've noticed that I occasionally get a "bus error" with the
Big/JPEGEncodeInputTest.* test cases (i.e. 8192x8192) even without
this patch. Perhaps this is what you're encountering?

U. Artie
Sean
Post by Zhao Yakui
Thanks
   Yakui
Post by Xiang, Haihao
---
  src/gen8_post_processing.c                         | 56
+++++++++++++++++-
  src/shaders/post_processing/gen8/Makefile.am       |  2 +
  .../gen8/PL2_media_read_buf0123.g8a                | 65
+++++++++++++++++++++
  .../gen8/PL3_media_read_buf0123.g8a                | 68
++++++++++++++++++++++
  src/shaders/post_processing/gen8/pl2_to_pl2.asm    |  2 +
  src/shaders/post_processing/gen8/pl2_to_pl2.g8b    | 44
++++++++++++++
  src/shaders/post_processing/gen8/pl2_to_pl3.asm    |  2 +
  src/shaders/post_processing/gen8/pl2_to_pl3.g8b    | 44
++++++++++++++
  src/shaders/post_processing/gen8/pl3_to_pl2.asm    |  2 +
  src/shaders/post_processing/gen8/pl3_to_pl2.g8b    | 47
+++++++++++++++
  src/shaders/post_processing/gen8/pl3_to_pl3.asm    |  4 +-
  src/shaders/post_processing/gen8/pl3_to_pl3.g8b    | 47
+++++++++++++++
  src/shaders/post_processing/gen9/pl2_to_pl2.g9b    | 44
++++++++++++++
  src/shaders/post_processing/gen9/pl2_to_pl3.g9b    | 44
++++++++++++++
  src/shaders/post_processing/gen9/pl3_to_pl2.g9b    | 47
+++++++++++++++
  src/shaders/post_processing/gen9/pl3_to_pl3.g9b    | 47
+++++++++++++++
  16 files changed, 563 insertions(+), 2 deletions(-)
  create mode 100644
src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
  create mode 100644
src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c
b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@
gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct
i965_post_proc
                                         SURFACE_FORMAT_R8_UNORM,
0,
                                         base_index + 2);
          }
+
+        gen8_pp_set_surface_state(ctx, pp_context,
+                                  bo, 0,
+                                  ALIGN(width[0], 4) / 4,
height[0], pitch[0],
+                                  I965_SURFACEFORMAT_R8_UINT,
+                                  base_index + 3, 1);
+
+        if (fourcc_info->num_planes == 2) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 2) / 2,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8G8_SINT
,
+                                      base_index + 4, 1);
+        } else if (fourcc_info->num_planes == 3) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 4) / 4,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8_SINT,
+                                      base_index + 4, 1);
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[2],
+                                      ALIGN(width[2], 4) / 4,
height[2], pitch[2],
+                                      I965_SURFACEFORMAT_R8_SINT,
+                                      base_index + 5, 1);
+        }
      }
  }
@@ -788,6 +813,33 @@ gen8_pp_get_8tap_filter_mode(VADriverContextP ctx,
          return 3;
  }
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+                                  const struct i965_surface
*src_surface,
+                                  const VARectangle *src_rect,
+                                  const struct i965_surface
*dst_surface,
+                                  const VARectangle *dst_rect)
+{
+    int src_fourcc = pp_get_surface_fourcc(ctx, src_surface);
+    int dst_fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+    const i965_fourcc_info *src_fourcc_info =
get_fourcc_info(src_fourcc);
+    const i965_fourcc_info *dst_fourcc_info =
get_fourcc_info(dst_fourcc);
+
+    if (!src_fourcc_info ||
+        src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+        !dst_fourcc_info ||
+        dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+        return 0;
+
+    if (src_rect->x == dst_rect->x&&
+        src_rect->y == dst_rect->y&&
+        src_rect->width == dst_rect->width&&
+        src_rect->height == dst_rect->height)
+        return 1;
+
+    return 0;
+}
+
  VAStatus
  gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct
i965_post_processing_context *pp_context,
                             const struct i965_surface
*src_surface,
@@ -1082,7 +1134,9 @@ gen8_pp_plx_avs_initialize(VADriverContextP
ctx, struct i965_post_processing_con
      dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
      pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
-    pp_static_parameter->grf2.avs_wa_enable = 0; /* It is not
required on GEN8+ */
+    pp_static_parameter->grf2.avs_wa_enable =
gen8_pp_kernel_use_media_read_msg(ctx,
+
              src_surface, src_rect,
+
              dst_surface, dst_rect); /* reuse this flag for media
block reading on gen8+ */
      pp_static_parameter->grf2.alpha = 255;
      pp_static_parameter-
Post by Xiang, Haihao
grf3.sampler_load_horizontal_scaling_step_ratio = (float)
pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am
b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
   PL2_AVS_Buf_1.g8a \
   PL2_AVS_Buf_2.g8a \
   PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
   PL3_AVS_Buf_0.g8a \
   PL3_AVS_Buf_1.g8a \
   PL3_AVS_Buf_2.g8a \
   PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
   PA_AVS_Buf_0.g8a \
   PA_AVS_Buf_1.g8a \
   PA_AVS_Buf_2.g8a \
diff --git
a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++ b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+    mov  (1)
r28.2<1>:ud    0xF000F:ud                               // Y
Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc
0x2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16) uwBUFFER_0(0)<1>   r29.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(1)<1>   r29.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_0(2)<1>   r30.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(3)<1>   r30.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_1(0)<1>   r31.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(1)<1>   r31.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_1(2)<1>   r32.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(3)<1>   r32.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_2(0)<1>   r33.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(1)<1>   r33.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_2(2)<1>   r34.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(3)<1>   r34.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_3(0)<1>   r35.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(1)<1>   r35.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_3(2)<1>   r36.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(3)<1>   r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    mov  (1) r37.0<1>:d     r9.0<0;1,0>:w
+    shr  (1) r37.1<1>:d     r9.1<0;1,0>:w               1:w
+    mov  (1) r37.2<1>:ud    0x7000F:ud
      // U Block width and height (8x8)
+
+    send (1) r38<1>:d    r37    0xc
0x2490004:ud
+
+    shl  (8) uwBUFFER_0(4)<2>   r38.0<16;8,2>:ub         8:w
+    shl  (8) uwBUFFER_0(6)<2>   r38.16<16;8,2>:ub        8:w
+
+    shl  (8) uwBUFFER_1(4)<2>   r39.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_1(6)<2>   r39.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_2(4)<2>   r40.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_2(6)<2>   r40.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_3(4)<2>   r41.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_3(6)<2>   r41.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_0(8)<2>   r38.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_0(10)<2>  r38.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_1(8)<2>   r39.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_1(10)<2>  r39.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_2(8)<2>   r40.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_2(10)<2>  r40.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_3(8)<2>   r41.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_3(10)<2>  r41.17<16;8,2>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git
a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++ b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+    mov  (1)
r28.2<1>:ud    0xF000F:ud                               // Y
Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc
0x2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16) uwBUFFER_0(0)<1>   r29.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(1)<1>   r29.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_0(2)<1>   r30.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(3)<1>   r30.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_1(0)<1>   r31.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(1)<1>   r31.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_1(2)<1>   r32.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(3)<1>   r32.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_2(0)<1>   r33.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(1)<1>   r33.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_2(2)<1>   r34.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(3)<1>   r34.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_3(0)<1>   r35.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(1)<1>   r35.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_3(2)<1>   r36.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(3)<1>   r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    shr  (2) r37.0<1>:d     r9.0<2;2,1>:w               1:w
//H/V ORI U  = H/V ORI/2
+    mov  (1) r37.2<1>:ud    0x70007:ud
      // U Block width and height (8x8)
+    send (1) r38<1>:d    r37    0xc
0x2290004:ud
+
+    shl  (8) uwBUFFER_0(4)<2>   r38.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_0(6)<2>   r38.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_1(4)<2>   r38.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_1(6)<2>   r38.24<8;8,1>:ub         8:w
+
+    shl  (8) uwBUFFER_2(4)<2>   r39.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_2(6)<2>   r39.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_3(4)<2>   r39.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_3(6)<2>   r39.24<8;8,1>:ub         8:w
+
+    mov  (8) r46<1>:ud      r27<8;8,1>:ud
+    shr  (2) r46.0<1>:d     r9.0<2;2,1>:w               1:w
//H/V ORI V  = H/V ORI/2
+    mov  (1) r46.2<1>:ud    0x70007:ud
      // V Block width and height (8x8)
+    send (1) r47<1>:d    r46    0xc
0x2290005:ud
+
+    shl  (8) uwBUFFER_0(8)<2>   r47.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_0(10)<2>  r47.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_1(8)<2>   r47.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_1(10)<2>  r47.24<8;8,1>:ub         8:w
+
+    shl  (8) uwBUFFER_2(8)<2>   r48.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_2(10)<2>  r48.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_3(8)<2>   r48.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_3(10)<2>  r48.24<8;8,1>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
  #include "PL2_AVS_Buf_0.g8a"
  #include "PL2_AVS_Buf_1.g8a"
  #include "PL2_AVS_Buf_2.g8a"
  #include "PL2_AVS_Buf_3.g8a"
  #include "Save_AVS_NV12.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
  #include "PL2_AVS_Buf_0.g8a"
  #include "PL2_AVS_Buf_1.g8a"
  #include "PL2_AVS_Buf_2.g8a"
  #include "PL2_AVS_Buf_3.g8a"
  #include "Save_AVS_PL3.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
  #include "PL3_AVS_Buf_0.g8a"
  #include "PL3_AVS_Buf_1.g8a"
  #include "PL3_AVS_Buf_2.g8a"
  #include "PL3_AVS_Buf_3.g8a"
  #include "Save_AVS_NV12.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
  #include "PL3_AVS_Buf_0.g8a"
  #include "PL3_AVS_Buf_1.g8a"
  #include "PL3_AVS_Buf_2.g8a"
  #include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+#include "Save_AVS_PL3.g8a"
  #include "EOT.g8a"
  .end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
Sean V Kelley
2016-10-14 20:44:53 UTC
Permalink
-----Original Message-----
Sent: Friday, October 14, 2016 11:44 AM
@intel.com>
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read
message if possible on Gen8+
Post by Zhao Yakui
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case
Common/JPEGEncodeInputTest.Full/95.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420")
[       OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[  PASSED  ] 1 test.
This looks good to me.
Getting a core dump although the test is now passing.  We'll need
to
debug further.
I don't get any core dump on my SKL...  And the test passes for me
with
this patch.  Are you running the test in isolation or with the entire
suite?
If with the entire suite, does the core dump occur during this test case or
another?
I've noticed that I occasionally get a "bus error" with the
Big/JPEGEncodeInputTest.* test cases (i.e. 8192x8192) even without
this patch.  Perhaps this is what you're encountering?
I'm consistently seeing this on a SKL system. It is also quite slow
for execution. Actually tested this on my Arch sytem with Kernel 4.7
and the older LTS 4.4. Same bus error and slow execution performance.

We need to isolate the root cause here because I suspect this is what
Haihao has also been seeing.

Takes nearly a minute on one system and far less time on an Ubuntu
system with the same kernel and essentially the same SKL SKU.

Sean
U. Artie
Sean
Post by Zhao Yakui
Thanks
   Yakui
Post by Xiang, Haihao
---
  src/gen8_post_processing.c                         | 56
+++++++++++++++++-
  src/shaders/post_processing/gen8/Makefile.am       |  2 +
  .../gen8/PL2_media_read_buf0123.g8a                | 65
+++++++++++++++++++++
  .../gen8/PL3_media_read_buf0123.g8a                | 68
++++++++++++++++++++++
  src/shaders/post_processing/gen8/pl2_to_pl2.asm    |  2 +
  src/shaders/post_processing/gen8/pl2_to_pl2.g8b    | 44
++++++++++++++
  src/shaders/post_processing/gen8/pl2_to_pl3.asm    |  2 +
  src/shaders/post_processing/gen8/pl2_to_pl3.g8b    | 44
++++++++++++++
  src/shaders/post_processing/gen8/pl3_to_pl2.asm    |  2 +
  src/shaders/post_processing/gen8/pl3_to_pl2.g8b    | 47
+++++++++++++++
  src/shaders/post_processing/gen8/pl3_to_pl3.asm    |  4 +-
  src/shaders/post_processing/gen8/pl3_to_pl3.g8b    | 47
+++++++++++++++
  src/shaders/post_processing/gen9/pl2_to_pl2.g9b    | 44
++++++++++++++
  src/shaders/post_processing/gen9/pl2_to_pl3.g9b    | 44
++++++++++++++
  src/shaders/post_processing/gen9/pl3_to_pl2.g9b    | 47
+++++++++++++++
  src/shaders/post_processing/gen9/pl3_to_pl3.g9b    | 47
+++++++++++++++
  16 files changed, 563 insertions(+), 2 deletions(-)
  create mode 100644
src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
  create mode 100644
src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c
b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@
gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct
i965_post_proc
                                         SURFACE_FORMAT_R8_UNOR
M,
0,
                                         base_index + 2);
          }
+
+        gen8_pp_set_surface_state(ctx, pp_context,
+                                  bo, 0,
+                                  ALIGN(width[0], 4) / 4,
height[0], pitch[0],
+                                  I965_SURFACEFORMAT_R8_UINT,
+                                  base_index + 3, 1);
+
+        if (fourcc_info->num_planes == 2) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 2) / 2,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8G8_
SINT
,
+                                      base_index + 4, 1);
+        } else if (fourcc_info->num_planes == 3) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 4) / 4,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8_SI
NT,
+                                      base_index + 4, 1);
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[2],
+                                      ALIGN(width[2], 4) / 4,
height[2], pitch[2],
+                                      I965_SURFACEFORMAT_R8_SI
NT,
+                                      base_index + 5, 1);
+        }
      }
  }
@@ -788,6 +813,33 @@
gen8_pp_get_8tap_filter_mode(VADriverContextP
ctx,
          return 3;
  }
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+                                  const struct i965_surface
*src_surface,
+                                  const VARectangle *src_rect,
+                                  const struct i965_surface
*dst_surface,
+                                  const VARectangle *dst_rect)
+{
+    int src_fourcc = pp_get_surface_fourcc(ctx, src_surface);
+    int dst_fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+    const i965_fourcc_info *src_fourcc_info =
get_fourcc_info(src_fourcc);
+    const i965_fourcc_info *dst_fourcc_info =
get_fourcc_info(dst_fourcc);
+
+    if (!src_fourcc_info ||
+        src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+        !dst_fourcc_info ||
+        dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+        return 0;
+
+    if (src_rect->x == dst_rect->x&&
+        src_rect->y == dst_rect->y&&
+        src_rect->width == dst_rect->width&&
+        src_rect->height == dst_rect->height)
+        return 1;
+
+    return 0;
+}
+
  VAStatus
  gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct
i965_post_processing_context *pp_context,
                             const struct i965_surface
*src_surface,
@@ -1082,7 +1134,9 @@
gen8_pp_plx_avs_initialize(VADriverContextP
ctx, struct i965_post_processing_con
      dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
      pp_static_parameter->grf1.pointer_to_inline_parameter =
7;
-    pp_static_parameter->grf2.avs_wa_enable = 0; /* It is not
required on GEN8+ */
+    pp_static_parameter->grf2.avs_wa_enable =
gen8_pp_kernel_use_media_read_msg(ctx,
+
              src_surface, src_rect,
+
              dst_surface, dst_rect); /* reuse this flag for
media
block reading on gen8+ */
      pp_static_parameter->grf2.alpha = 255;
      pp_static_parameter-
Post by Xiang, Haihao
grf3.sampler_load_horizontal_scaling_step_ratio = (float)
pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am
b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
   PL2_AVS_Buf_1.g8a \
   PL2_AVS_Buf_2.g8a \
   PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
   PL3_AVS_Buf_0.g8a \
   PL3_AVS_Buf_1.g8a \
   PL3_AVS_Buf_2.g8a \
   PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
   PA_AVS_Buf_0.g8a \
   PA_AVS_Buf_1.g8a \
   PA_AVS_Buf_2.g8a \
diff --git
a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+    mov  (1)
r28.2<1>:ud    0xF000F:ud                              
// Y
Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc
0x2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16) uwBUFFER_0(0)<1>   r29.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(1)<1>   r29.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_0(2)<1>   r30.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(3)<1>   r30.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_1(0)<1>   r31.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(1)<1>   r31.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_1(2)<1>   r32.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(3)<1>   r32.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_2(0)<1>   r33.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(1)<1>   r33.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_2(2)<1>   r34.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(3)<1>   r34.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_3(0)<1>   r35.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(1)<1>   r35.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_3(2)<1>   r36.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(3)<1>   r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    mov  (1) r37.0<1>:d     r9.0<0;1,0>:w
+    shr  (1) r37.1<1>:d     r9.1<0;1,0>:w               1:w
+    mov  (1) r37.2<1>:ud    0x7000F:ud
      // U Block width and height (8x8)
+
+    send (1) r38<1>:d    r37    0xc
0x2490004:ud
+
+    shl  (8) uwBUFFER_0(4)<2>   r38.0<16;8,2>:ub         8:w
+    shl  (8) uwBUFFER_0(6)<2>   r38.16<16;8,2>:ub        8:w
+
+    shl  (8) uwBUFFER_1(4)<2>   r39.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_1(6)<2>   r39.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_2(4)<2>   r40.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_2(6)<2>   r40.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_3(4)<2>   r41.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_3(6)<2>   r41.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_0(8)<2>   r38.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_0(10)<2>  r38.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_1(8)<2>   r39.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_1(10)<2>  r39.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_2(8)<2>   r40.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_2(10)<2>  r40.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_3(8)<2>   r41.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_3(10)<2>  r41.17<16;8,2>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git
a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+    mov  (1)
r28.2<1>:ud    0xF000F:ud                              
// Y
Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc
0x2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16) uwBUFFER_0(0)<1>   r29.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(1)<1>   r29.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_0(2)<1>   r30.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(3)<1>   r30.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_1(0)<1>   r31.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(1)<1>   r31.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_1(2)<1>   r32.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(3)<1>   r32.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_2(0)<1>   r33.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(1)<1>   r33.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_2(2)<1>   r34.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(3)<1>   r34.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_3(0)<1>   r35.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(1)<1>   r35.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_3(2)<1>   r36.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(3)<1>   r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    shr  (2) r37.0<1>:d     r9.0<2;2,1>:w               1:w
//H/V ORI U  = H/V ORI/2
+    mov  (1) r37.2<1>:ud    0x70007:ud
      // U Block width and height (8x8)
+    send (1) r38<1>:d    r37    0xc
0x2290004:ud
+
+    shl  (8) uwBUFFER_0(4)<2>   r38.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_0(6)<2>   r38.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_1(4)<2>   r38.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_1(6)<2>   r38.24<8;8,1>:ub         8:w
+
+    shl  (8) uwBUFFER_2(4)<2>   r39.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_2(6)<2>   r39.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_3(4)<2>   r39.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_3(6)<2>   r39.24<8;8,1>:ub         8:w
+
+    mov  (8) r46<1>:ud      r27<8;8,1>:ud
+    shr  (2) r46.0<1>:d     r9.0<2;2,1>:w               1:w
//H/V ORI V  = H/V ORI/2
+    mov  (1) r46.2<1>:ud    0x70007:ud
      // V Block width and height (8x8)
+    send (1) r47<1>:d    r46    0xc
0x2290005:ud
+
+    shl  (8) uwBUFFER_0(8)<2>   r47.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_0(10)<2>  r47.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_1(8)<2>   r47.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_1(10)<2>  r47.24<8;8,1>:ub         8:w
+
+    shl  (8) uwBUFFER_2(8)<2>   r48.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_2(10)<2>  r48.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_3(8)<2>   r48.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_3(10)<2>  r48.24<8;8,1>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
  #include "PL2_AVS_Buf_0.g8a"
  #include "PL2_AVS_Buf_1.g8a"
  #include "PL2_AVS_Buf_2.g8a"
  #include "PL2_AVS_Buf_3.g8a"
  #include "Save_AVS_NV12.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
  #include "PL2_AVS_Buf_0.g8a"
  #include "PL2_AVS_Buf_1.g8a"
  #include "PL2_AVS_Buf_2.g8a"
  #include "PL2_AVS_Buf_3.g8a"
  #include "Save_AVS_PL3.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
  #include "PL3_AVS_Buf_0.g8a"
  #include "PL3_AVS_Buf_1.g8a"
  #include "PL3_AVS_Buf_2.g8a"
  #include "PL3_AVS_Buf_3.g8a"
  #include "Save_AVS_NV12.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
  #include "PL3_AVS_Buf_0.g8a"
  #include "PL3_AVS_Buf_1.g8a"
  #include "PL3_AVS_Buf_2.g8a"
  #include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+#include "Save_AVS_PL3.g8a"
  #include "EOT.g8a"
  .end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
Eoff, Ullysses A
2016-10-14 21:12:45 UTC
Permalink
-----Original Message-----
Sent: Friday, October 14, 2016 1:45 PM
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read message if possible on Gen8+
-----Original Message-----
Sent: Friday, October 14, 2016 11:44 AM
@intel.com>
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read
message if possible on Gen8+
Post by Zhao Yakui
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case
Common/JPEGEncodeInputTest.Full/95.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420")
[       OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[  PASSED  ] 1 test.
This looks good to me.
Getting a core dump although the test is now passing.  We'll need
to
debug further.
I don't get any core dump on my SKL...  And the test passes for me
with
this patch.  Are you running the test in isolation or with the entire
suite?
If with the entire suite, does the core dump occur during this test case or
another?
I've noticed that I occasionally get a "bus error" with the
Big/JPEGEncodeInputTest.* test cases (i.e. 8192x8192) even without
this patch.  Perhaps this is what you're encountering?
I'm consistently seeing this on a SKL system. It is also quite slow
for execution. Actually tested this on my Arch sytem with Kernel 4.7
and the older LTS 4.4. Same bus error and slow execution performance.
We need to isolate the root cause here because I suspect this is what
Haihao has also been seeing.
Takes nearly a minute on one system and far less time on an Ubuntu
system with the same kernel and essentially the same SKL SKU.
Yes, I agree we need to isolate this issue. I can file a bug for this but
was hoping to find time to generate a coredump output file.

The slow execution is caused by the byte comparison loop between the
input and the output YUV data... for larger resolutions it takes a long time
and uses a lot of memory. I don't like having long running tests, especially
at this level of testing... so the only way to speed up this test is to optimize
the comparison routine. Perhaps checksums would be better, but would
require a new library dependency. We could also consider disabling this
test case (8192x8192) too.

Nonetheless, none of these issues are related to this patch since they
pre-existed. Thus, this patch LGTM.

U. Artie
Sean
U. Artie
Sean
Post by Zhao Yakui
Thanks
   Yakui
Post by Xiang, Haihao
---
  src/gen8_post_processing.c                         | 56
+++++++++++++++++-
  src/shaders/post_processing/gen8/Makefile.am       |  2 +
  .../gen8/PL2_media_read_buf0123.g8a                | 65
+++++++++++++++++++++
  .../gen8/PL3_media_read_buf0123.g8a                | 68
++++++++++++++++++++++
  src/shaders/post_processing/gen8/pl2_to_pl2.asm    |  2 +
  src/shaders/post_processing/gen8/pl2_to_pl2.g8b    | 44
++++++++++++++
  src/shaders/post_processing/gen8/pl2_to_pl3.asm    |  2 +
  src/shaders/post_processing/gen8/pl2_to_pl3.g8b    | 44
++++++++++++++
  src/shaders/post_processing/gen8/pl3_to_pl2.asm    |  2 +
  src/shaders/post_processing/gen8/pl3_to_pl2.g8b    | 47
+++++++++++++++
  src/shaders/post_processing/gen8/pl3_to_pl3.asm    |  4 +-
  src/shaders/post_processing/gen8/pl3_to_pl3.g8b    | 47
+++++++++++++++
  src/shaders/post_processing/gen9/pl2_to_pl2.g9b    | 44
++++++++++++++
  src/shaders/post_processing/gen9/pl2_to_pl3.g9b    | 44
++++++++++++++
  src/shaders/post_processing/gen9/pl3_to_pl2.g9b    | 47
+++++++++++++++
  src/shaders/post_processing/gen9/pl3_to_pl3.g9b    | 47
+++++++++++++++
  16 files changed, 563 insertions(+), 2 deletions(-)
  create mode 100644
src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
  create mode 100644
src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c
b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@
gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct
i965_post_proc
                                         SURFACE_FORMAT_R8_UNOR
M,
0,
                                         base_index + 2);
          }
+
+        gen8_pp_set_surface_state(ctx, pp_context,
+                                  bo, 0,
+                                  ALIGN(width[0], 4) / 4,
height[0], pitch[0],
+                                  I965_SURFACEFORMAT_R8_UINT,
+                                  base_index + 3, 1);
+
+        if (fourcc_info->num_planes == 2) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 2) / 2,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8G8_
SINT
,
+                                      base_index + 4, 1);
+        } else if (fourcc_info->num_planes == 3) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 4) / 4,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8_SI
NT,
+                                      base_index + 4, 1);
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[2],
+                                      ALIGN(width[2], 4) / 4,
height[2], pitch[2],
+                                      I965_SURFACEFORMAT_R8_SI
NT,
+                                      base_index + 5, 1);
+        }
      }
  }
@@ -788,6 +813,33 @@
gen8_pp_get_8tap_filter_mode(VADriverContextP
ctx,
          return 3;
  }
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+                                  const struct i965_surface
*src_surface,
+                                  const VARectangle *src_rect,
+                                  const struct i965_surface
*dst_surface,
+                                  const VARectangle *dst_rect)
+{
+    int src_fourcc = pp_get_surface_fourcc(ctx, src_surface);
+    int dst_fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+    const i965_fourcc_info *src_fourcc_info =
get_fourcc_info(src_fourcc);
+    const i965_fourcc_info *dst_fourcc_info =
get_fourcc_info(dst_fourcc);
+
+    if (!src_fourcc_info ||
+        src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+        !dst_fourcc_info ||
+        dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+        return 0;
+
+    if (src_rect->x == dst_rect->x&&
+        src_rect->y == dst_rect->y&&
+        src_rect->width == dst_rect->width&&
+        src_rect->height == dst_rect->height)
+        return 1;
+
+    return 0;
+}
+
  VAStatus
  gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct
i965_post_processing_context *pp_context,
                             const struct i965_surface
*src_surface,
@@ -1082,7 +1134,9 @@
gen8_pp_plx_avs_initialize(VADriverContextP
ctx, struct i965_post_processing_con
      dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
      pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
-    pp_static_parameter->grf2.avs_wa_enable = 0; /* It is not
required on GEN8+ */
+    pp_static_parameter->grf2.avs_wa_enable =
gen8_pp_kernel_use_media_read_msg(ctx,
+
              src_surface, src_rect,
+
              dst_surface, dst_rect); /* reuse this flag for
media
block reading on gen8+ */
      pp_static_parameter->grf2.alpha = 255;
      pp_static_parameter-
Post by Xiang, Haihao
grf3.sampler_load_horizontal_scaling_step_ratio = (float)
pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am
b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
   PL2_AVS_Buf_1.g8a \
   PL2_AVS_Buf_2.g8a \
   PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
   PL3_AVS_Buf_0.g8a \
   PL3_AVS_Buf_1.g8a \
   PL3_AVS_Buf_2.g8a \
   PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
   PA_AVS_Buf_0.g8a \
   PA_AVS_Buf_1.g8a \
   PA_AVS_Buf_2.g8a \
diff --git
a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+    mov  (1)
r28.2<1>:ud    0xF000F:ud
// Y
Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc
0x2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16) uwBUFFER_0(0)<1>   r29.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(1)<1>   r29.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_0(2)<1>   r30.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(3)<1>   r30.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_1(0)<1>   r31.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(1)<1>   r31.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_1(2)<1>   r32.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(3)<1>   r32.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_2(0)<1>   r33.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(1)<1>   r33.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_2(2)<1>   r34.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(3)<1>   r34.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_3(0)<1>   r35.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(1)<1>   r35.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_3(2)<1>   r36.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(3)<1>   r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    mov  (1) r37.0<1>:d     r9.0<0;1,0>:w
+    shr  (1) r37.1<1>:d     r9.1<0;1,0>:w               1:w
+    mov  (1) r37.2<1>:ud    0x7000F:ud
      // U Block width and height (8x8)
+
+    send (1) r38<1>:d    r37    0xc
0x2490004:ud
+
+    shl  (8) uwBUFFER_0(4)<2>   r38.0<16;8,2>:ub         8:w
+    shl  (8) uwBUFFER_0(6)<2>   r38.16<16;8,2>:ub        8:w
+
+    shl  (8) uwBUFFER_1(4)<2>   r39.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_1(6)<2>   r39.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_2(4)<2>   r40.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_2(6)<2>   r40.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_3(4)<2>   r41.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_3(6)<2>   r41.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_0(8)<2>   r38.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_0(10)<2>  r38.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_1(8)<2>   r39.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_1(10)<2>  r39.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_2(8)<2>   r40.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_2(10)<2>  r40.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_3(8)<2>   r41.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_3(10)<2>  r41.17<16;8,2>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git
a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+    mov  (1)
r28.2<1>:ud    0xF000F:ud
// Y
Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc
0x2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16) uwBUFFER_0(0)<1>   r29.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(1)<1>   r29.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_0(2)<1>   r30.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(3)<1>   r30.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_1(0)<1>   r31.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(1)<1>   r31.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_1(2)<1>   r32.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(3)<1>   r32.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_2(0)<1>   r33.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(1)<1>   r33.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_2(2)<1>   r34.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(3)<1>   r34.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_3(0)<1>   r35.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(1)<1>   r35.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_3(2)<1>   r36.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(3)<1>   r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    shr  (2) r37.0<1>:d     r9.0<2;2,1>:w               1:w
//H/V ORI U  = H/V ORI/2
+    mov  (1) r37.2<1>:ud    0x70007:ud
      // U Block width and height (8x8)
+    send (1) r38<1>:d    r37    0xc
0x2290004:ud
+
+    shl  (8) uwBUFFER_0(4)<2>   r38.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_0(6)<2>   r38.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_1(4)<2>   r38.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_1(6)<2>   r38.24<8;8,1>:ub         8:w
+
+    shl  (8) uwBUFFER_2(4)<2>   r39.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_2(6)<2>   r39.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_3(4)<2>   r39.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_3(6)<2>   r39.24<8;8,1>:ub         8:w
+
+    mov  (8) r46<1>:ud      r27<8;8,1>:ud
+    shr  (2) r46.0<1>:d     r9.0<2;2,1>:w               1:w
//H/V ORI V  = H/V ORI/2
+    mov  (1) r46.2<1>:ud    0x70007:ud
      // V Block width and height (8x8)
+    send (1) r47<1>:d    r46    0xc
0x2290005:ud
+
+    shl  (8) uwBUFFER_0(8)<2>   r47.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_0(10)<2>  r47.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_1(8)<2>   r47.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_1(10)<2>  r47.24<8;8,1>:ub         8:w
+
+    shl  (8) uwBUFFER_2(8)<2>   r48.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_2(10)<2>  r48.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_3(8)<2>   r48.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_3(10)<2>  r48.24<8;8,1>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
  #include "PL2_AVS_Buf_0.g8a"
  #include "PL2_AVS_Buf_1.g8a"
  #include "PL2_AVS_Buf_2.g8a"
  #include "PL2_AVS_Buf_3.g8a"
  #include "Save_AVS_NV12.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
  #include "PL2_AVS_Buf_0.g8a"
  #include "PL2_AVS_Buf_1.g8a"
  #include "PL2_AVS_Buf_2.g8a"
  #include "PL2_AVS_Buf_3.g8a"
  #include "Save_AVS_PL3.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
  #include "PL3_AVS_Buf_0.g8a"
  #include "PL3_AVS_Buf_1.g8a"
  #include "PL3_AVS_Buf_2.g8a"
  #include "PL3_AVS_Buf_3.g8a"
  #include "Save_AVS_NV12.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
  #include "PL3_AVS_Buf_0.g8a"
  #include "PL3_AVS_Buf_1.g8a"
  #include "PL3_AVS_Buf_2.g8a"
  #include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+#include "Save_AVS_PL3.g8a"
  #include "EOT.g8a"
  .end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
Kelley, Sean V
2016-10-14 21:48:05 UTC
Permalink
-----Original Message-----
Sent: Friday, October 14, 2016 1:45 PM
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read message if possible on Gen8+
Post by Eoff, Ullysses A
-----Original Message-----
Sent: Friday, October 14, 2016 11:44 AM
@intel.com>
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read
message if possible on Gen8+
Post by Zhao Yakui
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case
Common/JPEGEncodeInputTest.Full/95.
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where
GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[ PASSED ] 0 tests.
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where
GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420")
[ OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[ PASSED ] 1 test.
This looks good to me.
Getting a core dump although the test is now passing. We'll need to
debug further.
I don't get any core dump on my SKL... And the test passes for me with
this patch. Are you running the test in isolation or with the entire suite?
If with the entire suite, does the core dump occur during this test case or
another?
I've noticed that I occasionally get a "bus error" with the
Big/JPEGEncodeInputTest.* test cases (i.e. 8192x8192) even without
this patch. Perhaps this is what you're encountering?
I'm consistently seeing this on a SKL system. It is also quite slow
for execution. Actually tested this on my Arch sytem with Kernel 4.7
and the older LTS 4.4. Same bus error and slow execution performance.
We need to isolate the root cause here because I suspect this is what
Haihao has also been seeing.
Takes nearly a minute on one system and far less time on an Ubuntu
system with the same kernel and essentially the same SKL SKU.
Yes, I agree we need to isolate this issue. I can file a bug for this but
was hoping to find time to generate a coredump output file.

The slow execution is caused by the byte comparison loop between the
input and the output YUV data... for larger resolutions it takes a long time
and uses a lot of memory. I don't like having long running tests, especially
at this level of testing... so the only way to speed up this test is to optimize
the comparison routine. Perhaps checksums would be better, but would
require a new library dependency. We could also consider disabling this
test case (8192x8192) too.

Nonetheless, none of these issues are related to this patch since they
pre-existed. Thus, this patch LGTM.

I would prefer to hold off on the merge and use this patch as a test case. I much rather the test fail quickly than what it is doing now with the test in place.

So no merge yet.

Thanks,

Sean

U. Artie
Sean
Post by Eoff, Ullysses A
U. Artie
Sean
Post by Zhao Yakui
Thanks
Yakui
Post by Xiang, Haihao
---
src/gen8_post_processing.c | 56
+++++++++++++++++-
src/shaders/post_processing/gen8/Makefile.am | 2 +
.../gen8/PL2_media_read_buf0123.g8a | 65
+++++++++++++++++++++
.../gen8/PL3_media_read_buf0123.g8a | 68
++++++++++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl2.g8b | 44 ++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl3.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl3.g8b | 44 ++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl3_to_pl2.g8b | 47 +++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl3.asm | 4 +-
src/shaders/post_processing/gen8/pl3_to_pl3.g8b | 47 +++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl2.g9b | 44 ++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl3.g9b | 44 ++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl2.g9b | 47 +++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl3.g9b | 47 +++++++++++++++
16 files changed, 563 insertions(+), 2 deletions(-)
create mode 100644
src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
create mode 100644
src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c
b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@
gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct
i965_post_proc
SURFACE_FORMAT_R8_UNOR
M,
0,
base_index + 2);
}
+
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, 0,
+ ALIGN(width[0], 4) / 4,
height[0], pitch[0],
+ I965_SURFACEFORMAT_R8_UINT,
+ base_index + 3, 1);
+
+ if (fourcc_info->num_planes == 2) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 2) / 2,
height[1], pitch[1],
+ I965_SURFACEFORMAT_R8G8_
SINT
,
+ base_index + 4, 1);
+ } else if (fourcc_info->num_planes == 3) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 4) / 4,
height[1], pitch[1],
+ I965_SURFACEFORMAT_R8_SI
NT,
+ base_index + 4, 1);
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[2],
+ ALIGN(width[2], 4) / 4,
height[2], pitch[2],
+ I965_SURFACEFORMAT_R8_SI
NT,
+ base_index + 5, 1);
+ }
}
}
@@ -788,6 +813,33 @@
gen8_pp_get_8tap_filter_mode(VADriverContextP
ctx,
return 3;
}
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+ const struct i965_surface *src_surface,
+ const VARectangle *src_rect,
+ const struct i965_surface *dst_surface,
+ const VARectangle *dst_rect)
+{
+ int src_fourcc = pp_get_surface_fourcc(ctx, src_surface);
+ int dst_fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+ const i965_fourcc_info *src_fourcc_info =
get_fourcc_info(src_fourcc);
+ const i965_fourcc_info *dst_fourcc_info =
get_fourcc_info(dst_fourcc);
+
+ if (!src_fourcc_info ||
+ src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+ !dst_fourcc_info ||
+ dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+ return 0;
+
+ if (src_rect->x == dst_rect->x&&
+ src_rect->y == dst_rect->y&&
+ src_rect->width == dst_rect->width&&
+ src_rect->height == dst_rect->height)
+ return 1;
+
+ return 0;
+}
+
VAStatus
gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct
i965_post_processing_context *pp_context,
const struct i965_surface
*src_surface,
@@ -1082,7 +1134,9 @@
gen8_pp_plx_avs_initialize(VADriverContextP
ctx, struct i965_post_processing_con
dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
- pp_static_parameter->grf2.avs_wa_enable = 0; /* It is not
required on GEN8+ */
+ pp_static_parameter->grf2.avs_wa_enable =
gen8_pp_kernel_use_media_read_msg(ctx,
+
src_surface, src_rect,
+
dst_surface, dst_rect); /* reuse this flag for
media
block reading on gen8+ */
pp_static_parameter->grf2.alpha = 255;
pp_static_parameter-
Post by Xiang, Haihao
grf3.sampler_load_horizontal_scaling_step_ratio = (float)
pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am
b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
PL2_AVS_Buf_1.g8a \
PL2_AVS_Buf_2.g8a \
PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
PL3_AVS_Buf_0.g8a \
PL3_AVS_Buf_1.g8a \
PL3_AVS_Buf_2.g8a \
PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
PA_AVS_Buf_0.g8a \
PA_AVS_Buf_1.g8a \
PA_AVS_Buf_2.g8a \
diff --git
a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+ mov (1)
r28.2<1>:ud 0xF000F:ud
// Y
Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc
0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but
we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16) uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ mov (1) r37.0<1>:d r9.0<0;1,0>:w
+ shr (1) r37.1<1>:d r9.1<0;1,0>:w 1:w
+ mov (1) r37.2<1>:ud 0x7000F:ud
// U Block width and height (8x8)
+
+ send (1) r38<1>:d r37 0xc
0x2490004:ud
+
+ shl (8) uwBUFFER_0(4)<2> r38.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_0(6)<2> r38.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_1(4)<2> r39.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_1(6)<2> r39.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_2(4)<2> r40.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_2(6)<2> r40.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_3(4)<2> r41.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_3(6)<2> r41.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_0(8)<2> r38.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_0(10)<2> r38.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_1(8)<2> r39.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_1(10)<2> r39.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_2(8)<2> r40.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_2(10)<2> r40.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_3(8)<2> r41.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_3(10)<2> r41.17<16;8,2>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git
a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+ mov (1)
r28.2<1>:ud 0xF000F:ud
// Y
Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc
0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but
we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16) uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ shr (2) r37.0<1>:d r9.0<2;2,1>:w 1:w
//H/V ORI U = H/V ORI/2
+ mov (1) r37.2<1>:ud 0x70007:ud
// U Block width and height (8x8)
+ send (1) r38<1>:d r37 0xc
0x2290004:ud
+
+ shl (8) uwBUFFER_0(4)<2> r38.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_0(6)<2> r38.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_1(4)<2> r38.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_1(6)<2> r38.24<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_2(4)<2> r39.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_2(6)<2> r39.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_3(4)<2> r39.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_3(6)<2> r39.24<8;8,1>:ub 8:w
+
+ mov (8) r46<1>:ud r27<8;8,1>:ud
+ shr (2) r46.0<1>:d r9.0<2;2,1>:w 1:w
//H/V ORI V = H/V ORI/2
+ mov (1) r46.2<1>:ud 0x70007:ud
// V Block width and height (8x8)
+ send (1) r47<1>:d r46 0xc
0x2290005:ud
+
+ shl (8) uwBUFFER_0(8)<2> r47.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_0(10)<2> r47.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_1(8)<2> r47.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_1(10)<2> r47.24<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_2(8)<2> r48.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_2(10)<2> r48.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_3(8)<2> r48.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_3(10)<2> r48.24<8;8,1>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"
.end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
_______________________________________________
Libva mailing list
***@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libva
Eoff, Ullysses A
2016-10-14 21:54:14 UTC
Permalink
----
U. Artie Eoff
Software Engineer
Visualization - Intel Open Source Technology Center
Hillsboro, Oregon, USA
-----Original Message-----
From: Kelley, Sean V
Sent: Friday, October 14, 2016 2:48 PM
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read message if possible on Gen8+
-----Original Message-----
Sent: Friday, October 14, 2016 1:45 PM
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read message if possible on Gen8+
Post by Eoff, Ullysses A
-----Original Message-----
Of Sean V Kelley
Sent: Friday, October 14, 2016 11:44 AM
@intel.com>
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read
message if possible on Gen8+
Post by Zhao Yakui
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes
the
failure reported by gtest case
Common/JPEGEncodeInputTest.Full/95.
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where
GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms
total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[ PASSED ] 0 tests.
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where
GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420")
[ OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms
total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[ PASSED ] 1 test.
This looks good to me.
Getting a core dump although the test is now passing. We'll need to
debug further.
I don't get any core dump on my SKL... And the test passes for me with
this patch. Are you running the test in isolation or with the entire
suite?
If with the entire suite, does the core dump occur during this test case or
another?
I've noticed that I occasionally get a "bus error" with the
Big/JPEGEncodeInputTest.* test cases (i.e. 8192x8192) even without
this patch. Perhaps this is what you're encountering?
I'm consistently seeing this on a SKL system. It is also quite slow
for execution. Actually tested this on my Arch sytem with Kernel 4.7
and the older LTS 4.4. Same bus error and slow execution performance.
We need to isolate the root cause here because I suspect this is what
Haihao has also been seeing.
Takes nearly a minute on one system and far less time on an Ubuntu
system with the same kernel and essentially the same SKL SKU.
Yes, I agree we need to isolate this issue. I can file a bug for this but
was hoping to find time to generate a coredump output file.
The slow execution is caused by the byte comparison loop between the
input and the output YUV data... for larger resolutions it takes a long time
and uses a lot of memory. I don't like having long running tests, especially
at this level of testing... so the only way to speed up this test is to optimize
the comparison routine. Perhaps checksums would be better, but would
require a new library dependency. We could also consider disabling this
test case (8192x8192) too.
Nonetheless, none of these issues are related to this patch since they
pre-existed. Thus, this patch LGTM.
I would prefer to hold off on the merge and use this patch as a test case. I much rather the test fail quickly than what it is doing now
with the test in place.
Oh, so you're seeing the sigbus for the test case that this patch addresses?
(Common/JPEGEncodeInputTest.Full/95 > (Fixed Size 7680x4320, 0x501176 pointing to "I420"))

I only see it with the "Big/JPEGEncodeInputTest.Full*" test cases.
So no merge yet.
Thanks,
Sean
U. Artie
Sean
Post by Eoff, Ullysses A
U. Artie
Sean
Post by Zhao Yakui
Thanks
Yakui
Post by Xiang, Haihao
---
src/gen8_post_processing.c | 56
+++++++++++++++++-
src/shaders/post_processing/gen8/Makefile.am | 2 +
.../gen8/PL2_media_read_buf0123.g8a | 65
+++++++++++++++++++++
.../gen8/PL3_media_read_buf0123.g8a | 68
++++++++++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl2.g8b | 44
++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl3.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl3.g8b | 44
++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl3_to_pl2.g8b | 47
+++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl3.asm | 4 +-
src/shaders/post_processing/gen8/pl3_to_pl3.g8b | 47
+++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl2.g9b | 44
++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl3.g9b | 44
++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl2.g9b | 47
+++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl3.g9b | 47
+++++++++++++++
16 files changed, 563 insertions(+), 2 deletions(-)
create mode 100644
src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
create mode 100644
src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c
b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@
gen8_pp_set_media_rw_message_surface(VADriverContextP ctx,
struct
i965_post_proc
SURFACE_FORMAT_R8_UNOR
M,
0,
base_index + 2);
}
+
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, 0,
+ ALIGN(width[0], 4) / 4,
height[0], pitch[0],
+ I965_SURFACEFORMAT_R8_UINT,
+ base_index + 3, 1);
+
+ if (fourcc_info->num_planes == 2) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 2) / 2,
height[1], pitch[1],
+ I965_SURFACEFORMAT_R8G8_
SINT
,
+ base_index + 4, 1);
+ } else if (fourcc_info->num_planes == 3) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 4) / 4,
height[1], pitch[1],
+ I965_SURFACEFORMAT_R8_SI
NT,
+ base_index + 4, 1);
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[2],
+ ALIGN(width[2], 4) / 4,
height[2], pitch[2],
+ I965_SURFACEFORMAT_R8_SI
NT,
+ base_index + 5, 1);
+ }
}
}
@@ -788,6 +813,33 @@
gen8_pp_get_8tap_filter_mode(VADriverContextP
ctx,
return 3;
}
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+ const struct i965_surface
*src_surface,
+ const VARectangle *src_rect,
+ const struct i965_surface
*dst_surface,
+ const VARectangle *dst_rect)
+{
+ int src_fourcc = pp_get_surface_fourcc(ctx, src_surface);
+ int dst_fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+ const i965_fourcc_info *src_fourcc_info =
get_fourcc_info(src_fourcc);
+ const i965_fourcc_info *dst_fourcc_info =
get_fourcc_info(dst_fourcc);
+
+ if (!src_fourcc_info ||
+ src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+ !dst_fourcc_info ||
+ dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+ return 0;
+
+ if (src_rect->x == dst_rect->x&&
+ src_rect->y == dst_rect->y&&
+ src_rect->width == dst_rect->width&&
+ src_rect->height == dst_rect->height)
+ return 1;
+
+ return 0;
+}
+
VAStatus
gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct
i965_post_processing_context *pp_context,
const struct i965_surface
*src_surface,
@@ -1082,7 +1134,9 @@
gen8_pp_plx_avs_initialize(VADriverContextP
ctx, struct i965_post_processing_con
dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
pp_static_parameter->grf1.pointer_to_inline_parameter =
7;
- pp_static_parameter->grf2.avs_wa_enable = 0; /* It is not
required on GEN8+ */
+ pp_static_parameter->grf2.avs_wa_enable =
gen8_pp_kernel_use_media_read_msg(ctx,
+
src_surface, src_rect,
+
dst_surface, dst_rect); /* reuse this flag for
media
block reading on gen8+ */
pp_static_parameter->grf2.alpha = 255;
pp_static_parameter-
Post by Xiang, Haihao
grf3.sampler_load_horizontal_scaling_step_ratio = (float)
pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am
b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
PL2_AVS_Buf_1.g8a \
PL2_AVS_Buf_2.g8a \
PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
PL3_AVS_Buf_0.g8a \
PL3_AVS_Buf_1.g8a \
PL3_AVS_Buf_2.g8a \
PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
PA_AVS_Buf_0.g8a \
PA_AVS_Buf_1.g8a \
PA_AVS_Buf_2.g8a \
diff --git
a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+ mov (1)
r28.2<1>:ud 0xF000F:ud
// Y
Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc
0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but
we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16) uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ mov (1) r37.0<1>:d r9.0<0;1,0>:w
+ shr (1) r37.1<1>:d r9.1<0;1,0>:w 1:w
+ mov (1) r37.2<1>:ud 0x7000F:ud
// U Block width and height (8x8)
+
+ send (1) r38<1>:d r37 0xc
0x2490004:ud
+
+ shl (8) uwBUFFER_0(4)<2> r38.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_0(6)<2> r38.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_1(4)<2> r39.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_1(6)<2> r39.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_2(4)<2> r40.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_2(6)<2> r40.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_3(4)<2> r41.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_3(6)<2> r41.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_0(8)<2> r38.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_0(10)<2> r38.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_1(8)<2> r39.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_1(10)<2> r39.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_2(8)<2> r40.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_2(10)<2> r40.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_3(8)<2> r41.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_3(10)<2> r41.17<16;8,2>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git
a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+ mov (1)
r28.2<1>:ud 0xF000F:ud
// Y
Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc
0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but
we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16) uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ shr (2) r37.0<1>:d r9.0<2;2,1>:w 1:w
//H/V ORI U = H/V ORI/2
+ mov (1) r37.2<1>:ud 0x70007:ud
// U Block width and height (8x8)
+ send (1) r38<1>:d r37 0xc
0x2290004:ud
+
+ shl (8) uwBUFFER_0(4)<2> r38.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_0(6)<2> r38.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_1(4)<2> r38.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_1(6)<2> r38.24<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_2(4)<2> r39.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_2(6)<2> r39.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_3(4)<2> r39.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_3(6)<2> r39.24<8;8,1>:ub 8:w
+
+ mov (8) r46<1>:ud r27<8;8,1>:ud
+ shr (2) r46.0<1>:d r9.0<2;2,1>:w 1:w
//H/V ORI V = H/V ORI/2
+ mov (1) r46.2<1>:ud 0x70007:ud
// V Block width and height (8x8)
+ send (1) r47<1>:d r46 0xc
0x2290005:ud
+
+ shl (8) uwBUFFER_0(8)<2> r47.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_0(10)<2> r47.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_1(8)<2> r47.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_1(10)<2> r47.24<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_2(8)<2> r48.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_2(10)<2> r48.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_3(8)<2> r48.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_3(10)<2> r48.24<8;8,1>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"
.end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
Xiang, Haihao
2016-10-17 04:56:10 UTC
Permalink
-----Original Message-----
Behalf
Of Sean V Kelley
Sent: Friday, October 14, 2016 11:44 AM
<haihao.xiang
@intel.com>
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read
message if possible on Gen8+
Post by Zhao Yakui
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case
Common/JPEGEncodeInputTest.Full/95.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420")
[       OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[  PASSED  ] 1 test.
This looks good to me.
Getting a core dump although the test is now passing.  We'll need
to
debug further.
I don't get any core dump on my SKL...  And the test passes for me
with
this patch.  Are you running the test in isolation or with the
entire
suite?
If with the entire suite, does the core dump occur during this test case or
another?
I've noticed that I occasionally get a "bus error" with the
Big/JPEGEncodeInputTest.* test cases (i.e. 8192x8192) even without
this patch.  Perhaps this is what you're encountering?
I'm consistently seeing this on a SKL system.  It is also quite slow
for execution.  Actually tested this on my Arch sytem with Kernel 4.7
and the older LTS 4.4.  Same bus error and slow execution
performance.
Sorry, I didn't notice the issue of slow execution. In theory, my patch
should not cause slowdown because it read YUV data directly from a
surface in the GPU kernel. I ran the test case several times
with/without the patch, and can't reproduce the issue. It seems this
issue is also a random issue in gtest.
We need to isolate the root cause here because I suspect this is what
Haihao has also been seeing.
Takes nearly a minute on one system and far less time on an Ubuntu
system with the same kernel and essentially the same SKL SKU.
Sean
U. Artie
Sean
Post by Zhao Yakui
Thanks
   Yakui
Post by Xiang, Haihao
---
  src/gen8_post_processing.c                         | 56
+++++++++++++++++-
  src/shaders/post_processing/gen8/Makefile.am       |  2 +
  .../gen8/PL2_media_read_buf0123.g8a                | 65
+++++++++++++++++++++
  .../gen8/PL3_media_read_buf0123.g8a                | 68
++++++++++++++++++++++
  src/shaders/post_processing/gen8/pl2_to_pl2.asm    |  2 +
  src/shaders/post_processing/gen8/pl2_to_pl2.g8b    | 44
++++++++++++++
  src/shaders/post_processing/gen8/pl2_to_pl3.asm    |  2 +
  src/shaders/post_processing/gen8/pl2_to_pl3.g8b    | 44
++++++++++++++
  src/shaders/post_processing/gen8/pl3_to_pl2.asm    |  2 +
  src/shaders/post_processing/gen8/pl3_to_pl2.g8b    | 47
+++++++++++++++
  src/shaders/post_processing/gen8/pl3_to_pl3.asm    |  4 +-
  src/shaders/post_processing/gen8/pl3_to_pl3.g8b    | 47
+++++++++++++++
  src/shaders/post_processing/gen9/pl2_to_pl2.g9b    | 44
++++++++++++++
  src/shaders/post_processing/gen9/pl2_to_pl3.g9b    | 44
++++++++++++++
  src/shaders/post_processing/gen9/pl3_to_pl2.g9b    | 47
+++++++++++++++
  src/shaders/post_processing/gen9/pl3_to_pl3.g9b    | 47
+++++++++++++++
  16 files changed, 563 insertions(+), 2 deletions(-)
  create mode 100644
src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
  create mode 100644
src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c
b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@
gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct
i965_post_proc
                                         SURFACE_FORMAT_R8_UN
OR
M,
0,
                                         base_index + 2);
          }
+
+        gen8_pp_set_surface_state(ctx, pp_context,
+                                  bo, 0,
+                                  ALIGN(width[0], 4) / 4,
height[0], pitch[0],
+                                  I965_SURFACEFORMAT_R8_UINT
,
+                                  base_index + 3, 1);
+
+        if (fourcc_info->num_planes == 2) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 2) /
2,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8G
8_
SINT
,
+                                      base_index + 4, 1);
+        } else if (fourcc_info->num_planes == 3) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 4) /
4,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8_
SI
NT,
+                                      base_index + 4, 1);
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[2],
+                                      ALIGN(width[2], 4) /
4,
height[2], pitch[2],
+                                      I965_SURFACEFORMAT_R8_
SI
NT,
+                                      base_index + 5, 1);
+        }
      }
  }
@@ -788,6 +813,33 @@
gen8_pp_get_8tap_filter_mode(VADriverContextP
ctx,
          return 3;
  }
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+                                  const struct i965_surface
*src_surface,
+                                  const VARectangle
*src_rect,
+                                  const struct i965_surface
*dst_surface,
+                                  const VARectangle
*dst_rect)
+{
+    int src_fourcc = pp_get_surface_fourcc(ctx,
src_surface);
+    int dst_fourcc = pp_get_surface_fourcc(ctx,
dst_surface);
+    const i965_fourcc_info *src_fourcc_info =
get_fourcc_info(src_fourcc);
+    const i965_fourcc_info *dst_fourcc_info =
get_fourcc_info(dst_fourcc);
+
+    if (!src_fourcc_info ||
+        src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+        !dst_fourcc_info ||
+        dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+        return 0;
+
+    if (src_rect->x == dst_rect->x&&
+        src_rect->y == dst_rect->y&&
+        src_rect->width == dst_rect->width&&
+        src_rect->height == dst_rect->height)
+        return 1;
+
+    return 0;
+}
+
  VAStatus
  gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct
i965_post_processing_context *pp_context,
                             const struct i965_surface
*src_surface,
@@ -1082,7 +1134,9 @@
gen8_pp_plx_avs_initialize(VADriverContextP
ctx, struct i965_post_processing_con
      dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
      pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
-    pp_static_parameter->grf2.avs_wa_enable = 0; /* It is not
required on GEN8+ */
+    pp_static_parameter->grf2.avs_wa_enable =
gen8_pp_kernel_use_media_read_msg(ctx,
+
              src_surface, src_rect,
+
              dst_surface, dst_rect); /* reuse this flag for
media
block reading on gen8+ */
      pp_static_parameter->grf2.alpha = 255;
      pp_static_parameter-
Post by Xiang, Haihao
grf3.sampler_load_horizontal_scaling_step_ratio = (float)
pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am
b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
   PL2_AVS_Buf_1.g8a \
   PL2_AVS_Buf_2.g8a \
   PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
   PL3_AVS_Buf_0.g8a \
   PL3_AVS_Buf_1.g8a \
   PL3_AVS_Buf_2.g8a \
   PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
   PA_AVS_Buf_0.g8a \
   PA_AVS_Buf_1.g8a \
   PA_AVS_Buf_2.g8a \
diff --git
a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+    mov  (1)
r28.2<1>:ud    0xF000F:ud                              
// Y
Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc
0x2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way,
but
we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16) uwBUFFER_0(0)<1>   r29.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(1)<1>   r29.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_0(2)<1>   r30.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(3)<1>   r30.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_1(0)<1>   r31.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(1)<1>   r31.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_1(2)<1>   r32.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(3)<1>   r32.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_2(0)<1>   r33.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(1)<1>   r33.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_2(2)<1>   r34.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(3)<1>   r34.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_3(0)<1>   r35.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(1)<1>   r35.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_3(2)<1>   r36.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(3)<1>   r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    mov  (1) r37.0<1>:d     r9.0<0;1,0>:w
+    shr  (1) r37.1<1>:d     r9.1<0;1,0>:w               1:w
+    mov  (1) r37.2<1>:ud    0x7000F:ud
      // U Block width and height (8x8)
+
+    send (1) r38<1>:d    r37    0xc
0x2490004:ud
+
+    shl  (8) uwBUFFER_0(4)<2>   r38.0<16;8,2>:ub         8:w
+    shl  (8) uwBUFFER_0(6)<2>   r38.16<16;8,2>:ub        8:w
+
+    shl  (8)
uwBUFFER_1(4)<2>   r39.0<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_1(6)<2>   r39.16<16;8,2>:ub         8:w
+
+    shl  (8)
uwBUFFER_2(4)<2>   r40.0<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_2(6)<2>   r40.16<16;8,2>:ub         8:w
+
+    shl  (8)
uwBUFFER_3(4)<2>   r41.0<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_3(6)<2>   r41.16<16;8,2>:ub         8:w
+
+    shl  (8)
uwBUFFER_0(8)<2>   r38.1<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_0(10)<2>  r38.17<16;8,2>:ub         8:w
+
+    shl  (8)
uwBUFFER_1(8)<2>   r39.1<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_1(10)<2>  r39.17<16;8,2>:ub         8:w
+
+    shl  (8)
uwBUFFER_2(8)<2>   r40.1<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_2(10)<2>  r40.17<16;8,2>:ub         8:w
+
+    shl  (8)
uwBUFFER_3(8)<2>   r41.1<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_3(10)<2>  r41.17<16;8,2>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git
a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+    mov  (1)
r28.2<1>:ud    0xF000F:ud                              
// Y
Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc
0x2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way,
but
we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16) uwBUFFER_0(0)<1>   r29.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(1)<1>   r29.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_0(2)<1>   r30.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(3)<1>   r30.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_1(0)<1>   r31.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(1)<1>   r31.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_1(2)<1>   r32.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(3)<1>   r32.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_2(0)<1>   r33.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(1)<1>   r33.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_2(2)<1>   r34.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(3)<1>   r34.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_3(0)<1>   r35.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(1)<1>   r35.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_3(2)<1>   r36.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(3)<1>   r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    shr  (2) r37.0<1>:d     r9.0<2;2,1>:w               1:w
//H/V ORI U  = H/V ORI/2
+    mov  (1) r37.2<1>:ud    0x70007:ud
      // U Block width and height (8x8)
+    send (1) r38<1>:d    r37    0xc
0x2290004:ud
+
+    shl  (8) uwBUFFER_0(4)<2>   r38.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_0(6)<2>   r38.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_1(4)<2>   r38.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_1(6)<2>   r38.24<8;8,1>:ub         8:w
+
+    shl  (8) uwBUFFER_2(4)<2>   r39.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_2(6)<2>   r39.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_3(4)<2>   r39.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_3(6)<2>   r39.24<8;8,1>:ub         8:w
+
+    mov  (8) r46<1>:ud      r27<8;8,1>:ud
+    shr  (2) r46.0<1>:d     r9.0<2;2,1>:w               1:w
//H/V ORI V  = H/V ORI/2
+    mov  (1) r46.2<1>:ud    0x70007:ud
      // V Block width and height (8x8)
+    send (1) r47<1>:d    r46    0xc
0x2290005:ud
+
+    shl  (8) uwBUFFER_0(8)<2>   r47.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_0(10)<2>  r47.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_1(8)<2>   r47.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_1(10)<2>  r47.24<8;8,1>:ub         8:w
+
+    shl  (8) uwBUFFER_2(8)<2>   r48.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_2(10)<2>  r48.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_3(8)<2>   r48.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_3(10)<2>  r48.24<8;8,1>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
  #include "PL2_AVS_Buf_0.g8a"
  #include "PL2_AVS_Buf_1.g8a"
  #include "PL2_AVS_Buf_2.g8a"
  #include "PL2_AVS_Buf_3.g8a"
  #include "Save_AVS_NV12.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
  #include "PL2_AVS_Buf_0.g8a"
  #include "PL2_AVS_Buf_1.g8a"
  #include "PL2_AVS_Buf_2.g8a"
  #include "PL2_AVS_Buf_3.g8a"
  #include "Save_AVS_PL3.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
  #include "PL3_AVS_Buf_0.g8a"
  #include "PL3_AVS_Buf_1.g8a"
  #include "PL3_AVS_Buf_2.g8a"
  #include "PL3_AVS_Buf_3.g8a"
  #include "Save_AVS_NV12.g8a"
  #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
  #include "VP_Setup.g8a"
  #include "Set_Layer_0.g8a"
  #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
  #include "PL3_AVS_Buf_0.g8a"
  #include "PL3_AVS_Buf_1.g8a"
  #include "PL3_AVS_Buf_2.g8a"
  #include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+#include "Save_AVS_PL3.g8a"
  #include "EOT.g8a"
  .end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
     { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
     { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
     { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
     { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
     { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
     { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
Zhao Yakui
2016-10-17 01:12:59 UTC
Permalink
Post by Eoff, Ullysses A
-----Original Message-----
Sent: Friday, October 14, 2016 11:44 AM
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read message if possible on Gen8+
Post by Zhao Yakui
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case Common/JPEGEncodeInputTest.Full/95.
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[ PASSED ] 0 tests.
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420")
[ OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[ PASSED ] 1 test.
This looks good to me.
Getting a core dump although the test is now passing. We'll need to
debug further.
I don't get any core dump on my SKL... And the test passes for me with
this patch. Are you running the test in isolation or with the entire suite?
If with the entire suite, does the core dump occur during this test case or
another?
I've noticed that I occasionally get a "bus error" with the
Big/JPEGEncodeInputTest.* test cases (i.e. 8192x8192) even without
this patch. Perhaps this is what you're encountering?
Hi, Sean/Artie

Is it possible that you can send out the dmesg log when the
bus_error is triggered?
I try the test several times on one KBL machine(similar to SKL) and
unfortunately there is no "sig_bus error".

Thanks
Yakui
Post by Eoff, Ullysses A
U. Artie
Sean
Post by Zhao Yakui
Thanks
Yakui
Post by Xiang, Haihao
---
src/gen8_post_processing.c | 56
+++++++++++++++++-
src/shaders/post_processing/gen8/Makefile.am | 2 +
.../gen8/PL2_media_read_buf0123.g8a | 65
+++++++++++++++++++++
.../gen8/PL3_media_read_buf0123.g8a | 68
++++++++++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl2.g8b | 44
++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl3.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl3.g8b | 44
++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl3_to_pl2.g8b | 47
+++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl3.asm | 4 +-
src/shaders/post_processing/gen8/pl3_to_pl3.g8b | 47
+++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl2.g9b | 44
++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl3.g9b | 44
++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl2.g9b | 47
+++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl3.g9b | 47
+++++++++++++++
16 files changed, 563 insertions(+), 2 deletions(-)
create mode 100644
src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
create mode 100644
src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c
b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@
gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct
i965_post_proc
SURFACE_FORMAT_R8_UNORM, 0,
base_index + 2);
}
+
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, 0,
+ ALIGN(width[0], 4) / 4,
height[0], pitch[0],
+ I965_SURFACEFORMAT_R8_UINT,
+ base_index + 3, 1);
+
+ if (fourcc_info->num_planes == 2) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 2) / 2, height[1], pitch[1],
+ I965_SURFACEFORMAT_R8G8_SINT
,
+ base_index + 4, 1);
+ } else if (fourcc_info->num_planes == 3) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 4) / 4, height[1], pitch[1],
+ I965_SURFACEFORMAT_R8_SINT,
+ base_index + 4, 1);
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[2],
+ ALIGN(width[2], 4) / 4, height[2], pitch[2],
+ I965_SURFACEFORMAT_R8_SINT,
+ base_index + 5, 1);
+ }
}
}
@@ -788,6 +813,33 @@ gen8_pp_get_8tap_filter_mode(VADriverContextP ctx,
return 3;
}
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+ const struct i965_surface *src_surface,
+ const VARectangle *src_rect,
+ const struct i965_surface *dst_surface,
+ const VARectangle *dst_rect)
+{
+ int src_fourcc = pp_get_surface_fourcc(ctx, src_surface);
+ int dst_fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+ const i965_fourcc_info *src_fourcc_info =
get_fourcc_info(src_fourcc);
+ const i965_fourcc_info *dst_fourcc_info =
get_fourcc_info(dst_fourcc);
+
+ if (!src_fourcc_info ||
+ src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+ !dst_fourcc_info ||
+ dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+ return 0;
+
+ if (src_rect->x == dst_rect->x&&
+ src_rect->y == dst_rect->y&&
+ src_rect->width == dst_rect->width&&
+ src_rect->height == dst_rect->height)
+ return 1;
+
+ return 0;
+}
+
VAStatus
gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct
i965_post_processing_context *pp_context,
const struct i965_surface
*src_surface,
@@ -1082,7 +1134,9 @@ gen8_pp_plx_avs_initialize(VADriverContextP
ctx, struct i965_post_processing_con
dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
- pp_static_parameter->grf2.avs_wa_enable = 0; /* It is not required on GEN8+ */
+ pp_static_parameter->grf2.avs_wa_enable =
gen8_pp_kernel_use_media_read_msg(ctx,
+
src_surface, src_rect,
+
dst_surface, dst_rect); /* reuse this flag for media
block reading on gen8+ */
pp_static_parameter->grf2.alpha = 255;
pp_static_parameter-
Post by Xiang, Haihao
grf3.sampler_load_horizontal_scaling_step_ratio = (float)
pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am
b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
PL2_AVS_Buf_1.g8a \
PL2_AVS_Buf_2.g8a \
PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
PL3_AVS_Buf_0.g8a \
PL3_AVS_Buf_1.g8a \
PL3_AVS_Buf_2.g8a \
PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
PA_AVS_Buf_0.g8a \
PA_AVS_Buf_1.g8a \
PA_AVS_Buf_2.g8a \
diff --git
a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++ b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+ mov (1)
r28.2<1>:ud 0xF000F:ud // Y
Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc
0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16) uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ mov (1) r37.0<1>:d r9.0<0;1,0>:w
+ shr (1) r37.1<1>:d r9.1<0;1,0>:w 1:w
+ mov (1) r37.2<1>:ud 0x7000F:ud
// U Block width and height (8x8)
+
+ send (1) r38<1>:d r37 0xc
0x2490004:ud
+
+ shl (8) uwBUFFER_0(4)<2> r38.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_0(6)<2> r38.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_1(4)<2> r39.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_1(6)<2> r39.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_2(4)<2> r40.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_2(6)<2> r40.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_3(4)<2> r41.0<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_3(6)<2> r41.16<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_0(8)<2> r38.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_0(10)<2> r38.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_1(8)<2> r39.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_1(10)<2> r39.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_2(8)<2> r40.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_2(10)<2> r40.17<16;8,2>:ub 8:w
+
+ shl (8) uwBUFFER_3(8)<2> r41.1<16;8,2>:ub 8:w
+ shl (8) uwBUFFER_3(10)<2> r41.17<16;8,2>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git
a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++ b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+ mov (1)
r28.2<1>:ud 0xF000F:ud // Y
Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc
0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16) uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16) uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16) uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ shr (2) r37.0<1>:d r9.0<2;2,1>:w 1:w
//H/V ORI U = H/V ORI/2
+ mov (1) r37.2<1>:ud 0x70007:ud
// U Block width and height (8x8)
+ send (1) r38<1>:d r37 0xc
0x2290004:ud
+
+ shl (8) uwBUFFER_0(4)<2> r38.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_0(6)<2> r38.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_1(4)<2> r38.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_1(6)<2> r38.24<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_2(4)<2> r39.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_2(6)<2> r39.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_3(4)<2> r39.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_3(6)<2> r39.24<8;8,1>:ub 8:w
+
+ mov (8) r46<1>:ud r27<8;8,1>:ud
+ shr (2) r46.0<1>:d r9.0<2;2,1>:w 1:w
//H/V ORI V = H/V ORI/2
+ mov (1) r46.2<1>:ud 0x70007:ud
// V Block width and height (8x8)
+ send (1) r47<1>:d r46 0xc
0x2290005:ud
+
+ shl (8) uwBUFFER_0(8)<2> r47.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_0(10)<2> r47.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_1(8)<2> r47.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_1(10)<2> r47.24<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_2(8)<2> r48.0<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_2(10)<2> r48.8<8;8,1>:ub 8:w
+
+ shl (8) uwBUFFER_3(8)<2> r48.16<8;8,1>:ub 8:w
+ shl (8) uwBUFFER_3(10)<2> r48.24<8;8,1>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"
.end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
Xiang, Haihao
2016-10-17 03:11:13 UTC
Permalink
Hi Sean,

I can't reproduce the issue mentioned by you and Artie on my SKL. I am
using Ubuntu 14.04 but built kernel and libdrm from source code:

Linux kernel:
aab15c274da587bcab19376d2caa9d6626440335 (drm-intel-nightly: 2016y-09m-
26d-12h-11m-33s)

libdrm: 2.4.70

I don't think the bus error is related to this patch, but I would hold
off on merging this patch if you reproduced the error with
Common/JPEGEncodeInputTest.Full/95 only.

Thanks
Haihao
Post by Zhao Yakui
-----Original Message-----
Sent: Friday, October 14, 2016 11:44 AM
@intel.com>
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read
message if possible on Gen8+
Post by Zhao Yakui
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case
Common/JPEGEncodeInputTest.Full/95.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420")
[       OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[  PASSED  ] 1 test.
This looks good to me.
Getting a core dump although the test is now passing.  We'll need
to
debug further.
I don't get any core dump on my SKL...  And the test passes for me
with
this patch.  Are you running the test in isolation or with the
entire suite?
If with the entire suite, does the core dump occur during this test case or
another?
I've noticed that I occasionally get a "bus error" with the
Big/JPEGEncodeInputTest.* test cases (i.e. 8192x8192) even without
this patch.  Perhaps this is what you're encountering?
Hi, Sean/Artie
     Is it possible that you can send out the dmesg log when the
bus_error is triggered?
     I try the test several times on one KBL machine(similar to SKL)
and
unfortunately there is no "sig_bus error".
Thanks
    Yakui
U. Artie
Sean
Post by Zhao Yakui
Thanks
    Yakui
Post by Xiang, Haihao
---
   src/gen8_post_processing.c                         | 56
+++++++++++++++++-
   src/shaders/post_processing/gen8/Makefile.am       |  2 +
   .../gen8/PL2_media_read_buf0123.g8a                | 65
+++++++++++++++++++++
   .../gen8/PL3_media_read_buf0123.g8a                | 68
++++++++++++++++++++++
   src/shaders/post_processing/gen8/pl2_to_pl2.asm    |  2 +
   src/shaders/post_processing/gen8/pl2_to_pl2.g8b    | 44
++++++++++++++
   src/shaders/post_processing/gen8/pl2_to_pl3.asm    |  2 +
   src/shaders/post_processing/gen8/pl2_to_pl3.g8b    | 44
++++++++++++++
   src/shaders/post_processing/gen8/pl3_to_pl2.asm    |  2 +
   src/shaders/post_processing/gen8/pl3_to_pl2.g8b    | 47
+++++++++++++++
   src/shaders/post_processing/gen8/pl3_to_pl3.asm    |  4 +-
   src/shaders/post_processing/gen8/pl3_to_pl3.g8b    | 47
+++++++++++++++
   src/shaders/post_processing/gen9/pl2_to_pl2.g9b    | 44
++++++++++++++
   src/shaders/post_processing/gen9/pl2_to_pl3.g9b    | 44
++++++++++++++
   src/shaders/post_processing/gen9/pl3_to_pl2.g9b    | 47
+++++++++++++++
   src/shaders/post_processing/gen9/pl3_to_pl3.g9b    | 47
+++++++++++++++
   16 files changed, 563 insertions(+), 2 deletions(-)
   create mode 100644
src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
   create mode 100644
src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c
b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@
gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct
i965_post_proc
                                          SURFACE_FORMAT_R8_U
NORM,
0,
                                          base_index + 2);
           }
+
+        gen8_pp_set_surface_state(ctx, pp_context,
+                                  bo, 0,
+                                  ALIGN(width[0], 4) / 4,
height[0], pitch[0],
+                                  I965_SURFACEFORMAT_R8_UINT
,
+                                  base_index + 3, 1);
+
+        if (fourcc_info->num_planes == 2) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 2) /
2,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8G
8_SINT
,
+                                      base_index + 4, 1);
+        } else if (fourcc_info->num_planes == 3) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 4) /
4,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8_
SINT,
+                                      base_index + 4, 1);
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[2],
+                                      ALIGN(width[2], 4) /
4,
height[2], pitch[2],
+                                      I965_SURFACEFORMAT_R8_
SINT,
+                                      base_index + 5, 1);
+        }
       }
   }
@@ -788,6 +813,33 @@
gen8_pp_get_8tap_filter_mode(VADriverContextP
ctx,
           return 3;
   }
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+                                  const struct i965_surface
*src_surface,
+                                  const VARectangle
*src_rect,
+                                  const struct i965_surface
*dst_surface,
+                                  const VARectangle
*dst_rect)
+{
+    int src_fourcc = pp_get_surface_fourcc(ctx,
src_surface);
+    int dst_fourcc = pp_get_surface_fourcc(ctx,
dst_surface);
+    const i965_fourcc_info *src_fourcc_info =
get_fourcc_info(src_fourcc);
+    const i965_fourcc_info *dst_fourcc_info =
get_fourcc_info(dst_fourcc);
+
+    if (!src_fourcc_info ||
+        src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+        !dst_fourcc_info ||
+        dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+        return 0;
+
+    if (src_rect->x == dst_rect->x&&
+        src_rect->y == dst_rect->y&&
+        src_rect->width == dst_rect->width&&
+        src_rect->height == dst_rect->height)
+        return 1;
+
+    return 0;
+}
+
   VAStatus
   gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct
i965_post_processing_context *pp_context,
                              const struct i965_surface
*src_surface,
@@ -1082,7 +1134,9 @@
gen8_pp_plx_avs_initialize(VADriverContextP
ctx, struct i965_post_processing_con
       dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
       pp_static_parameter->grf1.pointer_to_inline_parameter
= 7;
-    pp_static_parameter->grf2.avs_wa_enable = 0; /* It is not
required on GEN8+ */
+    pp_static_parameter->grf2.avs_wa_enable =
gen8_pp_kernel_use_media_read_msg(ctx,
+
               src_surface, src_rect,
+
               dst_surface, dst_rect); /* reuse this flag for
media
block reading on gen8+ */
       pp_static_parameter->grf2.alpha = 255;
       pp_static_parameter-
Post by Xiang, Haihao
grf3.sampler_load_horizontal_scaling_step_ratio = (float)
pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am
b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
    PL2_AVS_Buf_1.g8a \
    PL2_AVS_Buf_2.g8a \
    PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
    PL3_AVS_Buf_0.g8a \
    PL3_AVS_Buf_1.g8a \
    PL3_AVS_Buf_2.g8a \
    PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
    PA_AVS_Buf_0.g8a \
    PA_AVS_Buf_1.g8a \
    PA_AVS_Buf_2.g8a \
diff --git
a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+    mov  (1)
r28.2<1>:ud    0xF000F:ud                              
// Y
Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc
0x2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16)
uwBUFFER_0(0)<1>    r29.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_0(1)<1>    r29.16<16;16,1>:ub      8:w
+    shl  (16)
uwBUFFER_0(2)<1>    r30.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_0(3)<1>    r30.16<16;16,1>:ub      8:w
+
+    shl  (16)
uwBUFFER_1(0)<1>    r31.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_1(1)<1>    r31.16<16;16,1>:ub      8:w
+    shl  (16)
uwBUFFER_1(2)<1>    r32.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_1(3)<1>    r32.16<16;16,1>:ub      8:w
+
+    shl  (16)
uwBUFFER_2(0)<1>    r33.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_2(1)<1>    r33.16<16;16,1>:ub      8:w
+    shl  (16)
uwBUFFER_2(2)<1>    r34.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_2(3)<1>    r34.16<16;16,1>:ub      8:w
+
+    shl  (16)
uwBUFFER_3(0)<1>    r35.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_3(1)<1>    r35.16<16;16,1>:ub      8:w
+    shl  (16)
uwBUFFER_3(2)<1>    r36.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_3(3)<1>    r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    mov  (1) r37.0<1>:d     r9.0<0;1,0>:w
+    shr  (1) r37.1<1>:d     r9.1<0;1,0>:w               1:w
+    mov  (1) r37.2<1>:ud    0x7000F:ud
       // U Block width and height (8x8)
+
+    send (1) r38<1>:d    r37    0xc
0x2490004:ud
+
+    shl  (8)
uwBUFFER_0(4)<2>    r38.0<16;8,2>:ub         8:w
+    shl  (8)
uwBUFFER_0(6)<2>    r38.16<16;8,2>:ub        8:w
+
+    shl  (8)
uwBUFFER_1(4)<2>    r39.0<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_1(6)<2>    r39.16<16;8,2>:ub         8:w
+
+    shl  (8)
uwBUFFER_2(4)<2>    r40.0<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_2(6)<2>    r40.16<16;8,2>:ub         8:w
+
+    shl  (8)
uwBUFFER_3(4)<2>    r41.0<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_3(6)<2>    r41.16<16;8,2>:ub         8:w
+
+    shl  (8)
uwBUFFER_0(8)<2>    r38.1<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_0(10)<2>   r38.17<16;8,2>:ub         8:w
+
+    shl  (8)
uwBUFFER_1(8)<2>    r39.1<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_1(10)<2>   r39.17<16;8,2>:ub         8:w
+
+    shl  (8)
uwBUFFER_2(8)<2>    r40.1<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_2(10)<2>   r40.17<16;8,2>:ub         8:w
+
+    shl  (8)
uwBUFFER_3(8)<2>    r41.1<16;8,2>:ub          8:w
+    shl  (8)
uwBUFFER_3(10)<2>   r41.17<16;8,2>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git
a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+    mov  (1)
r28.2<1>:ud    0xF000F:ud                              
// Y
Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc
0x2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16)
uwBUFFER_0(0)<1>    r29.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_0(1)<1>    r29.16<16;16,1>:ub      8:w
+    shl  (16)
uwBUFFER_0(2)<1>    r30.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_0(3)<1>    r30.16<16;16,1>:ub      8:w
+
+    shl  (16)
uwBUFFER_1(0)<1>    r31.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_1(1)<1>    r31.16<16;16,1>:ub      8:w
+    shl  (16)
uwBUFFER_1(2)<1>    r32.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_1(3)<1>    r32.16<16;16,1>:ub      8:w
+
+    shl  (16)
uwBUFFER_2(0)<1>    r33.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_2(1)<1>    r33.16<16;16,1>:ub      8:w
+    shl  (16)
uwBUFFER_2(2)<1>    r34.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_2(3)<1>    r34.16<16;16,1>:ub      8:w
+
+    shl  (16)
uwBUFFER_3(0)<1>    r35.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_3(1)<1>    r35.16<16;16,1>:ub      8:w
+    shl  (16)
uwBUFFER_3(2)<1>    r36.0<16;16,1>:ub       8:w
+    shl  (16)
uwBUFFER_3(3)<1>    r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    shr  (2) r37.0<1>:d     r9.0<2;2,1>:w               1:w
//H/V ORI U  = H/V ORI/2
+    mov  (1) r37.2<1>:ud    0x70007:ud
       // U Block width and height (8x8)
+    send (1) r38<1>:d    r37    0xc
0x2290004:ud
+
+    shl  (8)
uwBUFFER_0(4)<2>    r38.0<8;8,1>:ub          8:w
+    shl  (8)
uwBUFFER_0(6)<2>    r38.8<8;8,1>:ub          8:w
+
+    shl  (8)
uwBUFFER_1(4)<2>    r38.16<8;8,1>:ub         8:w
+    shl  (8)
uwBUFFER_1(6)<2>    r38.24<8;8,1>:ub         8:w
+
+    shl  (8)
uwBUFFER_2(4)<2>    r39.0<8;8,1>:ub          8:w
+    shl  (8)
uwBUFFER_2(6)<2>    r39.8<8;8,1>:ub          8:w
+
+    shl  (8)
uwBUFFER_3(4)<2>    r39.16<8;8,1>:ub         8:w
+    shl  (8)
uwBUFFER_3(6)<2>    r39.24<8;8,1>:ub         8:w
+
+    mov  (8) r46<1>:ud      r27<8;8,1>:ud
+    shr  (2) r46.0<1>:d     r9.0<2;2,1>:w               1:w
//H/V ORI V  = H/V ORI/2
+    mov  (1) r46.2<1>:ud    0x70007:ud
       // V Block width and height (8x8)
+    send (1) r47<1>:d    r46    0xc
0x2290005:ud
+
+    shl  (8)
uwBUFFER_0(8)<2>    r47.0<8;8,1>:ub          8:w
+    shl  (8)
uwBUFFER_0(10)<2>   r47.8<8;8,1>:ub          8:w
+
+    shl  (8)
uwBUFFER_1(8)<2>    r47.16<8;8,1>:ub         8:w
+    shl  (8)
uwBUFFER_1(10)<2>   r47.24<8;8,1>:ub         8:w
+
+    shl  (8)
uwBUFFER_2(8)<2>    r48.0<8;8,1>:ub          8:w
+    shl  (8)
uwBUFFER_2(10)<2>   r48.8<8;8,1>:ub          8:w
+
+    shl  (8)
uwBUFFER_3(8)<2>    r48.16<8;8,1>:ub         8:w
+    shl  (8)
uwBUFFER_3(10)<2>   r48.24<8;8,1>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
   #include "VP_Setup.g8a"
   #include "Set_Layer_0.g8a"
   #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
   #include "PL2_AVS_Buf_0.g8a"
   #include "PL2_AVS_Buf_1.g8a"
   #include "PL2_AVS_Buf_2.g8a"
   #include "PL2_AVS_Buf_3.g8a"
   #include "Save_AVS_NV12.g8a"
   #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
      { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
      { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
      { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
      { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
      { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
      { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
   #include "VP_Setup.g8a"
   #include "Set_Layer_0.g8a"
   #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
   #include "PL2_AVS_Buf_0.g8a"
   #include "PL2_AVS_Buf_1.g8a"
   #include "PL2_AVS_Buf_2.g8a"
   #include "PL2_AVS_Buf_3.g8a"
   #include "Save_AVS_PL3.g8a"
   #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
      { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
      { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
      { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
      { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
      { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
      { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
   #include "VP_Setup.g8a"
   #include "Set_Layer_0.g8a"
   #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
   #include "PL3_AVS_Buf_0.g8a"
   #include "PL3_AVS_Buf_1.g8a"
   #include "PL3_AVS_Buf_2.g8a"
   #include "PL3_AVS_Buf_3.g8a"
   #include "Save_AVS_NV12.g8a"
   #include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
      { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
      { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
      { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
      { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
      { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
      { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
   #include "VP_Setup.g8a"
   #include "Set_Layer_0.g8a"
   #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
   #include "PL3_AVS_Buf_0.g8a"
   #include "PL3_AVS_Buf_1.g8a"
   #include "PL3_AVS_Buf_2.g8a"
   #include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+#include "Save_AVS_PL3.g8a"
   #include "EOT.g8a"
   .end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
      { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
      { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
      { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
      { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
      { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
      { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
      { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
      { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
      { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
      { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
      { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
      { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
      { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
      { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
      { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
      { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
      { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
      { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
      { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
      { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
      { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
      { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
      { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
      { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
      { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
      { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
      { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
      { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
      { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
      { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
Sean V Kelley
2016-10-17 17:35:06 UTC
Permalink
Yes, I want to throttle the pace of the changes until we qualify and
understand the performance and test failure issues. Then we can resume
normal flow.

For these tests to be meaningful they have to be consistent across
distributions and platforms.

Thanks,

Sean
Post by Xiang, Haihao
Hi Sean,
I can't reproduce the issue mentioned by you and Artie on my SKL. I am
aab15c274da587bcab19376d2caa9d6626440335 (drm-intel-nightly: 2016y-09m-
26d-12h-11m-33s)
libdrm: 2.4.70
I don't think the bus error is related to this patch, but I would hold
off on merging this patch if you reproduced the error with
Common/JPEGEncodeInputTest.Full/95 only.
Thanks
Haihao
Post by Zhao Yakui
Post by Eoff, Ullysses A
-----Original Message-----
Behalf Of Sean V Kelley
Sent: Friday, October 14, 2016 11:44 AM
@intel.com>
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read
message if possible on Gen8+
Post by Zhao Yakui
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case
Common/JPEGEncodeInputTest.Full/95.
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[ PASSED ] 0 tests.
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420")
[ OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[ PASSED ] 1 test.
This looks good to me.
Getting a core dump although the test is now passing. We'll need to
debug further.
I don't get any core dump on my SKL... And the test passes for me with
this patch. Are you running the test in isolation or with the entire suite?
If with the entire suite, does the core dump occur during this test case or
another?
I've noticed that I occasionally get a "bus error" with the
Big/JPEGEncodeInputTest.* test cases (i.e. 8192x8192) even without
this patch. Perhaps this is what you're encountering?
Hi, Sean/Artie
Is it possible that you can send out the dmesg log when the
bus_error is triggered?
I try the test several times on one KBL machine(similar to SKL) and
unfortunately there is no "sig_bus error".
Thanks
Yakui
Post by Eoff, Ullysses A
U. Artie
Sean
Post by Zhao Yakui
Thanks
Yakui
Post by Xiang, Haihao
---
src/gen8_post_processing.c | 56
+++++++++++++++++-
src/shaders/post_processing/gen8/Makefile.am | 2 +
.../gen8/PL2_media_read_buf0123.g8a | 65
+++++++++++++++++++++
.../gen8/PL3_media_read_buf0123.g8a | 68
++++++++++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl2.g8b | 44 ++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl3.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl3.g8b | 44 ++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl3_to_pl2.g8b | 47
+++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl3.asm | 4 +-
src/shaders/post_processing/gen8/pl3_to_pl3.g8b | 47
+++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl2.g9b | 44 ++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl3.g9b | 44 ++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl2.g9b | 47
+++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl3.g9b | 47
+++++++++++++++
16 files changed, 563 insertions(+), 2 deletions(-)
create mode 100644
src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
create mode 100644
src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c
b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@
gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct
i965_post_proc
SURFACE_FORMAT_R8_U
NORM,
0,
base_index + 2);
}
+
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, 0,
+ ALIGN(width[0], 4) / 4,
height[0], pitch[0],
+ I965_SURFACEFORMAT_R8_UINT
,
+ base_index + 3, 1);
+
+ if (fourcc_info->num_planes == 2) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 2) /
2,
height[1], pitch[1],
+ I965_SURFACEFORMAT_R8G
8_SINT
,
+ base_index + 4, 1);
+ } else if (fourcc_info->num_planes == 3) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 4) /
4,
height[1], pitch[1],
+ I965_SURFACEFORMAT_R8_
SINT,
+ base_index + 4, 1);
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[2],
+ ALIGN(width[2], 4) /
4,
height[2], pitch[2],
+ I965_SURFACEFORMAT_R8_
SINT,
+ base_index + 5, 1);
+ }
}
}
@@ -788,6 +813,33 @@
gen8_pp_get_8tap_filter_mode(VADriverContextP
ctx,
return 3;
}
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+ const struct i965_surface
*src_surface,
+ const VARectangle
*src_rect,
+ const struct i965_surface
*dst_surface,
+ const VARectangle
*dst_rect)
+{
+ int src_fourcc = pp_get_surface_fourcc(ctx,
src_surface);
+ int dst_fourcc = pp_get_surface_fourcc(ctx,
dst_surface);
+ const i965_fourcc_info *src_fourcc_info =
get_fourcc_info(src_fourcc);
+ const i965_fourcc_info *dst_fourcc_info =
get_fourcc_info(dst_fourcc);
+
+ if (!src_fourcc_info ||
+ src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+ !dst_fourcc_info ||
+ dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+ return 0;
+
+ if (src_rect->x == dst_rect->x&&
+ src_rect->y == dst_rect->y&&
+ src_rect->width == dst_rect->width&&
+ src_rect->height == dst_rect->height)
+ return 1;
+
+ return 0;
+}
+
VAStatus
gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct
i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
@@ -1082,7 +1134,9 @@
gen8_pp_plx_avs_initialize(VADriverContextP
ctx, struct i965_post_processing_con
dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
- pp_static_parameter->grf2.avs_wa_enable = 0; /* It is
not
required on GEN8+ */
+ pp_static_parameter->grf2.avs_wa_enable =
gen8_pp_kernel_use_media_read_msg(ctx,
+
src_surface, src_rect,
+
dst_surface, dst_rect); /* reuse this flag for media
block reading on gen8+ */
pp_static_parameter->grf2.alpha = 255;
pp_static_parameter-
Post by Xiang, Haihao
grf3.sampler_load_horizontal_scaling_step_ratio = (float)
pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am
b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
PL2_AVS_Buf_1.g8a \
PL2_AVS_Buf_2.g8a \
PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
PL3_AVS_Buf_0.g8a \
PL3_AVS_Buf_1.g8a \
PL3_AVS_Buf_2.g8a \
PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
PA_AVS_Buf_0.g8a \
PA_AVS_Buf_1.g8a \
PA_AVS_Buf_2.g8a \
diff --git
a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+ mov (1)
r28.2<1>:ud 0xF000F:ud
// Y
Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc
0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16)
uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16)
uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16)
uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16)
uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ mov (1) r37.0<1>:d r9.0<0;1,0>:w
+ shr (1) r37.1<1>:d r9.1<0;1,0>:w 1:w
+ mov (1) r37.2<1>:ud 0x7000F:ud
// U Block width and height (8x8)
+
+ send (1) r38<1>:d r37 0xc
0x2490004:ud
+
+ shl (8)
uwBUFFER_0(4)<2> r38.0<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_0(6)<2> r38.16<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_1(4)<2> r39.0<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_1(6)<2> r39.16<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_2(4)<2> r40.0<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_2(6)<2> r40.16<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_3(4)<2> r41.0<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_3(6)<2> r41.16<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_0(8)<2> r38.1<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_0(10)<2> r38.17<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_1(8)<2> r39.1<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_1(10)<2> r39.17<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_2(8)<2> r40.1<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_2(10)<2> r40.17<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_3(8)<2> r41.1<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_3(10)<2> r41.17<16;8,2>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git
a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+ mov (1)
r28.2<1>:ud 0xF000F:ud
// Y
Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc
0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16)
uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16)
uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16)
uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16)
uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ shr (2) r37.0<1>:d r9.0<2;2,1>:w 1:w
//H/V ORI U = H/V ORI/2
+ mov (1) r37.2<1>:ud 0x70007:ud
// U Block width and height (8x8)
+ send (1) r38<1>:d r37 0xc
0x2290004:ud
+
+ shl (8)
uwBUFFER_0(4)<2> r38.0<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_0(6)<2> r38.8<8;8,1>:ub 8:w
+
+ shl (8)
uwBUFFER_1(4)<2> r38.16<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_1(6)<2> r38.24<8;8,1>:ub 8:w
+
+ shl (8)
uwBUFFER_2(4)<2> r39.0<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_2(6)<2> r39.8<8;8,1>:ub 8:w
+
+ shl (8)
uwBUFFER_3(4)<2> r39.16<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_3(6)<2> r39.24<8;8,1>:ub 8:w
+
+ mov (8) r46<1>:ud r27<8;8,1>:ud
+ shr (2) r46.0<1>:d r9.0<2;2,1>:w 1:w
//H/V ORI V = H/V ORI/2
+ mov (1) r46.2<1>:ud 0x70007:ud
// V Block width and height (8x8)
+ send (1) r47<1>:d r46 0xc
0x2290005:ud
+
+ shl (8)
uwBUFFER_0(8)<2> r47.0<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_0(10)<2> r47.8<8;8,1>:ub 8:w
+
+ shl (8)
uwBUFFER_1(8)<2> r47.16<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_1(10)<2> r47.24<8;8,1>:ub 8:w
+
+ shl (8)
uwBUFFER_2(8)<2> r48.0<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_2(10)<2> r48.8<8;8,1>:ub 8:w
+
+ shl (8)
uwBUFFER_3(8)<2> r48.16<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_3(10)<2> r48.24<8;8,1>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"
.end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
--
Sean V. Kelley <***@intel.com>
Open Source Technology Center / SSG
Intel Corp.
Eoff, Ullysses A
2016-10-18 19:04:20 UTC
Permalink
I've created a bugzilla for the issue... https://bugs.freedesktop.org/show_bug.cgi?id=98311

Let's continue discussion there.

U. Artie
-----Original Message-----
Sent: Monday, October 17, 2016 10:35 AM
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read message if possible on Gen8+
Yes, I want to throttle the pace of the changes until we qualify and
understand the performance and test failure issues. Then we can resume
normal flow.
For these tests to be meaningful they have to be consistent across
distributions and platforms.
Thanks,
Sean
Post by Xiang, Haihao
Hi Sean,
I can't reproduce the issue mentioned by you and Artie on my SKL. I am
aab15c274da587bcab19376d2caa9d6626440335 (drm-intel-nightly: 2016y-09m-
26d-12h-11m-33s)
libdrm: 2.4.70
I don't think the bus error is related to this patch, but I would hold
off on merging this patch if you reproduced the error with
Common/JPEGEncodeInputTest.Full/95 only.
Thanks
Haihao
Post by Zhao Yakui
Post by Eoff, Ullysses A
-----Original Message-----
Behalf Of Sean V Kelley
Sent: Friday, October 14, 2016 11:44 AM
@intel.com>
Subject: Re: [Libva] [Libva-intel-driver][PATCH] Use Media Read
message if possible on Gen8+
Post by Zhao Yakui
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case
Common/JPEGEncodeInputTest.Full/95.
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[ PASSED ] 0 tests.
[ FAILED ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420")
[ OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[ PASSED ] 1 test.
This looks good to me.
Getting a core dump although the test is now passing. We'll need to
debug further.
I don't get any core dump on my SKL... And the test passes for me with
this patch. Are you running the test in isolation or with the entire suite?
If with the entire suite, does the core dump occur during this test case or
another?
I've noticed that I occasionally get a "bus error" with the
Big/JPEGEncodeInputTest.* test cases (i.e. 8192x8192) even without
this patch. Perhaps this is what you're encountering?
Hi, Sean/Artie
Is it possible that you can send out the dmesg log when the
bus_error is triggered?
I try the test several times on one KBL machine(similar to SKL) and
unfortunately there is no "sig_bus error".
Thanks
Yakui
Post by Eoff, Ullysses A
U. Artie
Sean
Post by Zhao Yakui
Thanks
Yakui
Post by Xiang, Haihao
---
src/gen8_post_processing.c | 56
+++++++++++++++++-
src/shaders/post_processing/gen8/Makefile.am | 2 +
.../gen8/PL2_media_read_buf0123.g8a | 65
+++++++++++++++++++++
.../gen8/PL3_media_read_buf0123.g8a | 68
++++++++++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl2.g8b | 44
++++++++++++++
src/shaders/post_processing/gen8/pl2_to_pl3.asm | 2 +
src/shaders/post_processing/gen8/pl2_to_pl3.g8b | 44
++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl2.asm | 2 +
src/shaders/post_processing/gen8/pl3_to_pl2.g8b | 47
+++++++++++++++
src/shaders/post_processing/gen8/pl3_to_pl3.asm | 4 +-
src/shaders/post_processing/gen8/pl3_to_pl3.g8b | 47
+++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl2.g9b | 44
++++++++++++++
src/shaders/post_processing/gen9/pl2_to_pl3.g9b | 44
++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl2.g9b | 47
+++++++++++++++
src/shaders/post_processing/gen9/pl3_to_pl3.g9b | 47
+++++++++++++++
16 files changed, 563 insertions(+), 2 deletions(-)
create mode 100644
src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
create mode 100644
src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c
b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@
gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct
i965_post_proc
SURFACE_FORMAT_R8_U
NORM,
0,
base_index + 2);
}
+
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, 0,
+ ALIGN(width[0], 4) / 4,
height[0], pitch[0],
+ I965_SURFACEFORMAT_R8_UINT
,
+ base_index + 3, 1);
+
+ if (fourcc_info->num_planes == 2) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 2) /
2,
height[1], pitch[1],
+ I965_SURFACEFORMAT_R8G
8_SINT
,
+ base_index + 4, 1);
+ } else if (fourcc_info->num_planes == 3) {
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[1],
+ ALIGN(width[1], 4) /
4,
height[1], pitch[1],
+ I965_SURFACEFORMAT_R8_
SINT,
+ base_index + 4, 1);
+ gen8_pp_set_surface_state(ctx, pp_context,
+ bo, offset[2],
+ ALIGN(width[2], 4) /
4,
height[2], pitch[2],
+ I965_SURFACEFORMAT_R8_
SINT,
+ base_index + 5, 1);
+ }
}
}
@@ -788,6 +813,33 @@
gen8_pp_get_8tap_filter_mode(VADriverContextP
ctx,
return 3;
}
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+ const struct i965_surface
*src_surface,
+ const VARectangle *src_rect,
+ const struct i965_surface
*dst_surface,
+ const VARectangle *dst_rect)
+{
+ int src_fourcc = pp_get_surface_fourcc(ctx,
src_surface);
+ int dst_fourcc = pp_get_surface_fourcc(ctx,
dst_surface);
+ const i965_fourcc_info *src_fourcc_info =
get_fourcc_info(src_fourcc);
+ const i965_fourcc_info *dst_fourcc_info =
get_fourcc_info(dst_fourcc);
+
+ if (!src_fourcc_info ||
+ src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+ !dst_fourcc_info ||
+ dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+ return 0;
+
+ if (src_rect->x == dst_rect->x&&
+ src_rect->y == dst_rect->y&&
+ src_rect->width == dst_rect->width&&
+ src_rect->height == dst_rect->height)
+ return 1;
+
+ return 0;
+}
+
VAStatus
gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct
i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
@@ -1082,7 +1134,9 @@
gen8_pp_plx_avs_initialize(VADriverContextP
ctx, struct i965_post_processing_con
dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
- pp_static_parameter->grf2.avs_wa_enable = 0; /* It is
not
required on GEN8+ */
+ pp_static_parameter->grf2.avs_wa_enable =
gen8_pp_kernel_use_media_read_msg(ctx,
+
src_surface, src_rect,
+
dst_surface, dst_rect); /* reuse this flag for media
block reading on gen8+ */
pp_static_parameter->grf2.alpha = 255;
pp_static_parameter-
Post by Xiang, Haihao
grf3.sampler_load_horizontal_scaling_step_ratio = (float)
pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am
b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
PL2_AVS_Buf_1.g8a \
PL2_AVS_Buf_2.g8a \
PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
PL3_AVS_Buf_0.g8a \
PL3_AVS_Buf_1.g8a \
PL3_AVS_Buf_2.g8a \
PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
PA_AVS_Buf_0.g8a \
PA_AVS_Buf_1.g8a \
PA_AVS_Buf_2.g8a \
diff --git
a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+ mov (1)
r28.2<1>:ud 0xF000F:ud
// Y
Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc
0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16)
uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16)
uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16)
uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16)
uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ mov (1) r37.0<1>:d r9.0<0;1,0>:w
+ shr (1) r37.1<1>:d r9.1<0;1,0>:w 1:w
+ mov (1) r37.2<1>:ud 0x7000F:ud
// U Block width and height (8x8)
+
+ send (1) r38<1>:d r37 0xc
0x2490004:ud
+
+ shl (8)
uwBUFFER_0(4)<2> r38.0<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_0(6)<2> r38.16<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_1(4)<2> r39.0<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_1(6)<2> r39.16<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_2(4)<2> r40.0<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_2(6)<2> r40.16<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_3(4)<2> r41.0<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_3(6)<2> r41.16<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_0(8)<2> r38.1<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_0(10)<2> r38.17<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_1(8)<2> r39.1<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_1(10)<2> r39.17<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_2(8)<2> r40.1<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_2(10)<2> r40.17<16;8,2>:ub 8:w
+
+ shl (8)
uwBUFFER_3(8)<2> r41.1<16;8,2>:ub 8:w
+ shl (8)
uwBUFFER_3(10)<2> r41.17<16;8,2>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git
a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+ and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
+ (-f0.0)jmpi (1) __SKIP_MEDIA_READ
+
+ mov (8) r28<1>:ud r27<8;8,1>:ud
+ mov (2) r28.0<1>:d r9.0<2;2,1>:w
//ORI Y (LUMA) = ORI
+ mov (1)
r28.2<1>:ud 0xF000F:ud
// Y
Block width and height (16x16)
+
+ send (1) r29<1>:d r28 0xc
0x2890003:ud
+
+ /* Save data in uwBuffer, it is not an efficient way, but we
can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+ shl (16)
uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
+
+ shl (16)
uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
+
+ shl (16)
uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
+
+ shl (16)
uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
+ shl (16)
uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
+
+ mov (8) r37<1>:ud r27<8;8,1>:ud
+ shr (2) r37.0<1>:d r9.0<2;2,1>:w 1:w
//H/V ORI U = H/V ORI/2
+ mov (1) r37.2<1>:ud 0x70007:ud
// U Block width and height (8x8)
+ send (1) r38<1>:d r37 0xc
0x2290004:ud
+
+ shl (8)
uwBUFFER_0(4)<2> r38.0<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_0(6)<2> r38.8<8;8,1>:ub 8:w
+
+ shl (8)
uwBUFFER_1(4)<2> r38.16<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_1(6)<2> r38.24<8;8,1>:ub 8:w
+
+ shl (8)
uwBUFFER_2(4)<2> r39.0<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_2(6)<2> r39.8<8;8,1>:ub 8:w
+
+ shl (8)
uwBUFFER_3(4)<2> r39.16<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_3(6)<2> r39.24<8;8,1>:ub 8:w
+
+ mov (8) r46<1>:ud r27<8;8,1>:ud
+ shr (2) r46.0<1>:d r9.0<2;2,1>:w 1:w
//H/V ORI V = H/V ORI/2
+ mov (1) r46.2<1>:ud 0x70007:ud
// V Block width and height (8x8)
+ send (1) r47<1>:d r46 0xc
0x2290005:ud
+
+ shl (8)
uwBUFFER_0(8)<2> r47.0<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_0(10)<2> r47.8<8;8,1>:ub 8:w
+
+ shl (8)
uwBUFFER_1(8)<2> r47.16<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_1(10)<2> r47.24<8;8,1>:ub 8:w
+
+ shl (8)
uwBUFFER_2(8)<2> r48.0<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_2(10)<2> r48.8<8;8,1>:ub 8:w
+
+ shl (8)
uwBUFFER_3(8)<2> r48.16<8;8,1>:ub 8:w
+ shl (8)
uwBUFFER_3(10)<2> r48.24<8;8,1>:ub 8:w
+
+ jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
#include "PL2_AVS_Buf_0.g8a"
#include "PL2_AVS_Buf_1.g8a"
#include "PL2_AVS_Buf_2.g8a"
#include "PL2_AVS_Buf_3.g8a"
#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
#include "Save_AVS_NV12.g8a"
#include "EOT.g8a"
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
#include "VP_Setup.g8a"
#include "Set_Layer_0.g8a"
#include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
#include "PL3_AVS_Buf_0.g8a"
#include "PL3_AVS_Buf_1.g8a"
#include "PL3_AVS_Buf_2.g8a"
#include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
+#include "Save_AVS_PL3.g8a"
#include "EOT.g8a"
.end_code
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+ { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+ { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+ { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
{ 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
{ 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
{ 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+ { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+ { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+ { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+ { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+ { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+ { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+ { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+ { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+ { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+ { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+ { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+ { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+ { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+ { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+ { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+ { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+ { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+ { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+ { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+ { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+ { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+ { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+ { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+ { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+ { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+ { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+ { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+ { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+ { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+ { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+ { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+ { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+ { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+ { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+ { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+ { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+ { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+ { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+ { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+ { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+ { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+ { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+ { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+ { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
{ 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
{ 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
{ 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
_______________________________________________
Libva mailing list
https://lists.freedesktop.org/mailman/listinfo/libva
--
Open Source Technology Center / SSG
Intel Corp.
Sean V Kelley
2016-10-24 22:45:01 UTC
Permalink
Post by Xiang, Haihao
AVS can't gurantee bit-match for a large surface. This fixes the
failure reported by gtest case Common/JPEGEncodeInputTest.Full/95.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420") (9239 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (9239 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (9361 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] Common/JPEGEncodeInputTest.Full/95, where GetParam() =
(Fixed Size 7680x4320, 0x501176 pointing to "I420")
[       OK ] Common/JPEGEncodeInputTest.Full/95 (15250 ms)
[----------] 1 test from Common/JPEGEncodeInputTest (15250 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (15365 ms total)
[  PASSED  ] 1 test.
We can merge this now we are tracking the bus error issue.

Applied, thanks.

Sean
Post by Xiang, Haihao
---
 src/gen8_post_processing.c                         | 56
+++++++++++++++++-
 src/shaders/post_processing/gen8/Makefile.am       |  2 +
 .../gen8/PL2_media_read_buf0123.g8a                | 65
+++++++++++++++++++++
 .../gen8/PL3_media_read_buf0123.g8a                | 68
++++++++++++++++++++++
 src/shaders/post_processing/gen8/pl2_to_pl2.asm    |  2 +
 src/shaders/post_processing/gen8/pl2_to_pl2.g8b    | 44
++++++++++++++
 src/shaders/post_processing/gen8/pl2_to_pl3.asm    |  2 +
 src/shaders/post_processing/gen8/pl2_to_pl3.g8b    | 44
++++++++++++++
 src/shaders/post_processing/gen8/pl3_to_pl2.asm    |  2 +
 src/shaders/post_processing/gen8/pl3_to_pl2.g8b    | 47
+++++++++++++++
 src/shaders/post_processing/gen8/pl3_to_pl3.asm    |  4 +-
 src/shaders/post_processing/gen8/pl3_to_pl3.g8b    | 47
+++++++++++++++
 src/shaders/post_processing/gen9/pl2_to_pl2.g9b    | 44
++++++++++++++
 src/shaders/post_processing/gen9/pl2_to_pl3.g9b    | 44
++++++++++++++
 src/shaders/post_processing/gen9/pl3_to_pl2.g9b    | 47
+++++++++++++++
 src/shaders/post_processing/gen9/pl3_to_pl3.g9b    | 47
+++++++++++++++
 16 files changed, 563 insertions(+), 2 deletions(-)
 create mode 100644
src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
 create mode 100644
src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
diff --git a/src/gen8_post_processing.c b/src/gen8_post_processing.c
index 375bbe0..687cedc 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -630,6 +630,31 @@
gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct
i965_post_proc
                                        SURFACE_FORMAT_R8_UNORM, 0,
                                        base_index + 2);
         }
+
+        gen8_pp_set_surface_state(ctx, pp_context,
+                                  bo, 0,
+                                  ALIGN(width[0], 4) / 4, height[0],
pitch[0],
+                                  I965_SURFACEFORMAT_R8_UINT,
+                                  base_index + 3, 1);
+
+        if (fourcc_info->num_planes == 2) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 2) / 2,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8G8_SINT,
+                                      base_index + 4, 1);
+        } else if (fourcc_info->num_planes == 3) {
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[1],
+                                      ALIGN(width[1], 4) / 4,
height[1], pitch[1],
+                                      I965_SURFACEFORMAT_R8_SINT,
+                                      base_index + 4, 1);
+            gen8_pp_set_surface_state(ctx, pp_context,
+                                      bo, offset[2],
+                                      ALIGN(width[2], 4) / 4,
height[2], pitch[2],
+                                      I965_SURFACEFORMAT_R8_SINT,
+                                      base_index + 5, 1);
+        }
     }
 }
 
@@ -788,6 +813,33 @@ gen8_pp_get_8tap_filter_mode(VADriverContextP ctx,
         return 3;
 }
 
+static int
+gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
+                                  const struct i965_surface
*src_surface,
+                                  const VARectangle *src_rect,
+                                  const struct i965_surface
*dst_surface,
+                                  const VARectangle *dst_rect)
+{
+    int src_fourcc = pp_get_surface_fourcc(ctx, src_surface);
+    int dst_fourcc = pp_get_surface_fourcc(ctx, dst_surface);
+    const i965_fourcc_info *src_fourcc_info =
get_fourcc_info(src_fourcc);
+    const i965_fourcc_info *dst_fourcc_info =
get_fourcc_info(dst_fourcc);
+
+    if (!src_fourcc_info ||
+        src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
+        !dst_fourcc_info ||
+        dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
+        return 0;
+
+    if (src_rect->x == dst_rect->x &&
+        src_rect->y == dst_rect->y &&
+        src_rect->width == dst_rect->width &&
+        src_rect->height == dst_rect->height)
+        return 1;
+
+    return 0;
+}
+
 VAStatus
 gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct
i965_post_processing_context *pp_context,
                            const struct i965_surface *src_surface,
@@ -1082,7 +1134,9 @@ gen8_pp_plx_avs_initialize(VADriverContextP
ctx, struct i965_post_processing_con
     dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
 
     pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
-    pp_static_parameter->grf2.avs_wa_enable = 0; /* It is not
required on GEN8+ */
+    pp_static_parameter->grf2.avs_wa_enable =
gen8_pp_kernel_use_media_read_msg(ctx,
+                                                                    
            src_surface, src_rect,
+                                                                    
            dst_surface, dst_rect); /* reuse this flag for media
block reading on gen8+ */
     pp_static_parameter->grf2.alpha = 255;
 
     pp_static_parameter-
Post by Xiang, Haihao
grf3.sampler_load_horizontal_scaling_step_ratio = (float)
pp_avs_context->src_w / dw;
diff --git a/src/shaders/post_processing/gen8/Makefile.am
b/src/shaders/post_processing/gen8/Makefile.am
index 475beb9..48a077e 100644
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ b/src/shaders/post_processing/gen8/Makefile.am
@@ -23,10 +23,12 @@ INTEL_PP_G8A = \
  PL2_AVS_Buf_1.g8a \
  PL2_AVS_Buf_2.g8a \
  PL2_AVS_Buf_3.g8a \
+ PL2_media_read_buf0123.g8a \
  PL3_AVS_Buf_0.g8a \
  PL3_AVS_Buf_1.g8a \
  PL3_AVS_Buf_2.g8a \
  PL3_AVS_Buf_3.g8a \
+ PL3_media_read_buf0123.g8a \
  PA_AVS_Buf_0.g8a \
  PA_AVS_Buf_1.g8a \
  PA_AVS_Buf_2.g8a \
diff --git
a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
new file mode 100644
index 0000000..5a46019
--- /dev/null
+++ b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
@@ -0,0 +1,65 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w                   
//ORI Y (LUMA) = ORI
+    mov  (1) r28.2<1>:ud    0xF000F:ud                              
// Y Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc 0x
2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way, but we can
re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16) uwBUFFER_0(0)<1>  r29.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(1)<1>  r29.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_0(2)<1>  r30.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(3)<1>  r30.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_1(0)<1>  r31.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(1)<1>  r31.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_1(2)<1>  r32.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(3)<1>  r32.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_2(0)<1>  r33.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(1)<1>  r33.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_2(2)<1>  r34.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(3)<1>  r34.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_3(0)<1>  r35.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(1)<1>  r35.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_3(2)<1>  r36.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(3)<1>  r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    mov  (1) r37.0<1>:d     r9.0<0;1,0>:w
+    shr  (1) r37.1<1>:d     r9.1<0;1,0>:w               1:w
+    mov  (1) r37.2<1>:ud    0x7000F:ud                       
    // U Block width and height (8x8)
+
+    send (1) r38<1>:d    r37    0xc 0x
2490004:ud
+
+    shl  (8) uwBUFFER_0(4)<2>  r38.0<16;8,2>:ub         8:w
+    shl  (8) uwBUFFER_0(6)<2>  r38.16<16;8,2>:ub        8:w
+
+    shl  (8) uwBUFFER_1(4)<2>  r39.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_1(6)<2>  r39.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_2(4)<2>  r40.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_2(6)<2>  r40.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_3(4)<2>  r41.0<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_3(6)<2>  r41.16<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_0(8)<2>  r38.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_0(10)<2> r38.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_1(8)<2>  r39.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_1(10)<2> r39.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_2(8)<2>  r40.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_2(10)<2> r40.17<16;8,2>:ub         8:w
+
+    shl  (8) uwBUFFER_3(8)<2>  r41.1<16;8,2>:ub          8:w
+    shl  (8) uwBUFFER_3(10)<2> r41.17<16;8,2>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git
a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
new file mode 100644
index 0000000..3018d5c
--- /dev/null
+++ b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
@@ -0,0 +1,68 @@
+
+    and.nz.f0.0  (1)     null<1>:uw     r2.3:uw    0x2:uw
+    (-f0.0)jmpi  (1)     __SKIP_MEDIA_READ
+
+    mov  (8) r28<1>:ud      r27<8;8,1>:ud
+    mov  (2) r28.0<1>:d     r9.0<2;2,1>:w                   
//ORI Y (LUMA) = ORI
+    mov  (1) r28.2<1>:ud    0xF000F:ud                              
// Y Block width and height (16x16)
+
+    send (1) r29<1>:d    r28    0xc 0x
2890003:ud
+
+    /* Save data in uwBuffer, it is not an efficient way, but we can
re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
+    shl  (16) uwBUFFER_0(0)<1>  r29.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(1)<1>  r29.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_0(2)<1>  r30.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_0(3)<1>  r30.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_1(0)<1>  r31.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(1)<1>  r31.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_1(2)<1>  r32.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_1(3)<1>  r32.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_2(0)<1>  r33.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(1)<1>  r33.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_2(2)<1>  r34.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_2(3)<1>  r34.16<16;16,1>:ub      8:w
+
+    shl  (16) uwBUFFER_3(0)<1>  r35.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(1)<1>  r35.16<16;16,1>:ub      8:w
+    shl  (16) uwBUFFER_3(2)<1>  r36.0<16;16,1>:ub       8:w
+    shl  (16) uwBUFFER_3(3)<1>  r36.16<16;16,1>:ub      8:w
+
+    mov  (8) r37<1>:ud      r27<8;8,1>:ud
+    shr  (2) r37.0<1>:d     r9.0<2;2,1>:w               1:w  
//H/V ORI U  = H/V ORI/2
+    mov  (1) r37.2<1>:ud    0x70007:ud                       
    // U Block width and height (8x8)
+    send (1) r38<1>:d    r37    0xc 0x
2290004:ud
+
+    shl  (8) uwBUFFER_0(4)<2>  r38.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_0(6)<2>  r38.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_1(4)<2>  r38.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_1(6)<2>  r38.24<8;8,1>:ub         8:w
+
+    shl  (8) uwBUFFER_2(4)<2>  r39.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_2(6)<2>  r39.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_3(4)<2>  r39.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_3(6)<2>  r39.24<8;8,1>:ub         8:w
+
+    mov  (8) r46<1>:ud      r27<8;8,1>:ud
+    shr  (2) r46.0<1>:d     r9.0<2;2,1>:w               1:w  
//H/V ORI V  = H/V ORI/2
+    mov  (1) r46.2<1>:ud    0x70007:ud                       
    // V Block width and height (8x8)
+    send (1) r47<1>:d    r46    0xc 0x
2290005:ud
+
+    shl  (8) uwBUFFER_0(8)<2>  r47.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_0(10)<2> r47.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_1(8)<2>  r47.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_1(10)<2> r47.24<8;8,1>:ub         8:w
+
+    shl  (8) uwBUFFER_2(8)<2>  r48.0<8;8,1>:ub          8:w
+    shl  (8) uwBUFFER_2(10)<2> r48.8<8;8,1>:ub          8:w
+
+    shl  (8) uwBUFFER_3(8)<2>  r48.16<8;8,1>:ub         8:w
+    shl  (8) uwBUFFER_3(10)<2> r48.24<8;8,1>:ub         8:w
+
+    jmpi (1) __SAVE_BUF0123
+
\ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
index 0281854..a5999ac 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
@@ -5,10 +5,12 @@
 #include "VP_Setup.g8a"
 #include "Set_Layer_0.g8a"
 #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
 #include "PL2_AVS_Buf_0.g8a"
 #include "PL2_AVS_Buf_1.g8a"
 #include "PL2_AVS_Buf_2.g8a"
 #include "PL2_AVS_Buf_3.g8a"
 #include "Save_AVS_NV12.g8a"        
 #include "EOT.g8a"
 
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
index 5da39ee..2c3d015 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
@@ -69,6 +69,50 @@
    { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
    { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
    { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
    { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
    { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
    { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
index 042a834..b42163c 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
@@ -5,10 +5,12 @@
 #include "VP_Setup.g8a"
 #include "Set_Layer_0.g8a"
 #include "Set_AVS_Buf_0123_PL2.g8a"
+#include "PL2_media_read_buf0123.g8a"
 #include "PL2_AVS_Buf_0.g8a"
 #include "PL2_AVS_Buf_1.g8a"
 #include "PL2_AVS_Buf_2.g8a"
 #include "PL2_AVS_Buf_3.g8a"
 #include "Save_AVS_PL3.g8a"        
 #include "EOT.g8a"
 
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
index ebfcb71..72f81a2 100644
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
@@ -69,6 +69,50 @@
    { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
    { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
    { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
    { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
    { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
    { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
index 713cb97..d68f72d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
@@ -5,10 +5,12 @@
 #include "VP_Setup.g8a"
 #include "Set_Layer_0.g8a"
 #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
 #include "PL3_AVS_Buf_0.g8a"
 #include "PL3_AVS_Buf_1.g8a"
 #include "PL3_AVS_Buf_2.g8a"
 #include "PL3_AVS_Buf_3.g8a"
 #include "Save_AVS_NV12.g8a"        
 #include "EOT.g8a"
 
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
index 79923ee..b2f2a56 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
@@ -69,6 +69,53 @@
    { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
    { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
    { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
    { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
    { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
    { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
index f6a2a76..b91bb46 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
@@ -5,11 +5,13 @@
 #include "VP_Setup.g8a"
 #include "Set_Layer_0.g8a"
 #include "Set_AVS_Buf_0123_PL3.g8a"
+#include "PL3_media_read_buf0123.g8a"
 #include "PL3_AVS_Buf_0.g8a"
 #include "PL3_AVS_Buf_1.g8a"
 #include "PL3_AVS_Buf_2.g8a"
 #include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"        
+#include "Save_AVS_PL3.g8a"
 #include "EOT.g8a"
 
 .end_code  
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
index 800fe68..593b81d 100644
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
@@ -69,6 +69,53 @@
    { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
    { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
    { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
    { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
    { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
    { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
index 8d91b32..aa1b270 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
@@ -69,6 +69,50 @@
    { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
    { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
    { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
    { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
    { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
    { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
index c4ba9aa..148f939 100644
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
@@ -69,6 +69,50 @@
    { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
    { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
    { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
+   { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
+   { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
+   { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
    { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
    { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
    { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
index 3c18796..4184a12 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
@@ -69,6 +69,53 @@
    { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
    { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
    { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
    { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
    { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
    { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
index 471d2d7..50f391d 100644
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
@@ -69,6 +69,53 @@
    { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
    { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
    { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
+   { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
+   { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
+   { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
+   { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
+   { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
+   { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
+   { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
+   { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
+   { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
+   { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
+   { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
+   { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
+   { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
+   { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
+   { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
+   { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
+   { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
+   { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
+   { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
+   { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
+   { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
+   { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
+   { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
+   { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
+   { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
+   { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
+   { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
+   { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
+   { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
+   { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
+   { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
+   { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
+   { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
+   { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
+   { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
+   { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
+   { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
+   { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
+   { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
+   { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
+   { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
+   { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
+   { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
+   { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
    { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
    { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
    { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
Loading...