~ubuntu-branches/ubuntu/natty/libva/natty

« back to all changes in this revision

Viewing changes to i965_drv_video/shaders/post_processing/Core_Kernels/PA_Scaling.asm

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler, Artur Rona, Reinhard Tartler
  • Date: 2011-02-13 19:01:16 UTC
  • mfrom: (3.2.2 sid)
  • Revision ID: james.westby@ubuntu.com-20110213190116-wy9fqh71nmomiacl
Tags: 1.0.8-3
[ Artur Rona ]
* Update library dependencies to fix FTBFS properly.

[ Reinhard Tartler ]
* Disable i965 driver on hurd-i386, Closes: #613102

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
//---------- PA_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                //3, 2, 1, 0 in float vector
 
18
mov (4) SAMPLER_RAMP(0,4)<1> 0x5C585450:vf      //7, 6, 5, 4 in float vector
 
19
add     (8)             SAMPLER_RAMP(1)<1>              SAMPLER_RAMP(0) 8.0:f
 
20
 
 
21
//Module: PrepareScaleCoord.asm
 
22
 
 
23
        // Setup for sampler msg hdr
 
24
    mov (2)             rMSGSRC.0<1>:ud                 0:ud                                            { NoDDClr }     // Unused fields
 
25
    mov (1)             rMSGSRC.2<1>:ud                 0:ud                                            { NoDDChk }     // Write and offset
 
26
 
 
27
        // Calculate 16 v based on the step Y and vertical origin
 
28
        mov     (16)    mfMSGPAYLOAD(2)<1>              fSRC_VID_V_ORI<0;1,0>:f
 
29
        mov     (16)    SCALE_COORD_Y<1>:f              fSRC_VID_V_ORI<0;1,0>:f
 
30
 
 
31
        // Calculate 16 u based on the step X and hori origin
 
32
//      line (16)       mfMSGPAYLOAD(0)<1>              SCALE_STEP_X<0;1,0>:f           SAMPLER_RAMP(0)         // Assign to mrf directly
 
33
        mov     (16)    acc0:f                                                  fSRC_VID_H_ORI<0;1,0>:f                                                                                 { Compr }
 
34
        mac     (16)    mfMSGPAYLOAD(0)<1>      fVIDEO_STEP_X<0;1,0>:f  SAMPLER_RAMP(0)                 { Compr }                       
 
35
 
 
36
        //Setup the constants for line instruction
 
37
        mov     (1)             SCALE_LINE_P255<1>:f            255.0:f                         { NoDDClr }     //{ NoDDClr, NoDDChk }
 
38
        mov     (1)             SCALE_LINE_P0_5<1>:f            0.5:f                           { NoDDChk }
 
39
        
 
40
//------------------------------------------------------------------------------
 
41
 
 
42
$for (0; <nY_NUM_OF_ROWS; 1) {
 
43
 
 
44
        // Read 16 sampled pixels and store them in float32 in 8 GRFs in the order of BGRA (VYUA).
 
45
  mov (8)       MSGHDR_SCALE.0:ud      rMSGSRC.0<8;8,1>:ud    // Copy msg header and payload mirrors to MRFs
 
46
        send (16)       SCALE_RESPONSE_YW(0)<1>         MSGHDR_SCALE    udDUMMY_NULL    nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_YUV+nBI_CURRENT_SRC_YUV
 
47
 
 
48
        // Calculate 16 v for next line
 
49
        add (16)        mfMSGPAYLOAD(2)<1>              SCALE_COORD_Y<8;8,1>:f          fVIDEO_STEP_Y<0;1,0>:f  // Assign to mrf directly
 
50
        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
 
51
 
 
52
        // Scale back to [0, 255], convert f to ud
 
53
        line (16)       acc0:f          SCALE_LINE_P255<0;1,0>:f        SCALE_RESPONSE_YF(0)    { Compr }                       // Process B, V
 
54
        mov  (16) SCALE_RESPONSE_YD(0)<1>       acc0:f                                                                                                          { Compr }
 
55
 
 
56
        line (16)       acc0:f          SCALE_LINE_P255<0;1,0>:f        SCALE_RESPONSE_YF(2)    { Compr }                       // Process B, V
 
57
        mov  (16) SCALE_RESPONSE_YD(2)<1>       acc0:f                                                                                                          { Compr }
 
58
 
 
59
        line (16)       acc0:f          SCALE_LINE_P255<0;1,0>:f        SCALE_RESPONSE_YF(4)    { Compr }                       // Process B, V
 
60
        mov  (16) SCALE_RESPONSE_YD(4)<1>       acc0:f                                                                                                          { Compr }
 
61
 
 
62
        mov      (16)   DEST_V(%1)<1>                           SCALE_RESPONSE_YB(0)                                                                                    //possible error due to truncation - vK
 
63
        mov      (16)   DEST_Y(%1)<1>                           SCALE_RESPONSE_YB(2)                                                                                    //possible error due to truncation - vK
 
64
        mov      (16)   DEST_U(%1)<1>                           SCALE_RESPONSE_YB(4)                                                                                    //possible error due to truncation - vK
 
65
 
 
66
}
 
67
 
 
68
        #define nSRC_REGION                             nREGION_1
 
69
 
 
70
//------------------------------------------------------------------------------