Subversion Repositories Kolibri OS

Rev

Rev 6938 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6938 Rev 7146
Line 2341... Line 2341...
2341
 * which index in the tiling table we want to use, and the
2341
 * which index in the tiling table we want to use, and the
2342
 * surface uses those parameters (CIK).
2342
 * surface uses those parameters (CIK).
2343
 */
2343
 */
2344
static void cik_tiling_mode_table_init(struct radeon_device *rdev)
2344
static void cik_tiling_mode_table_init(struct radeon_device *rdev)
2345
{
2345
{
-
 
2346
	u32 *tile = rdev->config.cik.tile_mode_array;
-
 
2347
	u32 *macrotile = rdev->config.cik.macrotile_mode_array;
2346
	const u32 num_tile_mode_states = 32;
2348
	const u32 num_tile_mode_states =
-
 
2349
			ARRAY_SIZE(rdev->config.cik.tile_mode_array);
2347
	const u32 num_secondary_tile_mode_states = 16;
2350
	const u32 num_secondary_tile_mode_states =
-
 
2351
			ARRAY_SIZE(rdev->config.cik.macrotile_mode_array);
2348
	u32 reg_offset, gb_tile_moden, split_equal_to_row_size;
2352
	u32 reg_offset, split_equal_to_row_size;
2349
	u32 num_pipe_configs;
2353
	u32 num_pipe_configs;
2350
	u32 num_rbs = rdev->config.cik.max_backends_per_se *
2354
	u32 num_rbs = rdev->config.cik.max_backends_per_se *
2351
		rdev->config.cik.max_shader_engines;
2355
		rdev->config.cik.max_shader_engines;
Line 2352... Line 2356...
2352
 
2356
 
Line 2365... Line 2369...
2365
 
2369
 
2366
	num_pipe_configs = rdev->config.cik.max_tile_pipes;
2370
	num_pipe_configs = rdev->config.cik.max_tile_pipes;
2367
	if (num_pipe_configs > 8)
2371
	if (num_pipe_configs > 8)
Line -... Line 2372...
-
 
2372
		num_pipe_configs = 16;
2368
		num_pipe_configs = 16;
2373
 
2369
 
2374
	for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++)
2370
	if (num_pipe_configs == 16) {
2375
		tile[reg_offset] = 0;
-
 
2376
	for (reg_offset = 0; reg_offset < num_secondary_tile_mode_states; reg_offset++)
-
 
2377
		macrotile[reg_offset] = 0;
2371
		for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++) {
2378
 
2372
			switch (reg_offset) {
2379
	switch(num_pipe_configs) {
2373
			case 0:
2380
	case 16:
2374
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2381
		tile[0] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2375
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2382
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2376
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2377
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B));
-
 
2378
				break;
2383
			   PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2379
			case 1:
2384
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B));
2380
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2385
		tile[1] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2381
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2386
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2382
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2383
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B));
-
 
2384
				break;
2387
			   PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2385
			case 2:
2388
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B));
2386
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2389
		tile[2] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2387
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2390
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2388
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2389
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
-
 
2390
				break;
2391
			   PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2391
			case 3:
2392
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
2392
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2393
		tile[3] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2393
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2394
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2394
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2395
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B));
-
 
2396
				break;
2395
			   PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2397
			case 4:
2396
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B));
2398
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2397
		tile[4] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2399
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2398
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2400
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2401
						 TILE_SPLIT(split_equal_to_row_size));
-
 
2402
				break;
2399
			   PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2403
			case 5:
2400
			   TILE_SPLIT(split_equal_to_row_size));
2404
				gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2401
		tile[5] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2405
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2406
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
-
 
2407
				break;
2402
			   PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2408
			case 6:
2403
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
2409
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2404
		tile[6] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2410
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2405
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2411
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2412
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
-
 
2413
				break;
2406
			   PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2414
			case 7:
2407
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
2415
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2408
		tile[7] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2416
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2409
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2417
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2418
						 TILE_SPLIT(split_equal_to_row_size));
-
 
2419
				break;
2410
			   PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2420
			case 8:
2411
			   TILE_SPLIT(split_equal_to_row_size));
2421
				gb_tile_moden = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
-
 
2422
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16));
-
 
2423
				break;
2412
		tile[8] = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
2424
			case 9:
2413
			   PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16));
2425
				gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2414
		tile[9] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2426
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2427
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING));
-
 
2428
				break;
2415
			   PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2429
			case 10:
2416
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING));
2430
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2417
		tile[10] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2431
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2418
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2432
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2433
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2434
				break;
2419
			    PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2435
			case 11:
2420
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2436
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2421
		tile[11] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2437
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2422
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2438
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_8x16) |
-
 
2439
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2440
				break;
2423
			    PIPE_CONFIG(ADDR_SURF_P16_32x32_8x16) |
2441
			case 12:
2424
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2442
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2425
		tile[12] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2443
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2426
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2444
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2445
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2446
				break;
2427
			    PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2447
			case 13:
2428
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2448
				gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2429
		tile[13] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2449
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2450
						 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
-
 
2451
				break;
2430
			    PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2452
			case 14:
2431
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
2453
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2432
		tile[14] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2454
						 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2433
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2455
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2456
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2457
				break;
2434
			    PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2458
			case 16:
2435
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2459
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2436
		tile[16] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2460
						 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2437
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2461
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_8x16) |
-
 
2462
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2463
				break;
2438
			    PIPE_CONFIG(ADDR_SURF_P16_32x32_8x16) |
2464
			case 17:
2439
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2465
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2440
		tile[17] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2466
						 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2441
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2467
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2468
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2469
				break;
2442
			    PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2470
			case 27:
2443
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2471
				gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2444
		tile[27] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2472
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2473
						 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING));
-
 
2474
				break;
2445
			    PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2475
			case 28:
2446
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING));
2476
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2447
		tile[28] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2477
						 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2448
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2478
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2479
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2480
				break;
2449
			    PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2481
			case 29:
2450
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2482
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2451
		tile[29] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2483
						 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2452
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2484
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_8x16) |
-
 
2485
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2486
				break;
2453
			    PIPE_CONFIG(ADDR_SURF_P16_32x32_8x16) |
2487
			case 30:
2454
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2488
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2455
		tile[30] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2489
						 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2456
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2490
						 PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
-
 
2491
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2492
				break;
-
 
2493
			default:
-
 
2494
				gb_tile_moden = 0;
-
 
2495
				break;
-
 
2496
			}
-
 
2497
			rdev->config.cik.tile_mode_array[reg_offset] = gb_tile_moden;
2457
			    PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
2498
			WREG32(GB_TILE_MODE0 + (reg_offset * 4), gb_tile_moden);
-
 
2499
		}
-
 
2500
		for (reg_offset = 0; reg_offset < num_secondary_tile_mode_states; reg_offset++) {
-
 
2501
			switch (reg_offset) {
2458
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2502
			case 0:
2459
 
2503
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2460
		macrotile[0] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2504
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
2461
			   BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
2505
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
2506
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2507
				break;
2462
			   MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
2508
			case 1:
2463
			   NUM_BANKS(ADDR_SURF_16_BANK));
2509
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2464
		macrotile[1] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2510
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
2465
			   BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
2511
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
2512
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2513
				break;
2466
			   MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
2514
			case 2:
2467
			   NUM_BANKS(ADDR_SURF_16_BANK));
2515
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2468
		macrotile[2] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2516
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2469
			   BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2517
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2518
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2519
				break;
2470
			   MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2520
			case 3:
2471
			   NUM_BANKS(ADDR_SURF_16_BANK));
2521
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2472
		macrotile[3] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2522
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2473
			   BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2523
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2524
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2525
				break;
2474
			   MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2526
			case 4:
2475
			   NUM_BANKS(ADDR_SURF_16_BANK));
2527
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2476
		macrotile[4] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2528
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2477
			   BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2529
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2530
						 NUM_BANKS(ADDR_SURF_8_BANK));
-
 
2531
				break;
2478
			   MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2532
			case 5:
2479
			   NUM_BANKS(ADDR_SURF_8_BANK));
2533
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2480
		macrotile[5] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2534
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2481
			   BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2535
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2536
						 NUM_BANKS(ADDR_SURF_4_BANK));
-
 
2537
				break;
2482
			   MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2538
			case 6:
2483
			   NUM_BANKS(ADDR_SURF_4_BANK));
2539
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2484
		macrotile[6] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2540
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2485
			   BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2541
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2542
						 NUM_BANKS(ADDR_SURF_2_BANK));
-
 
2543
				break;
2486
			   MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2544
			case 8:
2487
			   NUM_BANKS(ADDR_SURF_2_BANK));
2545
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2488
		macrotile[8] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2546
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
2489
			   BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
2547
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
2548
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2549
				break;
2490
			   MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
2550
			case 9:
2491
			   NUM_BANKS(ADDR_SURF_16_BANK));
2551
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2492
		macrotile[9] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2552
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
2493
			   BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
2553
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
2554
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2555
				break;
2494
			   MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
2556
			case 10:
2495
			   NUM_BANKS(ADDR_SURF_16_BANK));
2557
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2496
		macrotile[10] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2558
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2497
			    BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2559
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2560
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2561
				break;
2498
			    MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2562
			case 11:
2499
			    NUM_BANKS(ADDR_SURF_16_BANK));
2563
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2500
		macrotile[11] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2564
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2501
			    BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2565
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2566
						 NUM_BANKS(ADDR_SURF_8_BANK));
-
 
2567
				break;
2502
			    MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2568
			case 12:
2503
			    NUM_BANKS(ADDR_SURF_8_BANK));
2569
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2504
		macrotile[12] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2570
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2505
			    BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2571
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2572
						 NUM_BANKS(ADDR_SURF_4_BANK));
-
 
2573
				break;
2506
			    MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2574
			case 13:
2507
			    NUM_BANKS(ADDR_SURF_4_BANK));
2575
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2508
		macrotile[13] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2576
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2509
			    BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2577
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2578
						 NUM_BANKS(ADDR_SURF_2_BANK));
-
 
2579
				break;
2510
			    MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2580
			case 14:
2511
			    NUM_BANKS(ADDR_SURF_2_BANK));
2581
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2512
		macrotile[14] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2582
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2513
			    BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
-
 
2514
			    MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2515
			    NUM_BANKS(ADDR_SURF_2_BANK));
-
 
2516
 
-
 
2517
		for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++)
-
 
2518
			WREG32(GB_TILE_MODE0 + (reg_offset * 4), tile[reg_offset]);
2583
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2519
		for (reg_offset = 0; reg_offset < num_secondary_tile_mode_states; reg_offset++)
2584
						 NUM_BANKS(ADDR_SURF_2_BANK));
-
 
2585
				break;
-
 
2586
			default:
-
 
2587
				gb_tile_moden = 0;
-
 
2588
				break;
-
 
2589
			}
-
 
2590
			rdev->config.cik.macrotile_mode_array[reg_offset] = gb_tile_moden;
2520
			WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), macrotile[reg_offset]);
2591
			WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), gb_tile_moden);
-
 
2592
		}
-
 
2593
	} else if (num_pipe_configs == 8) {
-
 
2594
		for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++) {
2521
		break;
2595
			switch (reg_offset) {
2522
 
2596
			case 0:
2523
	case 8:
2597
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2524
		tile[0] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2598
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2525
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2599
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2600
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B));
-
 
2601
				break;
2526
			   PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2602
			case 1:
2527
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B));
2603
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2528
		tile[1] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2604
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2529
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2605
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2606
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B));
-
 
2607
				break;
2530
			   PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2608
			case 2:
2531
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B));
2609
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2532
		tile[2] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2610
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2533
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2611
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2612
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
-
 
2613
				break;
2534
			   PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2614
			case 3:
2535
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
2615
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2536
		tile[3] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2616
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2537
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2617
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2618
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B));
-
 
2619
				break;
2538
			   PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2620
			case 4:
2539
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B));
2621
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2540
		tile[4] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2622
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2541
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2623
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2624
						 TILE_SPLIT(split_equal_to_row_size));
-
 
2625
				break;
2542
			   PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2626
			case 5:
2543
			   TILE_SPLIT(split_equal_to_row_size));
2627
				gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2544
		tile[5] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2628
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2629
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
-
 
2630
				break;
2545
			   PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2631
			case 6:
2546
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
2632
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2547
		tile[6] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2633
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2548
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2634
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2635
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
-
 
2636
				break;
2549
			   PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2637
			case 7:
2550
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
2638
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2551
		tile[7] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2639
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2552
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2640
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2641
						 TILE_SPLIT(split_equal_to_row_size));
-
 
2642
				break;
2553
			   PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2643
			case 8:
2554
			   TILE_SPLIT(split_equal_to_row_size));
2644
				gb_tile_moden = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
-
 
2645
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16));
-
 
2646
				break;
2555
		tile[8] = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
2647
			case 9:
2556
			   PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16));
2648
				gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2557
		tile[9] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2649
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2650
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING));
-
 
2651
				break;
2558
			   PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2652
			case 10:
2559
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING));
2653
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2560
		tile[10] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2654
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2561
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2655
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2656
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2657
				break;
2562
			    PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2658
			case 11:
2563
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2659
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2564
		tile[11] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2660
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2565
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2661
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) |
-
 
2662
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2663
				break;
2566
			    PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) |
2664
			case 12:
2567
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2665
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2568
		tile[12] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2666
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2569
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2667
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2668
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2669
				break;
2570
			    PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2670
			case 13:
2571
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2671
				gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2572
		tile[13] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2672
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2673
						 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
-
 
2674
				break;
2573
			    PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2675
			case 14:
2574
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
2676
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2575
		tile[14] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2677
						 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2576
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2678
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2679
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2680
				break;
2577
			    PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2681
			case 16:
2578
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2682
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2579
		tile[16] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2683
						 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2580
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2684
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) |
-
 
2685
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2686
				break;
2581
			    PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) |
2687
			case 17:
2582
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2688
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2583
		tile[17] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2689
						 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2584
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2690
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2691
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2692
				break;
2585
			    PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2693
			case 27:
2586
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2694
				gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2587
		tile[27] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2695
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2696
						 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING));
-
 
2697
				break;
2588
			    PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2698
			case 28:
2589
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING));
2699
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2590
		tile[28] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2700
						 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2591
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2701
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2702
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2703
				break;
2592
			    PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2704
			case 29:
2593
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2705
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2594
		tile[29] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2706
						 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2595
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2707
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) |
-
 
2708
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2709
				break;
2596
			    PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) |
2710
			case 30:
2597
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2711
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2598
		tile[30] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2712
						 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2599
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2713
						 PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
-
 
2714
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2715
				break;
-
 
2716
			default:
-
 
2717
				gb_tile_moden = 0;
-
 
2718
				break;
-
 
2719
			}
-
 
2720
			rdev->config.cik.tile_mode_array[reg_offset] = gb_tile_moden;
2600
			    PIPE_CONFIG(ADDR_SURF_P8_32x32_16x16) |
2721
			WREG32(GB_TILE_MODE0 + (reg_offset * 4), gb_tile_moden);
-
 
2722
		}
-
 
2723
		for (reg_offset = 0; reg_offset < num_secondary_tile_mode_states; reg_offset++) {
-
 
2724
			switch (reg_offset) {
2601
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2725
			case 0:
2602
 
2726
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2603
		macrotile[0] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2727
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
2604
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
2728
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
2729
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2730
				break;
2605
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
2731
			case 1:
2606
				NUM_BANKS(ADDR_SURF_16_BANK));
2732
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2607
		macrotile[1] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2733
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
2608
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
2734
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
2735
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2736
				break;
2609
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
2737
			case 2:
2610
				NUM_BANKS(ADDR_SURF_16_BANK));
2738
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2611
		macrotile[2] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2739
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2612
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2740
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
2741
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2742
				break;
2613
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
2743
			case 3:
2614
				NUM_BANKS(ADDR_SURF_16_BANK));
2744
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2615
		macrotile[3] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2745
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2616
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2746
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
2747
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2748
				break;
2617
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
2749
			case 4:
2618
				NUM_BANKS(ADDR_SURF_16_BANK));
2750
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2619
		macrotile[4] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2751
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2620
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2752
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2753
						 NUM_BANKS(ADDR_SURF_8_BANK));
-
 
2754
				break;
2621
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2755
			case 5:
2622
				NUM_BANKS(ADDR_SURF_8_BANK));
2756
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2623
		macrotile[5] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2757
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2624
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2758
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2759
						 NUM_BANKS(ADDR_SURF_4_BANK));
-
 
2760
				break;
2625
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2761
			case 6:
2626
				NUM_BANKS(ADDR_SURF_4_BANK));
2762
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2627
		macrotile[6] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2763
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2628
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2764
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2765
						 NUM_BANKS(ADDR_SURF_2_BANK));
-
 
2766
				break;
2629
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2767
			case 8:
2630
				NUM_BANKS(ADDR_SURF_2_BANK));
2768
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2631
		macrotile[8] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2769
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_8) |
2632
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_8) |
2770
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
2771
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2772
				break;
2633
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
2773
			case 9:
2634
				NUM_BANKS(ADDR_SURF_16_BANK));
2774
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2635
		macrotile[9] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2775
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
2636
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
2776
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
2777
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2778
				break;
2637
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
2779
			case 10:
2638
				NUM_BANKS(ADDR_SURF_16_BANK));
2780
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2639
		macrotile[10] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2781
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
2640
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
2782
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
2783
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2784
				break;
2641
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
2785
			case 11:
2642
				NUM_BANKS(ADDR_SURF_16_BANK));
2786
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2643
		macrotile[11] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2787
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2644
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2788
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
2789
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
2790
				break;
2645
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
2791
			case 12:
2646
				NUM_BANKS(ADDR_SURF_16_BANK));
2792
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2647
		macrotile[12] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2793
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2648
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2794
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2795
						 NUM_BANKS(ADDR_SURF_8_BANK));
-
 
2796
				break;
2649
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2797
			case 13:
2650
				NUM_BANKS(ADDR_SURF_8_BANK));
2798
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2651
		macrotile[13] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2799
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2652
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2800
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2801
						 NUM_BANKS(ADDR_SURF_4_BANK));
-
 
2802
				break;
2653
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2803
			case 14:
2654
				NUM_BANKS(ADDR_SURF_4_BANK));
2804
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2655
		macrotile[14] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2805
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2656
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
-
 
2657
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2658
				NUM_BANKS(ADDR_SURF_2_BANK));
-
 
2659
 
-
 
2660
		for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++)
-
 
2661
			WREG32(GB_TILE_MODE0 + (reg_offset * 4), tile[reg_offset]);
2806
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2662
		for (reg_offset = 0; reg_offset < num_secondary_tile_mode_states; reg_offset++)
2807
						 NUM_BANKS(ADDR_SURF_2_BANK));
-
 
2808
				break;
-
 
2809
			default:
-
 
2810
				gb_tile_moden = 0;
2663
			WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), macrotile[reg_offset]);
2811
				break;
-
 
2812
			}
-
 
2813
			rdev->config.cik.macrotile_mode_array[reg_offset] = gb_tile_moden;
2664
		break;
2814
			WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), gb_tile_moden);
-
 
2815
		}
2665
 
2816
	} else if (num_pipe_configs == 4) {
-
 
2817
		if (num_rbs == 4) {
-
 
2818
			for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++) {
-
 
2819
				switch (reg_offset) {
2666
	case 4:
2820
				case 0:
2667
		if (num_rbs == 4) {
2821
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2668
		tile[0] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2822
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2669
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2823
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2824
							 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B));
-
 
2825
					break;
2670
			   PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2826
				case 1:
2671
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B));
2827
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2672
		tile[1] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2828
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2673
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2829
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2830
							 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B));
-
 
2831
					break;
2674
			   PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2832
				case 2:
2675
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B));
2833
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2676
		tile[2] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2834
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2677
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2835
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2836
							 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
-
 
2837
					break;
2678
			   PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2838
				case 3:
2679
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
2839
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2680
		tile[3] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2840
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2681
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2841
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2842
							 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B));
-
 
2843
					break;
2682
			   PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2844
				case 4:
2683
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B));
2845
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2684
		tile[4] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2846
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2685
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2847
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2848
							 TILE_SPLIT(split_equal_to_row_size));
-
 
2849
					break;
2686
			   PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2850
				case 5:
2687
			   TILE_SPLIT(split_equal_to_row_size));
2851
					gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2688
		tile[5] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2852
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2853
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
-
 
2854
					break;
2689
			   PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2855
				case 6:
2690
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
2856
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2691
		tile[6] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2857
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2692
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2858
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2859
							 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
-
 
2860
					break;
2693
			   PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2861
				case 7:
2694
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
2862
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2695
		tile[7] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2863
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2696
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2864
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2865
							 TILE_SPLIT(split_equal_to_row_size));
-
 
2866
					break;
2697
			   PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2867
				case 8:
2698
			   TILE_SPLIT(split_equal_to_row_size));
2868
					gb_tile_moden = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
-
 
2869
							 PIPE_CONFIG(ADDR_SURF_P4_16x16));
-
 
2870
					break;
2699
		tile[8] = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
2871
				case 9:
2700
			   PIPE_CONFIG(ADDR_SURF_P4_16x16));
2872
					gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2701
		tile[9] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2873
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2874
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING));
-
 
2875
					break;
2702
			   PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2876
				case 10:
2703
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING));
2877
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2704
		tile[10] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2878
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2705
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2879
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2880
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2881
					break;
2706
			    PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2882
				case 11:
2707
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2883
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2708
		tile[11] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2884
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2709
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2885
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
2886
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2887
					break;
2710
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
2888
				case 12:
2711
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2889
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2712
		tile[12] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2890
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2713
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2891
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2892
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2893
					break;
2714
			    PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2894
				case 13:
2715
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2895
					gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2716
		tile[13] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2896
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2897
							 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
-
 
2898
					break;
2717
			    PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2899
				case 14:
2718
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
2900
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2719
		tile[14] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2901
							 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2720
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2902
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2903
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2904
					break;
2721
			    PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2905
				case 16:
2722
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2906
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2723
		tile[16] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2907
							 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2724
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2908
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
2909
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2910
					break;
2725
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
2911
				case 17:
2726
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2912
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2727
		tile[17] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2913
							 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2728
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2914
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2915
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2916
					break;
2729
			    PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2917
				case 27:
2730
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2918
					gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2731
		tile[27] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2919
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2920
							 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING));
-
 
2921
					break;
2732
			    PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2922
				case 28:
2733
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING));
2923
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2734
		tile[28] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2924
							 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2735
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2925
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2926
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2927
					break;
2736
			    PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2928
				case 29:
2737
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2929
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2738
		tile[29] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2930
							 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2739
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2931
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
2932
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2933
					break;
2740
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
2934
				case 30:
2741
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2935
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2742
		tile[30] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2936
							 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2743
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2937
							 PIPE_CONFIG(ADDR_SURF_P4_16x16) |
-
 
2938
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
2939
					break;
-
 
2940
				default:
-
 
2941
					gb_tile_moden = 0;
-
 
2942
					break;
-
 
2943
				}
-
 
2944
				rdev->config.cik.tile_mode_array[reg_offset] = gb_tile_moden;
2744
			    PIPE_CONFIG(ADDR_SURF_P4_16x16) |
2945
				WREG32(GB_TILE_MODE0 + (reg_offset * 4), gb_tile_moden);
2745
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
2946
			}
-
 
2947
		} else if (num_rbs < 4) {
-
 
2948
			for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++) {
-
 
2949
				switch (reg_offset) {
2746
 
2950
				case 0:
2747
		} else if (num_rbs < 4) {
2951
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2748
		tile[0] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2952
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2749
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2953
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
2954
							 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B));
-
 
2955
					break;
2750
			   PIPE_CONFIG(ADDR_SURF_P4_8x16) |
2956
				case 1:
2751
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B));
2957
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2752
		tile[1] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2958
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2753
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2959
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
2960
							 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B));
-
 
2961
					break;
2754
			   PIPE_CONFIG(ADDR_SURF_P4_8x16) |
2962
				case 2:
2755
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B));
2963
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2756
		tile[2] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2964
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2757
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2965
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
2966
							 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
-
 
2967
					break;
2758
			   PIPE_CONFIG(ADDR_SURF_P4_8x16) |
2968
				case 3:
2759
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
2969
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2760
		tile[3] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2970
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2761
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2971
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
2972
							 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B));
-
 
2973
					break;
2762
			   PIPE_CONFIG(ADDR_SURF_P4_8x16) |
2974
				case 4:
2763
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B));
2975
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2764
		tile[4] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2976
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2765
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2977
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
2978
							 TILE_SPLIT(split_equal_to_row_size));
-
 
2979
					break;
2766
			   PIPE_CONFIG(ADDR_SURF_P4_8x16) |
2980
				case 5:
2767
			   TILE_SPLIT(split_equal_to_row_size));
2981
					gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2768
		tile[5] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2982
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
2983
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
-
 
2984
					break;
2769
			   PIPE_CONFIG(ADDR_SURF_P4_8x16) |
2985
				case 6:
2770
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
2986
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2771
		tile[6] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2987
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2772
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2988
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
2989
							 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
-
 
2990
					break;
2773
			   PIPE_CONFIG(ADDR_SURF_P4_8x16) |
2991
				case 7:
2774
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
2992
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2775
		tile[7] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2993
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2776
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2994
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
2995
							 TILE_SPLIT(split_equal_to_row_size));
-
 
2996
					break;
2777
			   PIPE_CONFIG(ADDR_SURF_P4_8x16) |
2997
				case 8:
2778
			   TILE_SPLIT(split_equal_to_row_size));
2998
					gb_tile_moden = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
-
 
2999
						 PIPE_CONFIG(ADDR_SURF_P4_8x16));
-
 
3000
					break;
2779
		tile[8] = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
3001
				case 9:
2780
			   PIPE_CONFIG(ADDR_SURF_P4_8x16));
3002
					gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2781
		tile[9] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
3003
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
3004
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING));
-
 
3005
					break;
2782
			   PIPE_CONFIG(ADDR_SURF_P4_8x16) |
3006
				case 10:
2783
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING));
3007
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2784
		tile[10] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
3008
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2785
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
3009
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
3010
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3011
					break;
2786
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
3012
				case 11:
2787
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3013
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2788
		tile[11] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
3014
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2789
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
3015
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
3016
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3017
					break;
2790
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
3018
				case 12:
2791
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3019
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2792
		tile[12] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
3020
							 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2793
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
3021
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
3022
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3023
					break;
2794
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
3024
				case 13:
2795
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3025
					gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2796
		tile[13] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
3026
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
3027
							 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
-
 
3028
					break;
2797
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
3029
				case 14:
2798
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
3030
					gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2799
		tile[14] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
3031
							 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2800
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
3032
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
3033
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3034
					break;
2801
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
3035
				case 16:
2802
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3036
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2803
		tile[16] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
3037
							 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2804
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
3038
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
3039
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3040
					break;
2805
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
3041
				case 17:
2806
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3042
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2807
		tile[17] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
3043
							 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2808
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
3044
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
3045
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3046
					break;
2809
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
3047
				case 27:
2810
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3048
					gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2811
		tile[27] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
3049
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
3050
							 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING));
-
 
3051
					break;
2812
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
3052
				case 28:
2813
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING));
3053
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2814
		tile[28] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
3054
							 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2815
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
3055
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
3056
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3057
					break;
2816
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
3058
				case 29:
2817
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3059
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2818
		tile[29] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
3060
							 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2819
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
3061
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
3062
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3063
					break;
2820
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
3064
				case 30:
2821
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3065
					gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2822
		tile[30] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
3066
							 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2823
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
3067
							 PIPE_CONFIG(ADDR_SURF_P4_8x16) |
-
 
3068
							 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3069
					break;
-
 
3070
				default:
-
 
3071
					gb_tile_moden = 0;
-
 
3072
					break;
-
 
3073
				}
-
 
3074
				rdev->config.cik.tile_mode_array[reg_offset] = gb_tile_moden;
2824
			    PIPE_CONFIG(ADDR_SURF_P4_8x16) |
3075
				WREG32(GB_TILE_MODE0 + (reg_offset * 4), gb_tile_moden);
2825
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3076
			}
-
 
3077
		}
-
 
3078
		for (reg_offset = 0; reg_offset < num_secondary_tile_mode_states; reg_offset++) {
-
 
3079
			switch (reg_offset) {
2826
		}
3080
			case 0:
2827
 
3081
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2828
		macrotile[0] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3082
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
2829
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
3083
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3084
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3085
				break;
2830
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3086
			case 1:
2831
				NUM_BANKS(ADDR_SURF_16_BANK));
3087
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2832
		macrotile[1] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3088
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
2833
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
3089
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3090
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3091
				break;
2834
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3092
			case 2:
2835
				NUM_BANKS(ADDR_SURF_16_BANK));
3093
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2836
		macrotile[2] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3094
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2837
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3095
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
3096
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3097
				break;
2838
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
3098
			case 3:
2839
				NUM_BANKS(ADDR_SURF_16_BANK));
3099
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2840
		macrotile[3] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3100
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2841
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3101
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
3102
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3103
				break;
2842
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
3104
			case 4:
2843
				NUM_BANKS(ADDR_SURF_16_BANK));
3105
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2844
		macrotile[4] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3106
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2845
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3107
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
3108
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3109
				break;
2846
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
3110
			case 5:
2847
				NUM_BANKS(ADDR_SURF_16_BANK));
3111
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2848
		macrotile[5] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3112
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2849
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3113
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
3114
						 NUM_BANKS(ADDR_SURF_8_BANK));
-
 
3115
				break;
2850
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
3116
			case 6:
2851
				NUM_BANKS(ADDR_SURF_8_BANK));
3117
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2852
		macrotile[6] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3118
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2853
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3119
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
3120
						 NUM_BANKS(ADDR_SURF_4_BANK));
-
 
3121
				break;
2854
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
3122
			case 8:
2855
				NUM_BANKS(ADDR_SURF_4_BANK));
3123
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
2856
		macrotile[8] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
3124
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_8) |
2857
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_8) |
3125
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3126
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3127
				break;
2858
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3128
			case 9:
2859
				NUM_BANKS(ADDR_SURF_16_BANK));
3129
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
2860
		macrotile[9] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
3130
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
2861
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
3131
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3132
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3133
				break;
2862
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3134
			case 10:
2863
				NUM_BANKS(ADDR_SURF_16_BANK));
3135
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2864
		macrotile[10] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3136
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
2865
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
3137
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3138
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3139
				break;
2866
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3140
			case 11:
2867
				NUM_BANKS(ADDR_SURF_16_BANK));
3141
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2868
		macrotile[11] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3142
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
2869
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
3143
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3144
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3145
				break;
2870
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3146
			case 12:
2871
				NUM_BANKS(ADDR_SURF_16_BANK));
3147
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2872
		macrotile[12] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3148
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2873
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3149
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
3150
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3151
				break;
2874
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
3152
			case 13:
2875
				NUM_BANKS(ADDR_SURF_16_BANK));
3153
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2876
		macrotile[13] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3154
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2877
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3155
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
3156
						 NUM_BANKS(ADDR_SURF_8_BANK));
-
 
3157
				break;
2878
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
3158
			case 14:
2879
				NUM_BANKS(ADDR_SURF_8_BANK));
3159
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2880
		macrotile[14] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3160
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2881
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
-
 
2882
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
-
 
2883
				NUM_BANKS(ADDR_SURF_4_BANK));
-
 
2884
 
-
 
2885
		for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++)
-
 
2886
			WREG32(GB_TILE_MODE0 + (reg_offset * 4), tile[reg_offset]);
3161
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
2887
		for (reg_offset = 0; reg_offset < num_secondary_tile_mode_states; reg_offset++)
3162
						 NUM_BANKS(ADDR_SURF_4_BANK));
-
 
3163
				break;
-
 
3164
			default:
-
 
3165
				gb_tile_moden = 0;
-
 
3166
				break;
-
 
3167
			}
-
 
3168
			rdev->config.cik.macrotile_mode_array[reg_offset] = gb_tile_moden;
2888
			WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), macrotile[reg_offset]);
3169
			WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), gb_tile_moden);
-
 
3170
		}
-
 
3171
	} else if (num_pipe_configs == 2) {
-
 
3172
		for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++) {
2889
		break;
3173
			switch (reg_offset) {
2890
 
3174
			case 0:
2891
	case 2:
3175
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2892
		tile[0] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
3176
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2893
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
3177
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3178
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B));
-
 
3179
				break;
2894
			   PIPE_CONFIG(ADDR_SURF_P2) |
3180
			case 1:
2895
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B));
3181
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2896
		tile[1] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
3182
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2897
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
3183
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3184
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B));
-
 
3185
				break;
2898
			   PIPE_CONFIG(ADDR_SURF_P2) |
3186
			case 2:
2899
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B));
3187
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2900
		tile[2] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
3188
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2901
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
3189
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3190
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
-
 
3191
				break;
2902
			   PIPE_CONFIG(ADDR_SURF_P2) |
3192
			case 3:
2903
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
3193
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2904
		tile[3] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
3194
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2905
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
3195
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3196
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B));
-
 
3197
				break;
2906
			   PIPE_CONFIG(ADDR_SURF_P2) |
3198
			case 4:
2907
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B));
3199
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2908
		tile[4] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
3200
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2909
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
3201
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3202
						 TILE_SPLIT(split_equal_to_row_size));
-
 
3203
				break;
2910
			   PIPE_CONFIG(ADDR_SURF_P2) |
3204
			case 5:
2911
			   TILE_SPLIT(split_equal_to_row_size));
3205
				gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2912
		tile[5] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
3206
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3207
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
-
 
3208
				break;
2913
			   PIPE_CONFIG(ADDR_SURF_P2) |
3209
			case 6:
2914
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
3210
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2915
		tile[6] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
3211
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2916
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
3212
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3213
						 TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
-
 
3214
				break;
2917
			   PIPE_CONFIG(ADDR_SURF_P2) |
3215
			case 7:
2918
			   TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B));
3216
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2919
		tile[7] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
3217
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
2920
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
3218
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3219
						 TILE_SPLIT(split_equal_to_row_size));
-
 
3220
				break;
2921
			   PIPE_CONFIG(ADDR_SURF_P2) |
3221
			case 8:
2922
			   TILE_SPLIT(split_equal_to_row_size));
3222
				gb_tile_moden = ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
-
 
3223
						PIPE_CONFIG(ADDR_SURF_P2);
-
 
3224
				break;
2923
		tile[8] = ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
3225
			case 9:
2924
			   PIPE_CONFIG(ADDR_SURF_P2);
3226
				gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2925
		tile[9] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
3227
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
-
 
3228
						 PIPE_CONFIG(ADDR_SURF_P2));
-
 
3229
				break;
2926
			   MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
3230
			case 10:
2927
			   PIPE_CONFIG(ADDR_SURF_P2));
3231
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2928
		tile[10] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
3232
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2929
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
3233
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3234
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3235
				break;
2930
			    PIPE_CONFIG(ADDR_SURF_P2) |
3236
			case 11:
2931
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3237
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2932
		tile[11] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
3238
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2933
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
3239
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3240
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3241
				break;
2934
			    PIPE_CONFIG(ADDR_SURF_P2) |
3242
			case 12:
2935
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3243
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2936
		tile[12] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
3244
						 MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
2937
			    MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
3245
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3246
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3247
				break;
2938
			    PIPE_CONFIG(ADDR_SURF_P2) |
3248
			case 13:
2939
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3249
				gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2940
		tile[13] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
3250
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3251
						 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
-
 
3252
				break;
2941
			    PIPE_CONFIG(ADDR_SURF_P2) |
3253
			case 14:
2942
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
3254
				gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
2943
		tile[14] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
3255
						 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2944
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
3256
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3257
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3258
				break;
2945
			    PIPE_CONFIG(ADDR_SURF_P2) |
3259
			case 16:
2946
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3260
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2947
		tile[16] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
3261
						 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2948
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
3262
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3263
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3264
				break;
2949
			    PIPE_CONFIG(ADDR_SURF_P2) |
3265
			case 17:
2950
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3266
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2951
		tile[17] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
3267
						 MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
2952
			    MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
3268
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3269
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3270
				break;
2953
			    PIPE_CONFIG(ADDR_SURF_P2) |
3271
			case 27:
2954
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3272
				gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
2955
		tile[27] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
3273
						 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
-
 
3274
						 PIPE_CONFIG(ADDR_SURF_P2));
-
 
3275
				break;
2956
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
3276
			case 28:
2957
			    PIPE_CONFIG(ADDR_SURF_P2));
3277
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2958
		tile[28] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
3278
						 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2959
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
3279
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3280
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3281
				break;
2960
			    PIPE_CONFIG(ADDR_SURF_P2) |
3282
			case 29:
2961
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3283
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
2962
		tile[29] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
3284
						 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2963
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
3285
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3286
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3287
				break;
2964
			    PIPE_CONFIG(ADDR_SURF_P2) |
3288
			case 30:
2965
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3289
				gb_tile_moden = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
2966
		tile[30] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
3290
						 MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
2967
			    MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
3291
						 PIPE_CONFIG(ADDR_SURF_P2) |
-
 
3292
						 SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
-
 
3293
				break;
-
 
3294
			default:
-
 
3295
				gb_tile_moden = 0;
-
 
3296
				break;
-
 
3297
			}
-
 
3298
			rdev->config.cik.tile_mode_array[reg_offset] = gb_tile_moden;
2968
			    PIPE_CONFIG(ADDR_SURF_P2) |
3299
			WREG32(GB_TILE_MODE0 + (reg_offset * 4), gb_tile_moden);
-
 
3300
		}
-
 
3301
		for (reg_offset = 0; reg_offset < num_secondary_tile_mode_states; reg_offset++) {
-
 
3302
			switch (reg_offset) {
2969
			    SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
3303
			case 0:
2970
 
3304
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
2971
		macrotile[0] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
3305
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
2972
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
3306
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3307
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3308
				break;
2973
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3309
			case 1:
2974
				NUM_BANKS(ADDR_SURF_16_BANK));
3310
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
2975
		macrotile[1] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
3311
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
2976
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
3312
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3313
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3314
				break;
2977
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3315
			case 2:
2978
				NUM_BANKS(ADDR_SURF_16_BANK));
3316
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2979
		macrotile[2] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3317
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
2980
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
3318
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3319
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3320
				break;
2981
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3321
			case 3:
2982
				NUM_BANKS(ADDR_SURF_16_BANK));
3322
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2983
		macrotile[3] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3323
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2984
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3324
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3325
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3326
				break;
2985
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3327
			case 4:
2986
				NUM_BANKS(ADDR_SURF_16_BANK));
3328
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2987
		macrotile[4] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3329
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2988
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3330
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3331
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3332
				break;
2989
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3333
			case 5:
2990
				NUM_BANKS(ADDR_SURF_16_BANK));
3334
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2991
		macrotile[5] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3335
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2992
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3336
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3337
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3338
				break;
2993
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3339
			case 6:
2994
				NUM_BANKS(ADDR_SURF_16_BANK));
3340
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
2995
		macrotile[6] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3341
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
2996
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3342
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
3343
						 NUM_BANKS(ADDR_SURF_8_BANK));
-
 
3344
				break;
2997
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
3345
			case 8:
2998
				NUM_BANKS(ADDR_SURF_8_BANK));
3346
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_4) |
2999
		macrotile[8] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_4) |
3347
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_8) |
3000
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_8) |
3348
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3349
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3350
				break;
3001
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3351
			case 9:
3002
				NUM_BANKS(ADDR_SURF_16_BANK));
3352
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_4) |
3003
		macrotile[9] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_4) |
3353
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
3004
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
3354
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3355
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3356
				break;
3005
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3357
			case 10:
3006
				NUM_BANKS(ADDR_SURF_16_BANK));
3358
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
3007
		macrotile[10] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
3359
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
3008
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
3360
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3361
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3362
				break;
3009
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3363
			case 11:
3010
				NUM_BANKS(ADDR_SURF_16_BANK));
3364
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
3011
		macrotile[11] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
3365
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
3012
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
3366
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3367
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3368
				break;
3013
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3369
			case 12:
3014
				NUM_BANKS(ADDR_SURF_16_BANK));
3370
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3015
		macrotile[12] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3371
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
3016
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
3372
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3373
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3374
				break;
3017
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3375
			case 13:
3018
				NUM_BANKS(ADDR_SURF_16_BANK));
3376
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3019
		macrotile[13] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3377
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3020
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3378
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
-
 
3379
						 NUM_BANKS(ADDR_SURF_16_BANK));
-
 
3380
				break;
3021
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
3381
			case 14:
3022
				NUM_BANKS(ADDR_SURF_16_BANK));
3382
				gb_tile_moden = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3023
		macrotile[14] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
3383
						 BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
3024
				BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
-
 
3025
				MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
-
 
3026
				NUM_BANKS(ADDR_SURF_8_BANK));
-
 
3027
 
-
 
3028
		for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++)
-
 
3029
			WREG32(GB_TILE_MODE0 + (reg_offset * 4), tile[reg_offset]);
3384
						 MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
3030
		for (reg_offset = 0; reg_offset < num_secondary_tile_mode_states; reg_offset++)
-
 
3031
			WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), macrotile[reg_offset]);
3385
						 NUM_BANKS(ADDR_SURF_8_BANK));
3032
		break;
3386
				break;
-
 
3387
			default:
-
 
3388
				gb_tile_moden = 0;
-
 
3389
				break;
-
 
3390
			}
-
 
3391
			rdev->config.cik.macrotile_mode_array[reg_offset] = gb_tile_moden;
-
 
3392
			WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), gb_tile_moden);
-
 
3393
		}
3033
 
3394
	} else
3034
	default:
-
 
3035
		DRM_ERROR("unknown num pipe config: 0x%x\n", num_pipe_configs);
Line 3395... Line 3036...
3395
		DRM_ERROR("unknown num pipe config: 0x%x\n", num_pipe_configs);
3036
	}
3396
}
3037
}
3397
 
3038
 
3398
/**
3039
/**
Line 4217... Line 3858...
4217
		radeon_scratch_free(rdev, scratch);
3858
		radeon_scratch_free(rdev, scratch);
4218
		radeon_ib_free(rdev, &ib);
3859
		radeon_ib_free(rdev, &ib);
4219
		DRM_ERROR("radeon: failed to schedule ib (%d).\n", r);
3860
		DRM_ERROR("radeon: failed to schedule ib (%d).\n", r);
4220
		return r;
3861
		return r;
4221
	}
3862
	}
4222
	r = radeon_fence_wait(ib.fence, false);
3863
	r = radeon_fence_wait_timeout(ib.fence, false, usecs_to_jiffies(
-
 
3864
		RADEON_USEC_IB_TEST_TIMEOUT));
4223
	if (r) {
3865
	if (r < 0) {
4224
		DRM_ERROR("radeon: fence wait failed (%d).\n", r);
3866
		DRM_ERROR("radeon: fence wait failed (%d).\n", r);
4225
		radeon_scratch_free(rdev, scratch);
3867
		radeon_scratch_free(rdev, scratch);
4226
		radeon_ib_free(rdev, &ib);
3868
		radeon_ib_free(rdev, &ib);
4227
		return r;
3869
		return r;
-
 
3870
	} else if (r == 0) {
-
 
3871
		DRM_ERROR("radeon: fence wait timed out.\n");
-
 
3872
		radeon_scratch_free(rdev, scratch);
-
 
3873
		radeon_ib_free(rdev, &ib);
-
 
3874
		return -ETIMEDOUT;
4228
	}
3875
	}
-
 
3876
	r = 0;
4229
	for (i = 0; i < rdev->usec_timeout; i++) {
3877
	for (i = 0; i < rdev->usec_timeout; i++) {
4230
		tmp = RREG32(scratch);
3878
		tmp = RREG32(scratch);
4231
		if (tmp == 0xDEADBEEF)
3879
		if (tmp == 0xDEADBEEF)
4232
			break;
3880
			break;
4233
		DRM_UDELAY(1);
3881
		DRM_UDELAY(1);