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