aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2016-05-06 11:50:03 -0400
committerAlex Deucher <alexander.deucher@amd.com>2016-05-11 13:30:31 -0400
commitd88bf583bd06eecb31f82871c90ef6a5a09b5766 (patch)
tree122631666a828a4705350d6f2e68be19c312bc74 /drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
parent92f250989b7098f4b52d50183a7b2fc4e010731b (diff)
drm/amdgpu: move VM fields into job
They are the same for all IBs. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c36
1 files changed, 16 insertions, 20 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index 2895d63c9979..9ab2f0886a14 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -473,6 +473,9 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
473 goto error_validate; 473 goto error_validate;
474 474
475 if (p->bo_list) { 475 if (p->bo_list) {
476 struct amdgpu_bo *gds = p->bo_list->gds_obj;
477 struct amdgpu_bo *gws = p->bo_list->gws_obj;
478 struct amdgpu_bo *oa = p->bo_list->oa_obj;
476 struct amdgpu_vm *vm = &fpriv->vm; 479 struct amdgpu_vm *vm = &fpriv->vm;
477 unsigned i; 480 unsigned i;
478 481
@@ -481,6 +484,19 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
481 484
482 p->bo_list->array[i].bo_va = amdgpu_vm_bo_find(vm, bo); 485 p->bo_list->array[i].bo_va = amdgpu_vm_bo_find(vm, bo);
483 } 486 }
487
488 if (gds) {
489 p->job->gds_base = amdgpu_bo_gpu_offset(gds);
490 p->job->gds_size = amdgpu_bo_size(gds);
491 }
492 if (gws) {
493 p->job->gws_base = amdgpu_bo_gpu_offset(gws);
494 p->job->gws_size = amdgpu_bo_size(gws);
495 }
496 if (oa) {
497 p->job->oa_base = amdgpu_bo_gpu_offset(oa);
498 p->job->oa_size = amdgpu_bo_size(oa);
499 }
484 } 500 }
485 501
486error_validate: 502error_validate:
@@ -744,26 +760,6 @@ static int amdgpu_cs_ib_fill(struct amdgpu_device *adev,
744 j++; 760 j++;
745 } 761 }
746 762
747 /* add GDS resources to first IB */
748 if (parser->bo_list) {
749 struct amdgpu_bo *gds = parser->bo_list->gds_obj;
750 struct amdgpu_bo *gws = parser->bo_list->gws_obj;
751 struct amdgpu_bo *oa = parser->bo_list->oa_obj;
752 struct amdgpu_ib *ib = &parser->job->ibs[0];
753
754 if (gds) {
755 ib->gds_base = amdgpu_bo_gpu_offset(gds);
756 ib->gds_size = amdgpu_bo_size(gds);
757 }
758 if (gws) {
759 ib->gws_base = amdgpu_bo_gpu_offset(gws);
760 ib->gws_size = amdgpu_bo_size(gws);
761 }
762 if (oa) {
763 ib->oa_base = amdgpu_bo_gpu_offset(oa);
764 ib->oa_size = amdgpu_bo_size(oa);
765 }
766 }
767 /* wrap the last IB with user fence */ 763 /* wrap the last IB with user fence */
768 if (parser->job->uf.bo) { 764 if (parser->job->uf.bo) {
769 struct amdgpu_ib *ib = &parser->job->ibs[parser->job->num_ibs - 1]; 765 struct amdgpu_ib *ib = &parser->job->ibs[parser->job->num_ibs - 1];