diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/r600_cs.c | 70 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/r600d.h | 49 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/reg_srcs/r600 | 53 |
3 files changed, 112 insertions, 60 deletions
diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c index cd2c63bce501..c39c1bc13016 100644 --- a/drivers/gpu/drm/radeon/r600_cs.c +++ b/drivers/gpu/drm/radeon/r600_cs.c | |||
| @@ -45,6 +45,7 @@ struct r600_cs_track { | |||
| 45 | u32 nbanks; | 45 | u32 nbanks; |
| 46 | u32 npipes; | 46 | u32 npipes; |
| 47 | /* value we track */ | 47 | /* value we track */ |
| 48 | u32 sq_config; | ||
| 48 | u32 nsamples; | 49 | u32 nsamples; |
| 49 | u32 cb_color_base_last[8]; | 50 | u32 cb_color_base_last[8]; |
| 50 | struct radeon_bo *cb_color_bo[8]; | 51 | struct radeon_bo *cb_color_bo[8]; |
| @@ -141,6 +142,8 @@ static void r600_cs_track_init(struct r600_cs_track *track) | |||
| 141 | { | 142 | { |
| 142 | int i; | 143 | int i; |
| 143 | 144 | ||
| 145 | /* assume DX9 mode */ | ||
| 146 | track->sq_config = DX9_CONSTS; | ||
| 144 | for (i = 0; i < 8; i++) { | 147 | for (i = 0; i < 8; i++) { |
| 145 | track->cb_color_base_last[i] = 0; | 148 | track->cb_color_base_last[i] = 0; |
| 146 | track->cb_color_size[i] = 0; | 149 | track->cb_color_size[i] = 0; |
| @@ -715,6 +718,9 @@ static inline int r600_cs_check_reg(struct radeon_cs_parser *p, u32 reg, u32 idx | |||
| 715 | tmp =radeon_get_ib_value(p, idx); | 718 | tmp =radeon_get_ib_value(p, idx); |
| 716 | ib[idx] = 0; | 719 | ib[idx] = 0; |
| 717 | break; | 720 | break; |
| 721 | case SQ_CONFIG: | ||
| 722 | track->sq_config = radeon_get_ib_value(p, idx); | ||
| 723 | break; | ||
| 718 | case R_028800_DB_DEPTH_CONTROL: | 724 | case R_028800_DB_DEPTH_CONTROL: |
| 719 | track->db_depth_control = radeon_get_ib_value(p, idx); | 725 | track->db_depth_control = radeon_get_ib_value(p, idx); |
| 720 | break; | 726 | break; |
| @@ -869,6 +875,54 @@ static inline int r600_cs_check_reg(struct radeon_cs_parser *p, u32 reg, u32 idx | |||
| 869 | case SQ_PGM_START_VS: | 875 | case SQ_PGM_START_VS: |
| 870 | case SQ_PGM_START_GS: | 876 | case SQ_PGM_START_GS: |
| 871 | case SQ_PGM_START_PS: | 877 | case SQ_PGM_START_PS: |
| 878 | case SQ_ALU_CONST_CACHE_GS_0: | ||
| 879 | case SQ_ALU_CONST_CACHE_GS_1: | ||
| 880 | case SQ_ALU_CONST_CACHE_GS_2: | ||
| 881 | case SQ_ALU_CONST_CACHE_GS_3: | ||
| 882 | case SQ_ALU_CONST_CACHE_GS_4: | ||
| 883 | case SQ_ALU_CONST_CACHE_GS_5: | ||
| 884 | case SQ_ALU_CONST_CACHE_GS_6: | ||
| 885 | case SQ_ALU_CONST_CACHE_GS_7: | ||
| 886 | case SQ_ALU_CONST_CACHE_GS_8: | ||
| 887 | case SQ_ALU_CONST_CACHE_GS_9: | ||
| 888 | case SQ_ALU_CONST_CACHE_GS_10: | ||
| 889 | case SQ_ALU_CONST_CACHE_GS_11: | ||
| 890 | case SQ_ALU_CONST_CACHE_GS_12: | ||
| 891 | case SQ_ALU_CONST_CACHE_GS_13: | ||
| 892 | case SQ_ALU_CONST_CACHE_GS_14: | ||
| 893 | case SQ_ALU_CONST_CACHE_GS_15: | ||
| 894 | case SQ_ALU_CONST_CACHE_PS_0: | ||
| 895 | case SQ_ALU_CONST_CACHE_PS_1: | ||
| 896 | case SQ_ALU_CONST_CACHE_PS_2: | ||
| 897 | case SQ_ALU_CONST_CACHE_PS_3: | ||
| 898 | case SQ_ALU_CONST_CACHE_PS_4: | ||
| 899 | case SQ_ALU_CONST_CACHE_PS_5: | ||
| 900 | case SQ_ALU_CONST_CACHE_PS_6: | ||
| 901 | case SQ_ALU_CONST_CACHE_PS_7: | ||
| 902 | case SQ_ALU_CONST_CACHE_PS_8: | ||
| 903 | case SQ_ALU_CONST_CACHE_PS_9: | ||
| 904 | case SQ_ALU_CONST_CACHE_PS_10: | ||
| 905 | case SQ_ALU_CONST_CACHE_PS_11: | ||
| 906 | case SQ_ALU_CONST_CACHE_PS_12: | ||
| 907 | case SQ_ALU_CONST_CACHE_PS_13: | ||
| 908 | case SQ_ALU_CONST_CACHE_PS_14: | ||
| 909 | case SQ_ALU_CONST_CACHE_PS_15: | ||
| 910 | case SQ_ALU_CONST_CACHE_VS_0: | ||
| 911 | case SQ_ALU_CONST_CACHE_VS_1: | ||
| 912 | case SQ_ALU_CONST_CACHE_VS_2: | ||
| 913 | case SQ_ALU_CONST_CACHE_VS_3: | ||
| 914 | case SQ_ALU_CONST_CACHE_VS_4: | ||
| 915 | case SQ_ALU_CONST_CACHE_VS_5: | ||
| 916 | case SQ_ALU_CONST_CACHE_VS_6: | ||
| 917 | case SQ_ALU_CONST_CACHE_VS_7: | ||
| 918 | case SQ_ALU_CONST_CACHE_VS_8: | ||
| 919 | case SQ_ALU_CONST_CACHE_VS_9: | ||
| 920 | case SQ_ALU_CONST_CACHE_VS_10: | ||
| 921 | case SQ_ALU_CONST_CACHE_VS_11: | ||
| 922 | case SQ_ALU_CONST_CACHE_VS_12: | ||
| 923 | case SQ_ALU_CONST_CACHE_VS_13: | ||
| 924 | case SQ_ALU_CONST_CACHE_VS_14: | ||
| 925 | case SQ_ALU_CONST_CACHE_VS_15: | ||
| 872 | r = r600_cs_packet_next_reloc(p, &reloc); | 926 | r = r600_cs_packet_next_reloc(p, &reloc); |
| 873 | if (r) { | 927 | if (r) { |
| 874 | dev_warn(p->dev, "bad SET_CONTEXT_REG " | 928 | dev_warn(p->dev, "bad SET_CONTEXT_REG " |
| @@ -1226,13 +1280,15 @@ static int r600_packet3_check(struct radeon_cs_parser *p, | |||
| 1226 | } | 1280 | } |
| 1227 | break; | 1281 | break; |
| 1228 | case PACKET3_SET_ALU_CONST: | 1282 | case PACKET3_SET_ALU_CONST: |
| 1229 | start_reg = (idx_value << 2) + PACKET3_SET_ALU_CONST_OFFSET; | 1283 | if (track->sq_config & DX9_CONSTS) { |
| 1230 | end_reg = 4 * pkt->count + start_reg - 4; | 1284 | start_reg = (idx_value << 2) + PACKET3_SET_ALU_CONST_OFFSET; |
| 1231 | if ((start_reg < PACKET3_SET_ALU_CONST_OFFSET) || | 1285 | end_reg = 4 * pkt->count + start_reg - 4; |
| 1232 | (start_reg >= PACKET3_SET_ALU_CONST_END) || | 1286 | if ((start_reg < PACKET3_SET_ALU_CONST_OFFSET) || |
| 1233 | (end_reg >= PACKET3_SET_ALU_CONST_END)) { | 1287 | (start_reg >= PACKET3_SET_ALU_CONST_END) || |
| 1234 | DRM_ERROR("bad SET_ALU_CONST\n"); | 1288 | (end_reg >= PACKET3_SET_ALU_CONST_END)) { |
| 1235 | return -EINVAL; | 1289 | DRM_ERROR("bad SET_ALU_CONST\n"); |
| 1290 | return -EINVAL; | ||
| 1291 | } | ||
| 1236 | } | 1292 | } |
| 1237 | break; | 1293 | break; |
| 1238 | case PACKET3_SET_BOOL_CONST: | 1294 | case PACKET3_SET_BOOL_CONST: |
diff --git a/drivers/gpu/drm/radeon/r600d.h b/drivers/gpu/drm/radeon/r600d.h index 5b2e4d442823..59c1f8793e60 100644 --- a/drivers/gpu/drm/radeon/r600d.h +++ b/drivers/gpu/drm/radeon/r600d.h | |||
| @@ -77,6 +77,55 @@ | |||
| 77 | #define CB_COLOR0_FRAG 0x280e0 | 77 | #define CB_COLOR0_FRAG 0x280e0 |
| 78 | #define CB_COLOR0_MASK 0x28100 | 78 | #define CB_COLOR0_MASK 0x28100 |
| 79 | 79 | ||
| 80 | #define SQ_ALU_CONST_CACHE_PS_0 0x28940 | ||
| 81 | #define SQ_ALU_CONST_CACHE_PS_1 0x28944 | ||
| 82 | #define SQ_ALU_CONST_CACHE_PS_2 0x28948 | ||
| 83 | #define SQ_ALU_CONST_CACHE_PS_3 0x2894c | ||
| 84 | #define SQ_ALU_CONST_CACHE_PS_4 0x28950 | ||
| 85 | #define SQ_ALU_CONST_CACHE_PS_5 0x28954 | ||
| 86 | #define SQ_ALU_CONST_CACHE_PS_6 0x28958 | ||
| 87 | #define SQ_ALU_CONST_CACHE_PS_7 0x2895c | ||
| 88 | #define SQ_ALU_CONST_CACHE_PS_8 0x28960 | ||
| 89 | #define SQ_ALU_CONST_CACHE_PS_9 0x28964 | ||
| 90 | #define SQ_ALU_CONST_CACHE_PS_10 0x28968 | ||
| 91 | #define SQ_ALU_CONST_CACHE_PS_11 0x2896c | ||
| 92 | #define SQ_ALU_CONST_CACHE_PS_12 0x28970 | ||
| 93 | #define SQ_ALU_CONST_CACHE_PS_13 0x28974 | ||
| 94 | #define SQ_ALU_CONST_CACHE_PS_14 0x28978 | ||
| 95 | #define SQ_ALU_CONST_CACHE_PS_15 0x2897c | ||
| 96 | #define SQ_ALU_CONST_CACHE_VS_0 0x28980 | ||
| 97 | #define SQ_ALU_CONST_CACHE_VS_1 0x28984 | ||
| 98 | #define SQ_ALU_CONST_CACHE_VS_2 0x28988 | ||
| 99 | #define SQ_ALU_CONST_CACHE_VS_3 0x2898c | ||
| 100 | #define SQ_ALU_CONST_CACHE_VS_4 0x28990 | ||
| 101 | #define SQ_ALU_CONST_CACHE_VS_5 0x28994 | ||
| 102 | #define SQ_ALU_CONST_CACHE_VS_6 0x28998 | ||
| 103 | #define SQ_ALU_CONST_CACHE_VS_7 0x2899c | ||
| 104 | #define SQ_ALU_CONST_CACHE_VS_8 0x289a0 | ||
| 105 | #define SQ_ALU_CONST_CACHE_VS_9 0x289a4 | ||
| 106 | #define SQ_ALU_CONST_CACHE_VS_10 0x289a8 | ||
| 107 | #define SQ_ALU_CONST_CACHE_VS_11 0x289ac | ||
| 108 | #define SQ_ALU_CONST_CACHE_VS_12 0x289b0 | ||
| 109 | #define SQ_ALU_CONST_CACHE_VS_13 0x289b4 | ||
| 110 | #define SQ_ALU_CONST_CACHE_VS_14 0x289b8 | ||
| 111 | #define SQ_ALU_CONST_CACHE_VS_15 0x289bc | ||
| 112 | #define SQ_ALU_CONST_CACHE_GS_0 0x289c0 | ||
| 113 | #define SQ_ALU_CONST_CACHE_GS_1 0x289c4 | ||
| 114 | #define SQ_ALU_CONST_CACHE_GS_2 0x289c8 | ||
| 115 | #define SQ_ALU_CONST_CACHE_GS_3 0x289cc | ||
| 116 | #define SQ_ALU_CONST_CACHE_GS_4 0x289d0 | ||
| 117 | #define SQ_ALU_CONST_CACHE_GS_5 0x289d4 | ||
| 118 | #define SQ_ALU_CONST_CACHE_GS_6 0x289d8 | ||
| 119 | #define SQ_ALU_CONST_CACHE_GS_7 0x289dc | ||
| 120 | #define SQ_ALU_CONST_CACHE_GS_8 0x289e0 | ||
| 121 | #define SQ_ALU_CONST_CACHE_GS_9 0x289e4 | ||
| 122 | #define SQ_ALU_CONST_CACHE_GS_10 0x289e8 | ||
| 123 | #define SQ_ALU_CONST_CACHE_GS_11 0x289ec | ||
| 124 | #define SQ_ALU_CONST_CACHE_GS_12 0x289f0 | ||
| 125 | #define SQ_ALU_CONST_CACHE_GS_13 0x289f4 | ||
| 126 | #define SQ_ALU_CONST_CACHE_GS_14 0x289f8 | ||
| 127 | #define SQ_ALU_CONST_CACHE_GS_15 0x289fc | ||
| 128 | |||
| 80 | #define CONFIG_MEMSIZE 0x5428 | 129 | #define CONFIG_MEMSIZE 0x5428 |
| 81 | #define CONFIG_CNTL 0x5424 | 130 | #define CONFIG_CNTL 0x5424 |
| 82 | #define CP_STAT 0x8680 | 131 | #define CP_STAT 0x8680 |
diff --git a/drivers/gpu/drm/radeon/reg_srcs/r600 b/drivers/gpu/drm/radeon/reg_srcs/r600 index 1d3340032cad..bc062f9a847f 100644 --- a/drivers/gpu/drm/radeon/reg_srcs/r600 +++ b/drivers/gpu/drm/radeon/reg_srcs/r600 | |||
| @@ -280,7 +280,6 @@ r600 0x9400 | |||
| 280 | 0x00028E00 PA_SU_POLY_OFFSET_FRONT_SCALE | 280 | 0x00028E00 PA_SU_POLY_OFFSET_FRONT_SCALE |
| 281 | 0x00028814 PA_SU_SC_MODE_CNTL | 281 | 0x00028814 PA_SU_SC_MODE_CNTL |
| 282 | 0x00028C08 PA_SU_VTX_CNTL | 282 | 0x00028C08 PA_SU_VTX_CNTL |
| 283 | 0x00008C00 SQ_CONFIG | ||
| 284 | 0x00008C04 SQ_GPR_RESOURCE_MGMT_1 | 283 | 0x00008C04 SQ_GPR_RESOURCE_MGMT_1 |
| 285 | 0x00008C08 SQ_GPR_RESOURCE_MGMT_2 | 284 | 0x00008C08 SQ_GPR_RESOURCE_MGMT_2 |
| 286 | 0x00008C10 SQ_STACK_RESOURCE_MGMT_1 | 285 | 0x00008C10 SQ_STACK_RESOURCE_MGMT_1 |
| @@ -380,54 +379,6 @@ r600 0x9400 | |||
| 380 | 0x000281B4 SQ_ALU_CONST_BUFFER_SIZE_VS_13 | 379 | 0x000281B4 SQ_ALU_CONST_BUFFER_SIZE_VS_13 |
| 381 | 0x000281B8 SQ_ALU_CONST_BUFFER_SIZE_VS_14 | 380 | 0x000281B8 SQ_ALU_CONST_BUFFER_SIZE_VS_14 |
| 382 | 0x000281BC SQ_ALU_CONST_BUFFER_SIZE_VS_15 | 381 | 0x000281BC SQ_ALU_CONST_BUFFER_SIZE_VS_15 |
| 383 | 0x000289C0 SQ_ALU_CONST_CACHE_GS_0 | ||
| 384 | 0x000289C4 SQ_ALU_CONST_CACHE_GS_1 | ||
| 385 | 0x000289C8 SQ_ALU_CONST_CACHE_GS_2 | ||
| 386 | 0x000289CC SQ_ALU_CONST_CACHE_GS_3 | ||
| 387 | 0x000289D0 SQ_ALU_CONST_CACHE_GS_4 | ||
| 388 | 0x000289D4 SQ_ALU_CONST_CACHE_GS_5 | ||
| 389 | 0x000289D8 SQ_ALU_CONST_CACHE_GS_6 | ||
| 390 | 0x000289DC SQ_ALU_CONST_CACHE_GS_7 | ||
| 391 | 0x000289E0 SQ_ALU_CONST_CACHE_GS_8 | ||
| 392 | 0x000289E4 SQ_ALU_CONST_CACHE_GS_9 | ||
| 393 | 0x000289E8 SQ_ALU_CONST_CACHE_GS_10 | ||
| 394 | 0x000289EC SQ_ALU_CONST_CACHE_GS_11 | ||
| 395 | 0x000289F0 SQ_ALU_CONST_CACHE_GS_12 | ||
| 396 | 0x000289F4 SQ_ALU_CONST_CACHE_GS_13 | ||
| 397 | 0x000289F8 SQ_ALU_CONST_CACHE_GS_14 | ||
| 398 | 0x000289FC SQ_ALU_CONST_CACHE_GS_15 | ||
| 399 | 0x00028940 SQ_ALU_CONST_CACHE_PS_0 | ||
| 400 | 0x00028944 SQ_ALU_CONST_CACHE_PS_1 | ||
| 401 | 0x00028948 SQ_ALU_CONST_CACHE_PS_2 | ||
| 402 | 0x0002894C SQ_ALU_CONST_CACHE_PS_3 | ||
| 403 | 0x00028950 SQ_ALU_CONST_CACHE_PS_4 | ||
| 404 | 0x00028954 SQ_ALU_CONST_CACHE_PS_5 | ||
| 405 | 0x00028958 SQ_ALU_CONST_CACHE_PS_6 | ||
| 406 | 0x0002895C SQ_ALU_CONST_CACHE_PS_7 | ||
| 407 | 0x00028960 SQ_ALU_CONST_CACHE_PS_8 | ||
| 408 | 0x00028964 SQ_ALU_CONST_CACHE_PS_9 | ||
| 409 | 0x00028968 SQ_ALU_CONST_CACHE_PS_10 | ||
| 410 | 0x0002896C SQ_ALU_CONST_CACHE_PS_11 | ||
| 411 | 0x00028970 SQ_ALU_CONST_CACHE_PS_12 | ||
| 412 | 0x00028974 SQ_ALU_CONST_CACHE_PS_13 | ||
| 413 | 0x00028978 SQ_ALU_CONST_CACHE_PS_14 | ||
| 414 | 0x0002897C SQ_ALU_CONST_CACHE_PS_15 | ||
| 415 | 0x00028980 SQ_ALU_CONST_CACHE_VS_0 | ||
| 416 | 0x00028984 SQ_ALU_CONST_CACHE_VS_1 | ||
| 417 | 0x00028988 SQ_ALU_CONST_CACHE_VS_2 | ||
| 418 | 0x0002898C SQ_ALU_CONST_CACHE_VS_3 | ||
| 419 | 0x00028990 SQ_ALU_CONST_CACHE_VS_4 | ||
| 420 | 0x00028994 SQ_ALU_CONST_CACHE_VS_5 | ||
| 421 | 0x00028998 SQ_ALU_CONST_CACHE_VS_6 | ||
| 422 | 0x0002899C SQ_ALU_CONST_CACHE_VS_7 | ||
| 423 | 0x000289A0 SQ_ALU_CONST_CACHE_VS_8 | ||
| 424 | 0x000289A4 SQ_ALU_CONST_CACHE_VS_9 | ||
| 425 | 0x000289A8 SQ_ALU_CONST_CACHE_VS_10 | ||
| 426 | 0x000289AC SQ_ALU_CONST_CACHE_VS_11 | ||
| 427 | 0x000289B0 SQ_ALU_CONST_CACHE_VS_12 | ||
| 428 | 0x000289B4 SQ_ALU_CONST_CACHE_VS_13 | ||
| 429 | 0x000289B8 SQ_ALU_CONST_CACHE_VS_14 | ||
| 430 | 0x000289BC SQ_ALU_CONST_CACHE_VS_15 | ||
| 431 | 0x000288D8 SQ_PGM_CF_OFFSET_ES | 382 | 0x000288D8 SQ_PGM_CF_OFFSET_ES |
| 432 | 0x000288DC SQ_PGM_CF_OFFSET_FS | 383 | 0x000288DC SQ_PGM_CF_OFFSET_FS |
| 433 | 0x000288D4 SQ_PGM_CF_OFFSET_GS | 384 | 0x000288D4 SQ_PGM_CF_OFFSET_GS |
| @@ -497,9 +448,7 @@ r600 0x9400 | |||
| 497 | 0x0000A020 SMX_DC_CTL0 | 448 | 0x0000A020 SMX_DC_CTL0 |
| 498 | 0x0000A024 SMX_DC_CTL1 | 449 | 0x0000A024 SMX_DC_CTL1 |
| 499 | 0x0000A028 SMX_DC_CTL2 | 450 | 0x0000A028 SMX_DC_CTL2 |
| 500 | 0x00009608 TC_CNTL | ||
| 501 | 0x00009604 TC_INVALIDATE | 451 | 0x00009604 TC_INVALIDATE |
| 502 | 0x00009490 TD_CNTL | ||
| 503 | 0x00009400 TD_FILTER4 | 452 | 0x00009400 TD_FILTER4 |
| 504 | 0x00009404 TD_FILTER4_1 | 453 | 0x00009404 TD_FILTER4_1 |
| 505 | 0x00009408 TD_FILTER4_2 | 454 | 0x00009408 TD_FILTER4_2 |
| @@ -829,6 +778,4 @@ r600 0x9400 | |||
| 829 | 0x00009838 DB_WATERMARKS | 778 | 0x00009838 DB_WATERMARKS |
| 830 | 0x00028D28 DB_SRESULTS_COMPARE_STATE0 | 779 | 0x00028D28 DB_SRESULTS_COMPARE_STATE0 |
| 831 | 0x00028D44 DB_ALPHA_TO_MASK | 780 | 0x00028D44 DB_ALPHA_TO_MASK |
| 832 | 0x00009504 TA_CNTL | ||
| 833 | 0x00009700 VC_CNTL | 781 | 0x00009700 VC_CNTL |
| 834 | 0x00009718 VC_CONFIG | ||
