103b705cfSriastradh/*
203b705cfSriastradh * Copyright (c) 2011 Intel Corporation
303b705cfSriastradh *
403b705cfSriastradh * Permission is hereby granted, free of charge, to any person obtaining a
503b705cfSriastradh * copy of this software and associated documentation files (the "Software"),
603b705cfSriastradh * to deal in the Software without restriction, including without limitation
703b705cfSriastradh * the rights to use, copy, modify, merge, publish, distribute, sublicense,
803b705cfSriastradh * and/or sell copies of the Software, and to permit persons to whom the
903b705cfSriastradh * Software is furnished to do so, subject to the following conditions:
1003b705cfSriastradh *
1103b705cfSriastradh * The above copyright notice and this permission notice (including the next
1203b705cfSriastradh * paragraph) shall be included in all copies or substantial portions of the
1303b705cfSriastradh * Software.
1403b705cfSriastradh *
1503b705cfSriastradh * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1603b705cfSriastradh * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1703b705cfSriastradh * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
1803b705cfSriastradh * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1903b705cfSriastradh * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2003b705cfSriastradh * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2103b705cfSriastradh * SOFTWARE.
2203b705cfSriastradh *
2303b705cfSriastradh * Authors:
2403b705cfSriastradh *    Chris Wilson <chris@chris-wilson.co.uk>
2503b705cfSriastradh *
2603b705cfSriastradh */
2703b705cfSriastradh
2803b705cfSriastradh#include "brw_test.h"
2903b705cfSriastradh
3003b705cfSriastradh#include <string.h>
3103b705cfSriastradh
3203b705cfSriastradhstatic const uint32_t ps_kernel_nomask_affine[][4] = {
3303b705cfSriastradh#include "exa_wm_src_affine.g7b"
3403b705cfSriastradh#include "exa_wm_src_sample_argb.g7b"
3503b705cfSriastradh#include "exa_wm_write.g7b"
3603b705cfSriastradh};
3703b705cfSriastradh
3803b705cfSriastradhstatic const uint32_t ps_kernel_nomask_projective[][4] = {
3903b705cfSriastradh#include "exa_wm_src_projective.g7b"
4003b705cfSriastradh#include "exa_wm_src_sample_argb.g7b"
4103b705cfSriastradh#include "exa_wm_write.g7b"
4203b705cfSriastradh};
4303b705cfSriastradh
4403b705cfSriastradhstatic const uint32_t ps_kernel_maskca_affine[][4] = {
4503b705cfSriastradh#include "exa_wm_src_affine.g7b"
4603b705cfSriastradh#include "exa_wm_src_sample_argb.g7b"
4703b705cfSriastradh#include "exa_wm_mask_affine.g7b"
4803b705cfSriastradh#include "exa_wm_mask_sample_argb.g7b"
4903b705cfSriastradh#include "exa_wm_ca.g6b"
5003b705cfSriastradh#include "exa_wm_write.g7b"
5103b705cfSriastradh};
5203b705cfSriastradh
5303b705cfSriastradhstatic const uint32_t ps_kernel_maskca_projective[][4] = {
5403b705cfSriastradh#include "exa_wm_src_projective.g7b"
5503b705cfSriastradh#include "exa_wm_src_sample_argb.g7b"
5603b705cfSriastradh#include "exa_wm_mask_projective.g7b"
5703b705cfSriastradh#include "exa_wm_mask_sample_argb.g7b"
5803b705cfSriastradh#include "exa_wm_ca.g6b"
5903b705cfSriastradh#include "exa_wm_write.g7b"
6003b705cfSriastradh};
6103b705cfSriastradh
6203b705cfSriastradhstatic const uint32_t ps_kernel_maskca_srcalpha_affine[][4] = {
6303b705cfSriastradh#include "exa_wm_src_affine.g7b"
6403b705cfSriastradh#include "exa_wm_src_sample_a.g7b"
6503b705cfSriastradh#include "exa_wm_mask_affine.g7b"
6603b705cfSriastradh#include "exa_wm_mask_sample_argb.g7b"
6703b705cfSriastradh#include "exa_wm_ca_srcalpha.g6b"
6803b705cfSriastradh#include "exa_wm_write.g7b"
6903b705cfSriastradh};
7003b705cfSriastradh
7103b705cfSriastradhstatic const uint32_t ps_kernel_maskca_srcalpha_projective[][4] = {
7203b705cfSriastradh#include "exa_wm_src_projective.g7b"
7303b705cfSriastradh#include "exa_wm_src_sample_a.g7b"
7403b705cfSriastradh#include "exa_wm_mask_projective.g7b"
7503b705cfSriastradh#include "exa_wm_mask_sample_argb.g7b"
7603b705cfSriastradh#include "exa_wm_ca_srcalpha.g6b"
7703b705cfSriastradh#include "exa_wm_write.g7b"
7803b705cfSriastradh};
7903b705cfSriastradh
8003b705cfSriastradhstatic const uint32_t ps_kernel_masknoca_affine[][4] = {
8103b705cfSriastradh#include "exa_wm_src_affine.g7b"
8203b705cfSriastradh#include "exa_wm_src_sample_argb.g7b"
8303b705cfSriastradh#include "exa_wm_mask_affine.g7b"
8403b705cfSriastradh#include "exa_wm_mask_sample_a.g7b"
8503b705cfSriastradh#include "exa_wm_noca.g6b"
8603b705cfSriastradh#include "exa_wm_write.g7b"
8703b705cfSriastradh};
8803b705cfSriastradh
8903b705cfSriastradhstatic const uint32_t ps_kernel_masknoca_projective[][4] = {
9003b705cfSriastradh#include "exa_wm_src_projective.g7b"
9103b705cfSriastradh#include "exa_wm_src_sample_argb.g7b"
9203b705cfSriastradh#include "exa_wm_mask_projective.g7b"
9303b705cfSriastradh#include "exa_wm_mask_sample_a.g7b"
9403b705cfSriastradh#include "exa_wm_noca.g6b"
9503b705cfSriastradh#include "exa_wm_write.g7b"
9603b705cfSriastradh};
9703b705cfSriastradh
9803b705cfSriastradhstatic const uint32_t ps_kernel_packed[][4] = {
9903b705cfSriastradh#include "exa_wm_src_affine.g7b"
10003b705cfSriastradh#include "exa_wm_src_sample_argb.g7b"
101fe8aea9eSmrg#include "exa_wm_yuv_rgb_bt601.g7b"
10203b705cfSriastradh#include "exa_wm_write.g7b"
10303b705cfSriastradh};
10403b705cfSriastradh
10503b705cfSriastradhstatic const uint32_t ps_kernel_planar[][4] = {
10603b705cfSriastradh#include "exa_wm_src_affine.g7b"
10703b705cfSriastradh#include "exa_wm_src_sample_planar.g7b"
108fe8aea9eSmrg#include "exa_wm_yuv_rgb_bt601.g7b"
10903b705cfSriastradh#include "exa_wm_write.g7b"
11003b705cfSriastradh};
11103b705cfSriastradh
11203b705cfSriastradh#define compare(old) brw_test_compare(__FUNCTION__, p.gen, p.store, p.nr_insn, (struct brw_instruction *)old, ARRAY_SIZE(old))
11313496ba1Ssnj#define GEN 070
11403b705cfSriastradh
11503b705cfSriastradhstatic void gen7_ps_nomask_affine(void)
11603b705cfSriastradh{
11703b705cfSriastradh	uint32_t store[1024];
11803b705cfSriastradh	struct brw_compile p;
11903b705cfSriastradh
12003b705cfSriastradh	brw_compile_init(&p, GEN, store);
12103b705cfSriastradh	brw_wm_kernel__affine(&p, 8);
12203b705cfSriastradh
12303b705cfSriastradh	compare(ps_kernel_nomask_affine);
12403b705cfSriastradh}
12503b705cfSriastradh
12603b705cfSriastradhstatic void gen7_ps_mask_affine(void)
12703b705cfSriastradh{
12803b705cfSriastradh	uint32_t store[1024];
12903b705cfSriastradh	struct brw_compile p;
13003b705cfSriastradh
13103b705cfSriastradh	brw_compile_init(&p, GEN, store);
13203b705cfSriastradh	brw_wm_kernel__affine_mask(&p, 8);
13303b705cfSriastradh
13403b705cfSriastradh	compare(ps_kernel_masknoca_affine);
13503b705cfSriastradh}
13603b705cfSriastradh
13703b705cfSriastradhstatic void gen7_ps_maskca_affine(void)
13803b705cfSriastradh{
13903b705cfSriastradh	uint32_t store[1024];
14003b705cfSriastradh	struct brw_compile p;
14103b705cfSriastradh
14203b705cfSriastradh	brw_compile_init(&p, GEN, store);
14303b705cfSriastradh	brw_wm_kernel__affine_mask_ca(&p, 8);
14403b705cfSriastradh
14503b705cfSriastradh	compare(ps_kernel_maskca_affine);
14603b705cfSriastradh}
14703b705cfSriastradh
14803b705cfSriastradhstatic void gen7_ps_masksa_affine(void)
14903b705cfSriastradh{
15003b705cfSriastradh	uint32_t store[1024];
15103b705cfSriastradh	struct brw_compile p;
15203b705cfSriastradh
15303b705cfSriastradh	brw_compile_init(&p, GEN, store);
15403b705cfSriastradh	brw_wm_kernel__affine_mask_sa(&p, 8);
15503b705cfSriastradh
15603b705cfSriastradh	compare(ps_kernel_maskca_srcalpha_affine);
15703b705cfSriastradh}
15803b705cfSriastradh
15903b705cfSriastradhstatic void gen7_ps_nomask_projective(void)
16003b705cfSriastradh{
16103b705cfSriastradh	uint32_t store[1024];
16203b705cfSriastradh	struct brw_compile p;
16303b705cfSriastradh
16403b705cfSriastradh	brw_compile_init(&p, GEN, store);
16503b705cfSriastradh	brw_wm_kernel__projective(&p, 8);
16603b705cfSriastradh
16703b705cfSriastradh	compare(ps_kernel_nomask_projective);
16803b705cfSriastradh}
16903b705cfSriastradh
17003b705cfSriastradhstatic void gen7_ps_opacity(void)
17103b705cfSriastradh{
17203b705cfSriastradh	uint32_t store[1024];
17303b705cfSriastradh	struct brw_compile p;
17403b705cfSriastradh
17503b705cfSriastradh	brw_compile_init(&p, GEN, store);
17603b705cfSriastradh	brw_wm_kernel__affine_opacity(&p, 16);
17703b705cfSriastradh
17803b705cfSriastradh	compare(ps_kernel_nomask_affine);
17903b705cfSriastradh}
18003b705cfSriastradh
18103b705cfSriastradhvoid brw_test_gen7(void)
18203b705cfSriastradh{
18303b705cfSriastradh	gen7_ps_nomask_affine();
18403b705cfSriastradh	gen7_ps_mask_affine();
18503b705cfSriastradh	gen7_ps_maskca_affine();
18603b705cfSriastradh	gen7_ps_masksa_affine();
18703b705cfSriastradh
18803b705cfSriastradh	gen7_ps_nomask_projective();
18903b705cfSriastradh
19003b705cfSriastradh	gen7_ps_opacity();
19103b705cfSriastradh}
192