~thopiekar/emgd/libva-1.0.13-github_community

« back to all changes in this revision

Viewing changes to i965_drv_video/shaders/render/exa_wm_src_sample_planar.g7a

  • Committer: Xiang, Haihao
  • Date: 2011-05-25 05:00:51 UTC
  • Revision ID: git-v1:39ce101b17cc06eb23759f5b9de8b34e7363f5eb
i965_drv_video: new shaders for rendering on Ivybridge

SEND on Ivybridge uses GRFs instead of MRFs

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright © 2006 Intel Corporation
 
3
 *
 
4
 * Permission is hereby granted, free of charge, to any person obtaining a
 
5
 * copy of this software and associated documentation files (the "Software"),
 
6
 * to deal in the Software without restriction, including without limitation
 
7
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 
8
 * and/or sell copies of the Software, and to permit persons to whom the
 
9
 * Software is furnished to do so, subject to the following conditions:
 
10
 *
 
11
 * The above copyright notice and this permission notice (including the next
 
12
 * paragraph) shall be included in all copies or substantial portions of the
 
13
 * Software.
 
14
 *
 
15
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
16
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
17
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 
18
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
19
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
20
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 
21
 * IN THE SOFTWARE.
 
22
 *
 
23
 * Authors:
 
24
 *    Wang Zhenyu <zhenyu.z.wang@intel.com>
 
25
 *    Keith Packard <keithp@keithp.com>
 
26
 */
 
27
 
 
28
/* Sample the src surface in planar format */
 
29
 
 
30
include(`exa_wm.g4i')
 
31
 
 
32
/* Ivybridge uses GRFs in SEND instruction */
 
33
define(`src_msg_gen7',   `g65')
 
34
define(`src_msg_ind_gen7',`65')
 
35
/* UV flag */
 
36
define(`nv12', `g6.0<0,1,0>UW')
 
37
 
 
38
/* prepare sampler read back gX register, which would be written back to output */
 
39
 
 
40
/* use simd16 sampler, param 0 is u, param 1 is v. */
 
41
/* 'payload' loading, assuming tex coord start from g4 */
 
42
cmp.g.f0.0 (1) null nv12 0x0UW {align1};
 
43
(f0.0) jmpi INTERLEAVED_UV;
 
44
 
 
45
/* load r */
 
46
mov (1) g0.8<1>UD               0x0000e000UD { align1 mask_disable };
 
47
mov (8) src_msg_gen7<1>UD       g0<8,8,1>UD  { align1 mask_disable };
 
48
 
 
49
/* emit sampler 'send' cmd */
 
50
 
 
51
/* sample U (Cr) */
 
52
send (16) src_msg_ind_gen7              /* msg reg index */
 
53
        src_sample_g<1>UW       /* readback */
 
54
        null
 
55
        sampler (3,2,F)         /* sampler message description, (binding_table,sampler_index,datatype)
 
56
                                /* here(src->dst) we should use src_sampler and src_surface */
 
57
        mlen 5 rlen 2 { align1 };   /* required message len 5, readback len 8 */
 
58
 
 
59
/* sample V (Cb) */
 
60
mov (1) g0.8<1>UD       0x0000e000UD { align1 mask_disable };
 
61
mov (8) src_msg_gen7<1>UD       g0<8,8,1>UD  { align1 mask_disable };
 
62
 
 
63
send (16) src_msg_ind_gen7              /* msg reg index */
 
64
        src_sample_b<1>UW       /* readback */
 
65
        null
 
66
        sampler (5,4,F)         /* sampler message description, (binding_table,sampler_index,datatype)
 
67
                                /* here(src->dst) we should use src_sampler and src_surface */
 
68
        mlen 5 rlen 2 { align1 };   /* required message len 5, readback len 8 */
 
69
 
 
70
jmpi SAMPLE_Y;
 
71
 
 
72
INTERLEAVED_UV:
 
73
mov (1) g0.8<1>UD       0x0000c000UD { align1 mask_disable };
 
74
mov (8) src_msg_gen7<1>UD    g0<8,8,1>UD  { align1 mask_disable };
 
75
 
 
76
/* sample UV (CrCb) */
 
77
send (16) src_msg_ind_gen7           /* msg reg index */
 
78
        src_sample_g<1>UW       /* readback */                                                                                                                         
 
79
        null
 
80
        sampler (3,2,F)         /* sampler message description, (binding_table,sampler_index,datatype)
 
81
                                /* here(src->dst) we should use src_sampler and src_surface */
 
82
        mlen 5 rlen 4 { align1 };   /* required message len 5, readback len 8 */
 
83
 
 
84
SAMPLE_Y:
 
85
mov (1) g0.8<1>UD       0x0000e000UD { align1 mask_disable };
 
86
mov (8) src_msg_gen7<1>UD       g0<8,8,1>UD  { align1 mask_disable };
 
87
 
 
88
/* sample Y */
 
89
send (16) src_msg_ind_gen7              /* msg reg index */
 
90
        src_sample_r<1>UW       /* readback */
 
91
        null
 
92
        sampler (1,0,F)         /* sampler message description, (binding_table,sampler_index,datatype)
 
93
                                /* here(src->dst) we should use src_sampler and src_surface */
 
94
        mlen 5 rlen 2 { align1 };   /* required message len 5, readback len 8 */
 
95