GPUDevice
Ограниченное использование
Эта функция не относится к базовым, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментальная: Это экспериментальная технология .
Внимательно проверьте таблицу совместимости браузеров перед использованием в продакшене.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Интерфейс GPUDevice API WebGPU представляет собой логическое устройство GPU. Это основной интерфейс, через который осуществляется доступ к большинству функций WebGPU.
Объект GPUDevice запрашивается с помощью метода GPUAdapter.requestDevice().
Свойства экземпляра
Наследует свойства от своего родителя, EventTarget.
-
featuresЭкспериментальная Только для чтения -
Объект
GPUSupportedFeatures, описывающий дополнительные возможности, поддерживаемые устройством. -
labelЭкспериментальная -
Строка, предоставляющая метку, которую можно использовать для идентификации объекта, например, в сообщениях
GPUErrorили предупреждениях консоли. -
limitsЭкспериментальная Только для чтения -
Объект
GPUSupportedLimits, описывающий ограничения, поддерживаемые устройством. -
lostЭкспериментальная Только для чтения -
Содержит
Promise, который остается ожидающим в течение всего срока службы устройства и разрешается с объектомGPUDeviceLostInfo, когда устройство потеряно. -
queueЭкспериментальная Только для чтения -
Возвращает основной
GPUQueueдля устройства.
Методы экземпляра
Наследует методы от своего родителя, EventTarget.
-
createBindGroup()Экспериментальный -
Создаёт
GPUBindGroupна основеGPUBindGroupLayout, который определяет набор ресурсов, которые будут связаны вместе в группе, и как эти ресурсы используются в стадиях шейдеров. -
createBindGroupLayout()Экспериментальный -
Создаёт
GPUBindGroupLayout, который определяет структуру и назначение связанных ресурсов GPU, таких как буферы, которые будут использоваться в конвейере, и используется в качестве шаблона при созданииGPUBindGroup. -
createBuffer()Экспериментальный -
Создаёт
GPUBuffer, в котором хранятся сырые данные для использования в операциях GPU. -
createCommandEncoder()Экспериментальный -
Создаёт
GPUCommandEncoder, который используется для кодирования команд, которые должны быть отправлены GPU. -
createComputePipeline()Экспериментальный -
Создаёт
GPUComputePipeline, который может управлять стадией вычислительного шейдера и использоваться вGPUComputePassEncoder. -
createComputePipelineAsync()Экспериментальный -
Возвращает
Promise, который выполняется сGPUComputePipeline, который может управлять стадией вычислительного шейдера и использоваться вGPUComputePassEncoder, как только конвейер можно будет использовать без задержек. -
createPipelineLayout()Экспериментальный -
Создаёт
GPUPipelineLayout, который определяетGPUBindGroupLayouts, используемые конвейером.GPUBindGroups, используемые с конвейером во время кодирования команд, должны иметь совместимыеGPUBindGroupLayouts. -
createQuerySet()Экспериментальный -
Создаёт
GPUQuerySet, который можно использовать для записи результатов запросов к проходам, таких как запросы на окклюзию или отметки времени. -
createRenderBundleEncoder()Экспериментальный -
Создаёт
GPURenderBundleEncoder, который можно использовать для предварительной записи наборов команд. Они могут быть повторно использованы вGPURenderPassEncoderс помощью методаexecuteBundles()столько раз, сколько необходимо. -
createRenderPipeline()Экспериментальный -
Создаёт
GPURenderPipeline, который может управлять вершинными и фрагментными стадиями шейдеров и использоваться вGPURenderPassEncoderилиGPURenderBundleEncoder. -
createRenderPipelineAsync()Экспериментальный -
Возвращает
Promise, который выполняется сGPURenderPipeline, который может управлять вершинными и фрагментными стадиями шейдеров и использоваться вGPURenderPassEncoderилиGPURenderBundleEncoder, как только конвейер можно будет использовать без задержек. -
createSampler()Экспериментальный -
Создаёт
GPUSampler, который управляет тем, как шейдеры преобразуют и фильтруют данные текстурных ресурсов. -
createShaderModule()Экспериментальный -
Создаёт
GPUShaderModuleиз строки исходного кода WGSL. -
createTexture()Экспериментальный -
Создаёт
GPUTexture, в котором хранятся данные текстуры для использования в операциях рендеринга GPU. -
destroy()Экспериментальный -
Уничтожает устройство, предотвращая дальнейшие операции с ним.
-
importExternalTexture()Экспериментальный -
Принимает
HTMLVideoElementв качестве входных данных и возвращаетGPUExternalTextureобъект-обёртку, содержащий моментальный снимок видео, который можно использовать в операциях рендеринга GPU. -
popErrorScope()Экспериментальный -
Выталкивает существующий область видимости ошибок GPU из стека области видимости ошибок и возвращает
Promise, который разрешается до объекта (GPUInternalError,GPUOutOfMemoryErrorилиGPUValidationError), описывающего первую ошибку, захваченную в области видимости, илиnullесли ошибка не произошла. -
pushErrorScope()Экспериментальный -
Добавляет новую область видимости ошибок GPU в стек области видимости ошибок устройства, позволяя захватывать ошибки определённого типа.
События
-
uncapturederrorЭкспериментальный -
Срабатывает, когда возникает ошибка, которая не была обнаружена областью видимости ошибок GPU, чтобы предоставить способ сообщить об неожиданных ошибках. Известные случаи ошибок должны обрабатываться с использованием
pushErrorScope()иpopErrorScope().
Примеры
async function init() {
if (!navigator.gpu) {
throw Error("WebGPU not supported.");
}
const adapter = await navigator.gpu.requestAdapter();
if (!adapter) {
throw Error("Couldn't request WebGPU adapter.");
}
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({
code: shaders,
});
//...
}
Обратитесь к отдельным страницам членов, указанным выше, и к следующим демонстрационным сайтам для получения гораздо больше примеров использования GPUDevice:
Спецификации
| Спецификация |
|---|
| WebGPU # gpudevice |
Совместимость с браузерами
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
GPUDevice |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
|---|---|---|---|---|---|---|---|---|---|---|---|
adapterInfo |
132 | 132 | Нет | 117 | Нет | 132 | Нет | Нет | Нет | Нет | 132 |
createBindGroup |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createBindGroupLayout |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createBuffer |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createCommandEncoder |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createComputePipeline |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createComputePipelineAsync |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createPipelineLayout |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createQuerySet |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
Нет | 99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createRenderBundleEncoder |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createRenderPipeline |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createRenderPipelineAsync |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createSampler |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createShaderModule |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
createTexture |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
|---|---|---|---|---|---|---|---|---|---|---|---|
destroy |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
features |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
importExternalTexture |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
label |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
limits |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
lost |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
popErrorScope |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
pushErrorScope |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
queue |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
uncapturederror_event |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
Нет | 121 | Нет | 81 | Нет | 25.0 | 121 |
См. также
- API WebGPU
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/GPUDevice