aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2017-02-13 11:37:05 -0500
committerAlex Deucher <alexander.deucher@amd.com>2017-03-29 23:53:03 -0400
commit75cb00dc0c9dbe5e7a971ac729384d8d05f0deb1 (patch)
tree97a5921be549f23b1070672e5551f11bf36f55bc
parent451bc8eb8fe61ee89ebf44e7ee290ab88bb2b2d5 (diff)
drm/radeon: allow unaligned shader loads on CIK
Set alignment mode to unaligned on CIK to align with amdgpu. This is needed for unaligned loads to work properly in mesa. The current setting requires dword alignment. Signed-off-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/radeon/cik.c7
-rw-r--r--drivers/gpu/drm/radeon/radeon_drv.c3
2 files changed, 7 insertions, 3 deletions
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index f6ff41a0eed6..ac0d93936d77 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -35,6 +35,9 @@
35#include "clearstate_ci.h" 35#include "clearstate_ci.h"
36#include "radeon_kfd.h" 36#include "radeon_kfd.h"
37 37
38#define SH_MEM_CONFIG_GFX_DEFAULT \
39 ALIGNMENT_MODE(SH_MEM_ALIGNMENT_MODE_UNALIGNED)
40
38MODULE_FIRMWARE("radeon/BONAIRE_pfp.bin"); 41MODULE_FIRMWARE("radeon/BONAIRE_pfp.bin");
39MODULE_FIRMWARE("radeon/BONAIRE_me.bin"); 42MODULE_FIRMWARE("radeon/BONAIRE_me.bin");
40MODULE_FIRMWARE("radeon/BONAIRE_ce.bin"); 43MODULE_FIRMWARE("radeon/BONAIRE_ce.bin");
@@ -5587,7 +5590,7 @@ static int cik_pcie_gart_enable(struct radeon_device *rdev)
5587 for (i = 0; i < 16; i++) { 5590 for (i = 0; i < 16; i++) {
5588 cik_srbm_select(rdev, 0, 0, 0, i); 5591 cik_srbm_select(rdev, 0, 0, 0, i);
5589 /* CP and shaders */ 5592 /* CP and shaders */
5590 WREG32(SH_MEM_CONFIG, 0); 5593 WREG32(SH_MEM_CONFIG, SH_MEM_CONFIG_GFX_DEFAULT);
5591 WREG32(SH_MEM_APE1_BASE, 1); 5594 WREG32(SH_MEM_APE1_BASE, 1);
5592 WREG32(SH_MEM_APE1_LIMIT, 0); 5595 WREG32(SH_MEM_APE1_LIMIT, 0);
5593 WREG32(SH_MEM_BASES, 0); 5596 WREG32(SH_MEM_BASES, 0);
@@ -5794,7 +5797,7 @@ void cik_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring,
5794 radeon_ring_write(ring, 0); 5797 radeon_ring_write(ring, 0);
5795 5798
5796 radeon_ring_write(ring, 0); /* SH_MEM_BASES */ 5799 radeon_ring_write(ring, 0); /* SH_MEM_BASES */
5797 radeon_ring_write(ring, 0); /* SH_MEM_CONFIG */ 5800 radeon_ring_write(ring, SH_MEM_CONFIG_GFX_DEFAULT); /* SH_MEM_CONFIG */
5798 radeon_ring_write(ring, 1); /* SH_MEM_APE1_BASE */ 5801 radeon_ring_write(ring, 1); /* SH_MEM_APE1_BASE */
5799 radeon_ring_write(ring, 0); /* SH_MEM_APE1_LIMIT */ 5802 radeon_ring_write(ring, 0); /* SH_MEM_APE1_LIMIT */
5800 5803
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 956c425e639e..1ecd6930c452 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -98,9 +98,10 @@
98 * 2.47.0 - Add UVD_NO_OP register support 98 * 2.47.0 - Add UVD_NO_OP register support
99 * 2.48.0 - TA_CS_BC_BASE_ADDR allowed on SI 99 * 2.48.0 - TA_CS_BC_BASE_ADDR allowed on SI
100 * 2.49.0 - DRM_RADEON_GEM_INFO ioctl returns correct vram_size/visible values 100 * 2.49.0 - DRM_RADEON_GEM_INFO ioctl returns correct vram_size/visible values
101 * 2.50.0 - Allows unaligned shader loads on CIK. (needed by OpenGL)
101 */ 102 */
102#define KMS_DRIVER_MAJOR 2 103#define KMS_DRIVER_MAJOR 2
103#define KMS_DRIVER_MINOR 49 104#define KMS_DRIVER_MINOR 50
104#define KMS_DRIVER_PATCHLEVEL 0 105#define KMS_DRIVER_PATCHLEVEL 0
105int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags); 106int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags);
106void radeon_driver_unload_kms(struct drm_device *dev); 107void radeon_driver_unload_kms(struct drm_device *dev);