Что означает код HRESULT 0xC0262111 (ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION)?

 
Предыдущий Следующий
ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE ERROR_GRAPHICS_ALLOCATION_CLOSED

ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION

Что означает ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION

ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION означает конфликт владения графическим ресурсом: allocation всё ещё находится в состоянии CPU lock/mapping в момент, когда драйвер пытается использовать её для рендеринга.

Что проверить

  • Для каждого lock запишите поток, диапазон, режим доступа и соответствующий unlock; особенно проверьте error/cancel paths.
  • Не отправляйте command buffer, использующий этот ресурс, пока CPU mapping не завершён и требуемая синхронизация не выполнена.
  • Если ресурс разделяется между потоками, ищите гонку между unlock одного потока и submit другого; одиночный тест может её не воспроизводить.
  • После reset или device-lost не используйте сохранённое состояние старого mapping — получите актуальное состояние allocation заново.

Как подтвердить исправление

Исправление подтверждается нагрузочным тестом, в котором CPU mapping и GPU submission многократно чередуются без пересечения периодов владения и без повторного кода.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.