filename | test/testyuv.c |
changeset | 288:a42f998226fb |
prev | 283:b1fbeaaff6bb |
next | 561:533f6b478071 |
author | nkeynes |
date | Fri Sep 28 07:25:22 2007 +0000 (16 years ago) |
permissions | -rw-r--r-- |
last change | Remove MMU check (probably shouldn't be here anyway), and disable TRACE_IO checks by default |
file | annotate | diff | log | raw |
1.1 --- a/test/testyuv.c Mon Jan 15 08:30:50 2007 +00001.2 +++ b/test/testyuv.c Fri Sep 28 07:25:22 2007 +00001.3 @@ -1,5 +1,5 @@1.4 /**1.5 - * $Id: testyuv.c,v 1.1 2007-01-15 08:30:50 nkeynes Exp $1.6 + * $Id: testyuv.c,v 1.2 2007-01-15 10:41:30 nkeynes Exp $1.7 *1.8 * Renderer test cases1.9 *1.10 @@ -27,11 +27,51 @@1.11 #define YUV_ADDR (PVR_BASE+0x148)1.12 #define YUV_CONFIG (PVR_BASE+0x14C)1.13 #define YUV_STATUS (PVR_BASE+0x150)1.14 +#define TEXSIZE (PVR_BASE+0x0E4)1.15 #define DISPLAY_MODE (PVR_BASE+0x044)1.16 #define DISPLAY_ADDR1 (PVR_BASE+0x050)1.17 #define DISPLAY_ADDR2 (PVR_BASE+0x054)1.18 #define DISPLAY_SIZE (PVR_BASE+0x05C)1.20 +#define OBJ_START 0x000100001.21 +#define OBJ_LENGTH 0x000100001.22 +#define TILE_START 0x000600001.23 +#define TILE_LENGTH 0x000100001.24 +#define TILEMAP_ADDR 0x050B2C81.25 +#define RENDER_ADDR 0x006000001.26 +1.27 +#define OBJCFG 0xA05F807C1.28 +#define ISPCFG 0xA05F80981.29 +1.30 +struct ta_config default_ta_config = { 0x00100002, GRID_SIZE(640,480), OBJ_START,1.31 + OBJ_START+OBJ_LENGTH, TILE_START+TILE_LENGTH,1.32 + TILE_START, TILE_START+TILE_LENGTH };1.33 +1.34 +1.35 +1.36 +struct render_config default_render_config = { OBJ_START, TILEMAP_ADDR, RENDER_ADDR, 640, 480,1.37 + 0x00000009, 0.0001f, 1.0f };1.38 +1.39 +1.40 +struct backplane {1.41 + uint32_t mode1, mode2, mode3;1.42 + float x1, y1, z1;1.43 + uint32_t col1;1.44 + float x2, y2, z2;1.45 + uint32_t col2;1.46 + float x3, y3, z3;1.47 + uint32_t col3;1.48 +};1.49 +1.50 +1.51 +#define START_BLEND 01.52 +#define BG_COLOUR 0xFF8080801.53 +1.54 +struct backplane default_backplane = { 0x90800000, 0x20800440, 0,1.55 + 0.0, 0.0, 0.2, BG_COLOUR,1.56 + 640.0, 0.0, 0.2, BG_COLOUR,1.57 + 0.0, 480.0, 0.2, BG_COLOUR };1.58 +1.59 struct yuv_poly {1.60 uint32_t poly[8];1.61 struct {1.62 @@ -41,13 +81,16 @@1.63 uint32_t pad;1.64 } vertex[4];1.65 uint32_t end[8];1.66 -} test_yuv_poly = { { 0x8084000A, 0xE0000000, 0x2083242D, 0, 0, 0, 0, 0 },1.67 - { { 0xE0000000, 0.0, 0.0, 0.2, 0.0, 0.0, 0xFFFFFFFF, 0 },1.68 - { 0xE0000000, 640.0, 0.0, 0.2, 0.625, 0.0, 0xFFFFFFFF, 0 },1.69 - { 0xE0000000, 0.0, 480.0, 0.2, 0.0, 0.9375, 0xFFFFFFFF, 0 },1.70 - { 0xF0000000, 640.0, 480.0, 0.2, 0.625, 0.9375, 0xFFFFFFFF, 0 } },1.71 +} test_yuv_poly = { { 0x808C010A, 0xE0000000, 0x2091A4F6, 0x1E000000, 0, 0, 0, 0 },1.72 + { { 0xE0000000, 0.0, 0.0, 2.0, 0.0, 0.0, 0xFFFFFFFF, 0 },1.73 + { 0xE0000000, 640.0, 0.0, 2.0, 0.625, 0.0, 0xFFFFFFFF, 0 },1.74 + { 0xE0000000, 0.0, 480.0, 2.0, 0.0, 0.9375, 0xFFFFFFFF, 0 },1.75 + { 0xF0000000, 640.0, 480.0, 2.0, 0.625, 0.9375, 0xFFFFFFFF, 0 } },1.76 { 0,0,0,0,0,0,0,0 } };1.78 +1.79 +1.80 +1.81 int test_yuv( test_data_t test_case )1.82 {1.83 int i;1.84 @@ -77,12 +120,53 @@1.85 uint32_t timeus = timer_gettime_us();1.86 uint32_t status2 = long_read( YUV_STATUS );1.88 - /* Render the thing */1.89 + struct ta_config *config = &default_ta_config;1.90 +1.91 + /* Send TA data */1.92 + asic_clear();1.93 + pvr_init();1.94 + ta_init(config);1.95 memcpy( p, &test_yuv_poly, sizeof(test_yuv_poly) );1.96 - if( pvr_dma_write( 0x10000000, p, sizeof(test_yuv_poly) ) != 0 ) {1.97 + if( pvr_dma_write( 0x10000000, p, sizeof(test_yuv_poly), 0 ) != 0 ) {1.98 + return -1;1.99 + }1.100 + asic_wait( EVENT_PVR_OPAQUE_DONE );1.101 + if( asic_check( EVENT_PVR_PRIM_ALLOC_FAIL ) ||1.102 + asic_check( EVENT_PVR_MATRIX_ALLOC_FAIL ) ||1.103 + asic_check( EVENT_PVR_BAD_INPUT ) ) {1.104 + asic_dump(stderr);1.105 return -1;1.106 }1.108 + /* Write backplane (if any) */1.109 + uint32_t bgplane = pvr_get_objbuf_posn();1.110 + memcpy( (char *)(PVR_VRAM_BASE + bgplane), &default_backplane, sizeof(default_backplane) );1.111 + bgplane -= default_render_config.polybuf;1.112 + render_set_backplane( (bgplane << 1) | 0x01000000 );1.113 +1.114 + /* Render the damn thing */1.115 + long_write( OBJCFG, 0x0027DF77 );1.116 + long_write( ISPCFG, 0x00800409 );1.117 + long_write( TEXSIZE, 0x0000000A );1.118 + pvr_build_tilemap2( TILEMAP_ADDR, config, 0x10000000 );1.119 + render_start( &default_render_config );1.120 + if( asic_wait( EVENT_PVR_RENDER_DONE ) == -1 ) {1.121 + fprintf( stderr, "Test render failed (timeout waiting for render)\n" );1.122 + asic_dump( stderr );1.123 + return -1;1.124 + }1.125 +1.126 + asic_clear();1.127 + asic_wait( EVENT_RETRACE );1.128 + display_render( &default_render_config );1.129 + asic_clear();1.130 + asic_wait(EVENT_RETRACE);1.131 + asic_clear();1.132 + asic_wait(EVENT_RETRACE);1.133 + asic_clear();1.134 + asic_wait(EVENT_RETRACE);1.135 + asic_clear();1.136 + asic_wait(EVENT_RETRACE);1.137 return 0;1.138 }
.