Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/radeon: Allow setting shader registers using DMA/COPY packet3 on SI.

Mesa uses a COPY_DATA packet to copy the grid size for indirect dispatches
into COMPUTE_USER_DATA_*.

Setting those registers with a SET_SH_REG packet is allowed, not allowing
them with other packets seems like an oversight.

v2: Clarify commit message.

Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Bas Nieuwenhuizen and committed by
Alex Deucher
3d02b7fe b76af4a4

+6 -1
+2 -1
drivers/gpu/drm/radeon/radeon_drv.c
··· 94 94 * 2.42.0 - Add VCE/VUI (Video Usability Information) support 95 95 * 2.43.0 - RADEON_INFO_GPU_RESET_COUNTER 96 96 * 2.44.0 - SET_APPEND_CNT packet3 support 97 + * 2.45.0 - Allow setting shader registers using DMA/COPY packet3 on SI 97 98 */ 98 99 #define KMS_DRIVER_MAJOR 2 99 - #define KMS_DRIVER_MINOR 44 100 + #define KMS_DRIVER_MINOR 45 100 101 #define KMS_DRIVER_PATCHLEVEL 0 101 102 int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags); 102 103 int radeon_driver_unload_kms(struct drm_device *dev);
+4
drivers/gpu/drm/radeon/si.c
··· 4364 4364 if (reg >= 0x28000) 4365 4365 return true; 4366 4366 4367 + /* shader regs are also fine */ 4368 + if (reg >= 0xB000 && reg < 0xC000) 4369 + return true; 4370 + 4367 4371 /* check config regs */ 4368 4372 switch (reg) { 4369 4373 case GRBM_GFX_INDEX: