Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 268b2510 authored by Alex Deucher's avatar Alex Deucher Committed by Dave Airlie
Browse files

drm/radeon/kms: fix alignment when allocating buffers



We were previously dropping alignment requests on the floor
when allocating buffers so we always ended up page aligned.
Certain tiling modes on 6xx+ require larger alignment which
wasn't happening before.

Signed-off-by: default avatarAlex Deucher <alexdeucher@gmail.com>
Cc: Jerome Glisse <j.glisse@gmail.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 2f5993cc
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -459,7 +459,7 @@ int evergreen_blit_init(struct radeon_device *rdev)
	obj_size += evergreen_ps_size * 4;
	obj_size += evergreen_ps_size * 4;
	obj_size = ALIGN(obj_size, 256);
	obj_size = ALIGN(obj_size, 256);


	r = radeon_bo_create(rdev, NULL, obj_size, true, RADEON_GEM_DOMAIN_VRAM,
	r = radeon_bo_create(rdev, NULL, obj_size, PAGE_SIZE, true, RADEON_GEM_DOMAIN_VRAM,
				&rdev->r600_blit.shader_obj);
				&rdev->r600_blit.shader_obj);
	if (r) {
	if (r) {
		DRM_ERROR("evergreen failed to allocate shader\n");
		DRM_ERROR("evergreen failed to allocate shader\n");
+1 −1
Original line number Original line Diff line number Diff line
@@ -2718,7 +2718,7 @@ static int r600_ih_ring_alloc(struct radeon_device *rdev)
	/* Allocate ring buffer */
	/* Allocate ring buffer */
	if (rdev->ih.ring_obj == NULL) {
	if (rdev->ih.ring_obj == NULL) {
		r = radeon_bo_create(rdev, NULL, rdev->ih.ring_size,
		r = radeon_bo_create(rdev, NULL, rdev->ih.ring_size,
				     true,
				     PAGE_SIZE, true,
				     RADEON_GEM_DOMAIN_GTT,
				     RADEON_GEM_DOMAIN_GTT,
				     &rdev->ih.ring_obj);
				     &rdev->ih.ring_obj);
		if (r) {
		if (r) {
+1 −1
Original line number Original line Diff line number Diff line
@@ -501,7 +501,7 @@ int r600_blit_init(struct radeon_device *rdev)
	obj_size += r6xx_ps_size * 4;
	obj_size += r6xx_ps_size * 4;
	obj_size = ALIGN(obj_size, 256);
	obj_size = ALIGN(obj_size, 256);


	r = radeon_bo_create(rdev, NULL, obj_size, true, RADEON_GEM_DOMAIN_VRAM,
	r = radeon_bo_create(rdev, NULL, obj_size, PAGE_SIZE, true, RADEON_GEM_DOMAIN_VRAM,
				&rdev->r600_blit.shader_obj);
				&rdev->r600_blit.shader_obj);
	if (r) {
	if (r) {
		DRM_ERROR("r600 failed to allocate shader\n");
		DRM_ERROR("r600 failed to allocate shader\n");
+2 −2
Original line number Original line Diff line number Diff line
@@ -41,7 +41,7 @@ void radeon_benchmark_move(struct radeon_device *rdev, unsigned bsize,


	size = bsize;
	size = bsize;
	n = 1024;
	n = 1024;
	r = radeon_bo_create(rdev, NULL, size, true, sdomain, &sobj);
	r = radeon_bo_create(rdev, NULL, size, PAGE_SIZE, true, sdomain, &sobj);
	if (r) {
	if (r) {
		goto out_cleanup;
		goto out_cleanup;
	}
	}
@@ -53,7 +53,7 @@ void radeon_benchmark_move(struct radeon_device *rdev, unsigned bsize,
	if (r) {
	if (r) {
		goto out_cleanup;
		goto out_cleanup;
	}
	}
	r = radeon_bo_create(rdev, NULL, size, true, ddomain, &dobj);
	r = radeon_bo_create(rdev, NULL, size, PAGE_SIZE, true, ddomain, &dobj);
	if (r) {
	if (r) {
		goto out_cleanup;
		goto out_cleanup;
	}
	}
+1 −1
Original line number Original line Diff line number Diff line
@@ -180,7 +180,7 @@ int radeon_wb_init(struct radeon_device *rdev)
	int r;
	int r;


	if (rdev->wb.wb_obj == NULL) {
	if (rdev->wb.wb_obj == NULL) {
		r = radeon_bo_create(rdev, NULL, RADEON_GPU_PAGE_SIZE, true,
		r = radeon_bo_create(rdev, NULL, RADEON_GPU_PAGE_SIZE, PAGE_SIZE, true,
				RADEON_GEM_DOMAIN_GTT, &rdev->wb.wb_obj);
				RADEON_GEM_DOMAIN_GTT, &rdev->wb.wb_obj);
		if (r) {
		if (r) {
			dev_warn(rdev->dev, "(%d) create WB bo failed\n", r);
			dev_warn(rdev->dev, "(%d) create WB bo failed\n", r);
Loading