History

drm/radeon/cik: Add macrotile mode array query

This is required to properly calculate the tiling parameters in userspace.

Michel Dänzer committed 12 years ago

Commit 32f79a81 parent 1ddce275 files · +17 −1Browse files

Unified · Split

5 files
  1. drivers/gpu/drm/radeon/cik.c +3 −0
  2. drivers/gpu/drm/radeon/radeon.h +1 −0
  3. drivers/gpu/drm/radeon/radeon_drv.c +2 −1
  4. drivers/gpu/drm/radeon/radeon_kms.c +9 −0
  5. include/uapi/drm/radeon_drm.h +2 −0
drivers/gpu/drm/radeon/cik.c+3−0
@@ -2427,6 +2427,7 @@ static void cik_tiling_mode_table_init(struct radeon_device *rdev) · 2426 unmodified lines
24272427 gb_tile_moden = 0;
24282428 break;
24292429 }
2430+ rdev->config.cik.macrotile_mode_array[reg_offset] = gb_tile_moden;
24302431 WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), gb_tile_moden);
24312432 }
24322433 } else if (num_pipe_configs == 4) {
@@ -2773,6 +2774,7 @@ static void cik_tiling_mode_table_init(struct radeon_device *rdev) · 340 unmodified lines
27732774 gb_tile_moden = 0;
27742775 break;
27752776 }
2777+ rdev->config.cik.macrotile_mode_array[reg_offset] = gb_tile_moden;
27762778 WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), gb_tile_moden);
27772779 }
27782780 } else if (num_pipe_configs == 2) {
@@ -2990,6 +2992,7 @@ static void cik_tiling_mode_table_init(struct radeon_device *rdev) · 211 unmodified lines
29902992 gb_tile_moden = 0;
29912993 break;
29922994 }
2995+ rdev->config.cik.macrotile_mode_array[reg_offset] = gb_tile_moden;
29932996 WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), gb_tile_moden);
29942997 }
29952998 } else
drivers/gpu/drm/radeon/radeon.h+1−0
@@ -1982,6 +1982,7 @@ struct cik_asic { · 1981 unmodified lines
19821982
19831983 unsigned tile_config;
19841984 uint32_t tile_mode_array[32];
1985+ uint32_t macrotile_mode_array[16];
19851986 };
19861987
19871988 union radeon_asic_config {
drivers/gpu/drm/radeon/radeon_drv.c+2−1
@@ -76,9 +76,10 @@ · 75 unmodified lines
7676 * 2.32.0 - new info request for rings working
7777 * 2.33.0 - Add SI tiling mode array query
7878 * 2.34.0 - Add CIK tiling mode array query
79+ * 2.35.0 - Add CIK macrotile mode array query
7980 */
8081 #define KMS_DRIVER_MAJOR 2
81−#define KMS_DRIVER_MINOR 34
82+#define KMS_DRIVER_MINOR 35
8283 #define KMS_DRIVER_PATCHLEVEL 0
8384 int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags);
8485 int radeon_driver_unload_kms(struct drm_device *dev);
drivers/gpu/drm/radeon/radeon_kms.c+9−0
@@ -449,6 +449,15 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) · 448 unmodified lines
449449 return -EINVAL;
450450 }
451451 break;
452+ case RADEON_INFO_CIK_MACROTILE_MODE_ARRAY:
453+ if (rdev->family >= CHIP_BONAIRE) {
454+ value = rdev->config.cik.macrotile_mode_array;
455+ value_size = sizeof(uint32_t)*16;
456+ } else {
457+ DRM_DEBUG_KMS("macrotile mode array is cik+ only!\n");
458+ return -EINVAL;
459+ }
460+ break;
452461 case RADEON_INFO_SI_CP_DMA_COMPUTE:
453462 *value = 1;
454463 break;
include/uapi/drm/radeon_drm.h+2−0
@@ -981,6 +981,8 @@ struct drm_radeon_cs { · 980 unmodified lines
981981 #define RADEON_INFO_SI_TILE_MODE_ARRAY 0x16
982982 /* query if CP DMA is supported on the compute ring */
983983 #define RADEON_INFO_SI_CP_DMA_COMPUTE 0x17
984+/* CIK macrotile mode array */
985+#define RADEON_INFO_CIK_MACROTILE_MODE_ARRAY 0x18
984986
985987
986988 struct drm_radeon_info {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t