drm/amdgpu: fallback to generic HDP operation
When ring special operations aren't available we can fallback to the generic ASIC operations. Signed-off-by: Christian König <christian.koenig@amd.com> Acked-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
698825653f
commit
1b9d17db1c
@ -184,12 +184,15 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
|
|||||||
if (ring->funcs->init_cond_exec)
|
if (ring->funcs->init_cond_exec)
|
||||||
patch_offset = amdgpu_ring_init_cond_exec(ring);
|
patch_offset = amdgpu_ring_init_cond_exec(ring);
|
||||||
|
|
||||||
if (ring->funcs->emit_hdp_flush
|
|
||||||
#ifdef CONFIG_X86_64
|
#ifdef CONFIG_X86_64
|
||||||
&& !(adev->flags & AMD_IS_APU)
|
if (!(adev->flags & AMD_IS_APU))
|
||||||
#endif
|
#endif
|
||||||
)
|
{
|
||||||
amdgpu_ring_emit_hdp_flush(ring);
|
if (ring->funcs->emit_hdp_flush)
|
||||||
|
amdgpu_ring_emit_hdp_flush(ring);
|
||||||
|
else
|
||||||
|
amdgpu_asic_flush_hdp(adev, ring);
|
||||||
|
}
|
||||||
|
|
||||||
skip_preamble = ring->current_ctx == fence_ctx;
|
skip_preamble = ring->current_ctx == fence_ctx;
|
||||||
need_ctx_switch = ring->current_ctx != fence_ctx;
|
need_ctx_switch = ring->current_ctx != fence_ctx;
|
||||||
@ -219,12 +222,15 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
|
|||||||
if (ring->funcs->emit_tmz)
|
if (ring->funcs->emit_tmz)
|
||||||
amdgpu_ring_emit_tmz(ring, false);
|
amdgpu_ring_emit_tmz(ring, false);
|
||||||
|
|
||||||
if (ring->funcs->emit_hdp_invalidate
|
|
||||||
#ifdef CONFIG_X86_64
|
#ifdef CONFIG_X86_64
|
||||||
&& !(adev->flags & AMD_IS_APU)
|
if (!(adev->flags & AMD_IS_APU))
|
||||||
#endif
|
#endif
|
||||||
)
|
{
|
||||||
amdgpu_ring_emit_hdp_invalidate(ring);
|
if (ring->funcs->emit_hdp_invalidate)
|
||||||
|
amdgpu_ring_emit_hdp_invalidate(ring);
|
||||||
|
else
|
||||||
|
amdgpu_asic_invalidate_hdp(adev, ring);
|
||||||
|
}
|
||||||
|
|
||||||
r = amdgpu_fence_emit(ring, f);
|
r = amdgpu_fence_emit(ring, f);
|
||||||
if (r) {
|
if (r) {
|
||||||
|
Loading…
Reference in New Issue
Block a user