История изменений
Исправление mittorn, (текущая версия) :
Чо за патч? Скинь. У меня rx6900xt
У меня ядро 5.18, rx6950xt и rx6600xt. Тут считается что если amdgpu резеттился определёнными методами, то состояние неизвестно и надо посчитать что vram_lost. На деле же в большинстве случаев это не так. Ну и если у тебя резетился gpu - надо срочно переключиться в консоль и прибить вручную процессы, которые могли это сделать. иначе если он резетнется несоклько раз подряд, может и совсем повиснуть.
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 49f734137f15..1d307bb3cff6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2528,6 +2528,7 @@ static void amdgpu_device_fill_reset_magic(struct amdgpu_device *adev)
* VRAM is lost or now.
* returns true if vram is lost, false if not.
*/
+#if 0
static bool amdgpu_device_check_vram_lost(struct amdgpu_device *adev)
{
if (memcmp(adev->gart.ptr, adev->reset_magic,
@@ -2544,12 +2545,12 @@ static bool amdgpu_device_check_vram_lost(struct amdgpu_device *adev)
switch (amdgpu_asic_reset_method(adev)) {
case AMD_RESET_METHOD_BACO:
case AMD_RESET_METHOD_MODE1:
- return true;
+ return false;
default:
return false;
}
}
-
+#endif
/**
* amdgpu_device_set_cg_state - set clockgating for amdgpu device
*
@@ -4794,7 +4795,7 @@ int amdgpu_do_asic_reset(struct list_head *device_list_handle,
if (r)
goto out;
- vram_lost = amdgpu_device_check_vram_lost(tmp_adev);
+ vram_lost = false; //amdgpu_device_check_vram_lost(tmp_adev);
if (vram_lost) {
DRM_INFO("VRAM is lost due to GPU reset!\n");
amdgpu_inc_vram_lost(tmp_adev);
Захват экрана через pipewire вроде так и делают, получается хуже чем напрямую через xcomposite (я игры стримлю друзьяшкам, pipewire лагает даже на моём железе блин).
ладно ещё захват экрана, а отдельных окон? а события им слать? Захват экрана кстати я делаю через drm устройство, это что под иксами что под wayland одинаково работает, но требует сервис запущенный от рута.
Исходная версия mittorn, :
Чо за патч? Скинь. У меня rx6900xt У меня ядро 5.18, rx6950xt и rx6600xt. Тут считается что если amdgpu резеттился определёнными методами, то состояние неизвестно и надо посчитать что vram_lost. На деле же в большинстве случаев это не так. Ну и если у тебя резетился gpu - надо срочно переключиться в консоль и прибить вручную процессы, которые могли это сделать. иначе если он резетнется несоклько раз подряд, может и совсем повиснуть.
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 49f734137f15..1d307bb3cff6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2528,6 +2528,7 @@ static void amdgpu_device_fill_reset_magic(struct amdgpu_device *adev)
* VRAM is lost or now.
* returns true if vram is lost, false if not.
*/
+#if 0
static bool amdgpu_device_check_vram_lost(struct amdgpu_device *adev)
{
if (memcmp(adev->gart.ptr, adev->reset_magic,
@@ -2544,12 +2545,12 @@ static bool amdgpu_device_check_vram_lost(struct amdgpu_device *adev)
switch (amdgpu_asic_reset_method(adev)) {
case AMD_RESET_METHOD_BACO:
case AMD_RESET_METHOD_MODE1:
- return true;
+ return false;
default:
return false;
}
}
-
+#endif
/**
* amdgpu_device_set_cg_state - set clockgating for amdgpu device
*
@@ -4794,7 +4795,7 @@ int amdgpu_do_asic_reset(struct list_head *device_list_handle,
if (r)
goto out;
- vram_lost = amdgpu_device_check_vram_lost(tmp_adev);
+ vram_lost = false; //amdgpu_device_check_vram_lost(tmp_adev);
if (vram_lost) {
DRM_INFO("VRAM is lost due to GPU reset!\n");
amdgpu_inc_vram_lost(tmp_adev);
Захват экрана через pipewire вроде так и делают, получается хуже чем напрямую через xcomposite (я игры стримлю друзьяшкам, pipewire лагает даже на моём железе блин).
ладно ещё захват экрана, а отдельных окон? а события им слать? Захват экрана кстати я делаю через drm устройство, это что под иксами что под wayland одинаково работает, но требует сервис запущенный от рута.