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

Commit c5795c55 authored by Christian König's avatar Christian König Committed by Alex Deucher
Browse files

drm/amdgpu: minor CS optimization



We only need to loop over all IBs for old UVD/VCE command stream patching.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 7fd5e36c
Loading
Loading
Loading
Loading
+19 −18
Original line number Diff line number Diff line
@@ -853,27 +853,28 @@ static int amdgpu_cs_ib_vm_chunk(struct amdgpu_device *adev,
	struct amdgpu_fpriv *fpriv = p->filp->driver_priv;
	struct amdgpu_vm *vm = &fpriv->vm;
	struct amdgpu_ring *ring = p->job->ring;
	int i, j, r;
	int r;

	for (i = 0, j = 0; i < p->nchunks && j < p->job->num_ibs; i++) {
	/* Only for UVD/VCE VM emulation */
	if (p->job->ring->funcs->parse_cs) {
		unsigned i, j;

		for (i = 0, j = 0; i < p->nchunks && j < p->job->num_ibs; i++) {
			struct drm_amdgpu_cs_chunk_ib *chunk_ib;
			struct amdgpu_bo_va_mapping *m;
			struct amdgpu_bo *aobj = NULL;
			struct amdgpu_cs_chunk *chunk;
			struct amdgpu_ib *ib;
		struct drm_amdgpu_cs_chunk_ib *chunk_ib;
			uint64_t offset;
			uint8_t *kptr;

			chunk = &p->chunks[i];
			ib = &p->job->ibs[j];
		chunk_ib = (struct drm_amdgpu_cs_chunk_ib *)chunk->kdata;
			chunk_ib = chunk->kdata;

			if (chunk->chunk_id != AMDGPU_CHUNK_ID_IB)
				continue;

		if (p->job->ring->funcs->parse_cs) {
			struct amdgpu_bo_va_mapping *m;
			struct amdgpu_bo *aobj = NULL;
			uint64_t offset;
			uint8_t *kptr;

			r = amdgpu_cs_find_mapping(p, chunk_ib->va_start,
						   &aobj, &m);
			if (r) {
@@ -899,13 +900,13 @@ static int amdgpu_cs_ib_vm_chunk(struct amdgpu_device *adev,
			memcpy(ib->ptr, kptr, chunk_ib->ib_bytes);
			amdgpu_bo_kunmap(aobj);

			/* Only for UVD/VCE VM emulation */
			r = amdgpu_ring_parse_cs(ring, p, j);
			if (r)
				return r;
		}

			j++;
		}
	}

	if (p->job->vm) {
		p->job->vm_pd_addr = amdgpu_bo_gpu_offset(vm->root.base.bo);