diff options
author | Christian König <christian.koenig@amd.com> | 2016-05-06 11:50:03 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-05-11 13:30:31 -0400 |
commit | d88bf583bd06eecb31f82871c90ef6a5a09b5766 (patch) | |
tree | 122631666a828a4705350d6f2e68be19c312bc74 /drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |
parent | 92f250989b7098f4b52d50183a7b2fc4e010731b (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.c | 36 |
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 | ||
486 | error_validate: | 502 | error_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]; |