Эх сурвалжийг харах

drm/amdgpu: add flags for amdgpu_ib structure

Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Jammy Zhou 10 жил өмнө
parent
commit
de807f818b

+ 1 - 2
drivers/gpu/drm/amd/amdgpu/amdgpu.h

@@ -892,13 +892,12 @@ struct amdgpu_ib {
 	struct amdgpu_fence		*fence;
 	struct amdgpu_fence		*fence;
 	struct amdgpu_user_fence        *user;
 	struct amdgpu_user_fence        *user;
 	struct amdgpu_vm		*vm;
 	struct amdgpu_vm		*vm;
-	bool				is_const_ib;
 	bool				flush_hdp_writefifo;
 	bool				flush_hdp_writefifo;
 	struct amdgpu_sync		sync;
 	struct amdgpu_sync		sync;
-	bool				gds_needed;
 	uint32_t			gds_base, gds_size;
 	uint32_t			gds_base, gds_size;
 	uint32_t			gws_base, gws_size;
 	uint32_t			gws_base, gws_size;
 	uint32_t			oa_base, oa_size;
 	uint32_t			oa_base, oa_size;
+	uint32_t			flags;
 };
 };
 
 
 enum amdgpu_ring_type {
 enum amdgpu_ring_type {

+ 2 - 4
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c

@@ -638,10 +638,8 @@ static int amdgpu_cs_ib_fill(struct amdgpu_device *adev,
 		}
 		}
 		ib->length_dw = chunk_ib->ib_bytes / 4;
 		ib->length_dw = chunk_ib->ib_bytes / 4;
 
 
-		if (chunk_ib->flags & AMDGPU_IB_FLAG_CE)
-			ib->is_const_ib = true;
-		if (chunk_ib->flags & AMDGPU_IB_FLAG_GDS)
-			ib->gds_needed = true;
+		ib->flags = chunk_ib->flags;
+
 		if ((ib->ring->current_filp != parser->filp) ||
 		if ((ib->ring->current_filp != parser->filp) ||
 		    (ib->ring->current_ctx != parser->ctx_id)) {
 		    (ib->ring->current_ctx != parser->ctx_id)) {
 			ib->ring->need_ctx_switch = true;
 			ib->ring->need_ctx_switch = true;

+ 2 - 2
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c

@@ -88,13 +88,13 @@ int amdgpu_ib_get(struct amdgpu_ring *ring, struct amdgpu_vm *vm,
 	ib->fence = NULL;
 	ib->fence = NULL;
 	ib->user = NULL;
 	ib->user = NULL;
 	ib->vm = vm;
 	ib->vm = vm;
-	ib->is_const_ib = false;
 	ib->gds_base = 0;
 	ib->gds_base = 0;
 	ib->gds_size = 0;
 	ib->gds_size = 0;
 	ib->gws_base = 0;
 	ib->gws_base = 0;
 	ib->gws_size = 0;
 	ib->gws_size = 0;
 	ib->oa_base = 0;
 	ib->oa_base = 0;
 	ib->oa_size = 0;
 	ib->oa_size = 0;
+	ib->flags = 0;
 
 
 	return 0;
 	return 0;
 }
 }
@@ -179,7 +179,7 @@ int amdgpu_ib_schedule(struct amdgpu_device *adev, unsigned num_ibs,
 		amdgpu_vm_flush(ring, vm, ib->sync.last_vm_update);
 		amdgpu_vm_flush(ring, vm, ib->sync.last_vm_update);
 	}
 	}
 
 
-	if (ring->funcs->emit_gds_switch && ib->vm && ib->gds_needed)
+	if (ring->funcs->emit_gds_switch && ib->vm && (ib->flags & AMDGPU_IB_FLAG_GDS))
 		amdgpu_ring_emit_gds_switch(ring, ib->vm->ids[ring->idx].id,
 		amdgpu_ring_emit_gds_switch(ring, ib->vm->ids[ring->idx].id,
 					    ib->gds_base, ib->gds_size,
 					    ib->gds_base, ib->gds_size,
 					    ib->gws_base, ib->gws_size,
 					    ib->gws_base, ib->gws_size,

+ 1 - 1
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c

@@ -2544,7 +2544,7 @@ static void gfx_v7_0_ring_emit_ib(struct amdgpu_ring *ring,
 		ring->need_ctx_switch = false;
 		ring->need_ctx_switch = false;
 	}
 	}
 
 
-	if (ib->is_const_ib)
+	if (ib->flags & AMDGPU_IB_FLAG_CE)
 		header = PACKET3(PACKET3_INDIRECT_BUFFER_CONST, 2);
 		header = PACKET3(PACKET3_INDIRECT_BUFFER_CONST, 2);
 	else
 	else
 		header = PACKET3(PACKET3_INDIRECT_BUFFER, 2);
 		header = PACKET3(PACKET3_INDIRECT_BUFFER, 2);

+ 1 - 1
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c

@@ -3673,7 +3673,7 @@ static void gfx_v8_0_ring_emit_ib(struct amdgpu_ring *ring,
 		ring->need_ctx_switch = false;
 		ring->need_ctx_switch = false;
 	}
 	}
 
 
-	if (ib->is_const_ib)
+	if (ib->flags & AMDGPU_IB_FLAG_CE)
 		header = PACKET3(PACKET3_INDIRECT_BUFFER_CONST, 2);
 		header = PACKET3(PACKET3_INDIRECT_BUFFER_CONST, 2);
 	else
 	else
 		header = PACKET3(PACKET3_INDIRECT_BUFFER, 2);
 		header = PACKET3(PACKET3_INDIRECT_BUFFER, 2);