| Предыдущий | Следующий |
| D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS | D3D12_ERROR_ADAPTER_NOT_FOUND |
D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD
D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD: значение HRESULT и практическая диагностика
D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD имеет значение 0x887C0004 (-2005139452 в знаковом 32-битном представлении). Первый для данного списка команд вызов Map() в отложенном контексте не использовал D3D11_MAP_WRITE_DISCARD.
Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD старший бит HRESULT делает значение ошибкой. Константа D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD объявлена в winerror.h и относится к области «Direct2D/Direct3D и графический конвейер».
Где проходит граница ошибки
Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD код возникает на конкретной границе графического API: при создании ресурса, записи команд, отрисовке, представлении кадра или восстановлении устройства. Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD сначала нужно зафиксировать первый неуспешный вызов и сообщения debug layer, а не переинициализировать весь графический стек.
Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD одинаковый HRESULT может быть виден в нескольких слоях. Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD в журнале нужно отделить исходный возврат от последующих ошибок очистки, повторов и обёрток.
В имени D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD закодированы ориентиры для расследования: D3D11 — технический признак «d3d11»; DEFERRED — технический признак «deferred»; CONTEXT — контекст выполнения; MAP — карта блоков; WITHOUT — технический признак «without»; INITIAL — технический признак «initial». Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD эти ориентиры задают конкретный предмет проверки, но не заменяют контракт вызвавшего API.
Что означает код: признаки в имени константы
Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD часть D3D11 относится к области «технический признак «d3d11»». При разборе D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD проверьте, какое состояние этого объекта ожидалось и какое наблюдалось реально.
Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD часть DEFERRED относится к области «технический признак «deferred»». При разборе D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD проверьте, какое состояние этого объекта ожидалось и какое наблюдалось реально.
Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD часть CONTEXT относится к области «контекст выполнения». При разборе D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD проверьте, какое состояние этого объекта ожидалось и какое наблюдалось реально.
Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD часть MAP относится к области «карта блоков». При разборе D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD проверьте, какое состояние этого объекта ожидалось и какое наблюдалось реально.
Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD в техническом контексте особенно важны: отложенный контекст Direct3D, отладочный слой Direct3D, список команд. При расследовании D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD их следует проверять как связанные части одной операции, а не как независимые симптомы.
Что сохранить до изменений
- До повторной попытки по
D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARDнужно включить debug layer в диагностической сборке и сохранить сообщения до HRESULT. - Для воспроизводимого отчёта по
D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARDнужно сохранить последовательность создания, использования и освобождения ресурса.
Последовательность проверки
- Для
D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD: Свести воспроизведение к одному ресурсу и одному графическому вызову; сохраните первый hresult и точное время результата. - Для
D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD: Проверить ограничения формата, bind flags, usage и состояния ресурса; отдельно отметьте изменение состояния объекта. - Для
D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD: Сравнить поведение с WARP или другим адаптером, не меняя остальные параметры; все остальные условия оставьте неизменными. - Для
D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD: Проверить переходы состояний и завершение команд перед повторным использованием; не удаляйте исходные данные до завершения сравнения. - Для
D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD: После исправления повторить resize, device recreation и длительный цикл кадров; повторите шаг на исправном контрольном примере.
Исправление и подтверждение результата
Корректирующее действие для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD должно устранять условие «Первый для данного списка команд вызов Map() в отложенном контексте не использовал D3D11_MAP_WRITE_DISCARD» на уровне отложенный контекст Direct3D. Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD простое подавление HRESULT, бесконечный повтор или очистка всех настроек не доказывают восстановление контракта.
Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD зафиксируйте результат до и после изменения одними и теми же средствами. Для D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD сравнивайте не только HRESULT, но и конечное состояние объекта, побочные эффекты и события подсистемы.
Технические ссылки
- Microsoft: Microsoft: Direct3D 10 return codes — D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD
- Microsoft: Microsoft: Direct3D 11 return codes — D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD
- Microsoft: Microsoft: Direct3D 12 return codes — D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD
- Microsoft: Microsoft: Use the Direct3D 11 debug layer — D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD
- Документация Direct2D — D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD
Нужно найти другой код? Найти другой код состояния или ошибки.
