Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5361 | serge | 1 | /* |
2 | * All Video Processing kernels |
||
3 | * Copyright © <2010>, Intel Corporation. |
||
4 | * |
||
5 | * This program is licensed under the terms and conditions of the |
||
6 | * Eclipse Public License (EPL), version 1.0. The full text of the EPL is at |
||
7 | * http://www.opensource.org/licenses/eclipse-1.0.php. |
||
8 | * |
||
9 | */ |
||
10 | |||
11 | //---------- PL3_Scaling.asm ---------- |
||
12 | #include "Scaling.inc" |
||
13 | |||
14 | // Build 16 elements ramp in float32 and normalized it |
||
15 | // mov (8) SAMPLER_RAMP(0)<1> 0x76543210:v |
||
16 | // add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f |
||
17 | mov (4) SAMPLER_RAMP(0)<1> 0x48403000:vf { NoDDClr }//3, 2, 1, 0 in float vector |
||
18 | mov (4) SAMPLER_RAMP(0,4)<1> 0x5C585450:vf { NoDDChk }//7, 6, 5, 4 in float vector |
||
19 | add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f |
||
20 | |||
21 | |||
22 | //Module: PrepareScaleCoord.asm |
||
23 | |||
24 | // Setup for sampler msg hdr |
||
25 | mov (2) rMSGSRC.0<1>:ud 0:ud { NoDDClr } // Unused fields |
||
26 | mov (1) rMSGSRC.2<1>:ud 0:ud { NoDDChk } // Write and offset |
||
27 | |||
28 | // Calculate 16 v based on the step Y and vertical origin |
||
29 | mov (16) mfMSGPAYLOAD(2)<1> fSRC_VID_V_ORI<0;1,0>:f |
||
30 | mov (16) SCALE_COORD_Y<1>:f fSRC_VID_V_ORI<0;1,0>:f |
||
31 | |||
32 | // Calculate 16 u based on the step X and hori origin |
||
33 | // line (16) mfMSGPAYLOAD(0)<1> SCALE_STEP_X<0;1,0>:f SAMPLER_RAMP(0) // Assign to mrf directly |
||
34 | mov (16) acc0:f fSRC_VID_H_ORI<0;1,0>:f { Compr } |
||
35 | mac (16) mfMSGPAYLOAD(0)<1> fVIDEO_STEP_X<0;1,0>:f SAMPLER_RAMP(0) { Compr } |
||
36 | |||
37 | //Setup the constants for line instruction |
||
38 | mov (1) SCALE_LINE_P255<1>:f 255.0:f { NoDDClr } //{ NoDDClr, NoDDChk } |
||
39 | mov (1) SCALE_LINE_P0_5<1>:f 0.5:f { NoDDChk } |
||
40 | |||
41 | //------------------------------------------------------------------------------ |
||
42 | |||
43 | $for (0; |
||
44 | // Read 16 sampled pixels and store them in float32 in 8 GRFs in the order of BGRA (VYUA). |
||
45 | mov (8) MSGHDR_SCALE<1>:ud rMSGSRC<8;8,1>:ud // Copy msg header and payload mirrors to MRFs |
||
46 | send (16) SCALE_RESPONSE_VW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_V+nBI_CURRENT_SRC_V |
||
47 | send (16) SCALE_RESPONSE_YW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_Y+nBI_CURRENT_SRC_Y |
||
48 | send (16) SCALE_RESPONSE_UW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_U+nBI_CURRENT_SRC_U |
||
49 | |||
50 | // Calculate 16 v for next line |
||
51 | add (16) mfMSGPAYLOAD(2)<1> SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly |
||
52 | add (16) SCALE_COORD_Y<1>:f SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly |
||
53 | |||
54 | // Scale back to [0, 255], convert f to ud |
||
55 | line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_VF(0) { Compr } // Process B, V |
||
56 | mov (16) SCALE_RESPONSE_VD(0)<1> acc0:f { Compr } |
||
57 | |||
58 | line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(0) { Compr } // Process B, V |
||
59 | mov (16) SCALE_RESPONSE_YD(0)<1> acc0:f { Compr } |
||
60 | |||
61 | line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_UF(0) { Compr } // Process B, V |
||
62 | mov (16) SCALE_RESPONSE_UD(0)<1> acc0:f { Compr } |
||
63 | |||
64 | mov (16) DEST_V(%1)<1> SCALE_RESPONSE_VB(0) //possible error due to truncation - vK |
||
65 | mov (16) DEST_Y(%1)<1> SCALE_RESPONSE_YB(0) //possible error due to truncation - vK |
||
66 | mov (16) DEST_U(%1)<1> SCALE_RESPONSE_UB(0) //possible error due to truncation - vK |
||
67 | |||
68 | } |
||
69 | |||
70 | #define nSRC_REGION nREGION_1 |
||
71 | |||
72 | //------------------------------------------------------------------------------1>1>1>1>0;1,0>1>0;1,0>1>0;1,0>0;1,0>8;8,1>1>0;1,0>8;8,1>1>1>1>1>8;8,1>1>1>1>0;1,0>1>0;1,0>0;1,0>1>0;1,0>1>0;1,0>1>1>1>1>1>1>1>1>2010> |