| 1968 | } |
| 1969 | |
| 1970 | static void WebGPUWriteBuffer(WebGPUContext* context, WebGPUBuffer* buffer, size_t offset, void const* data, size_t size) |
| 1971 | { |
| 1972 | TRACE_CALL; |
| 1973 | assert(size); |
| 1974 | if (!buffer->m_Buffer) // create it |
| 1975 | { |
| 1976 | #if defined(DM_GRAPHICS_WEBGPU2) |
| 1977 | WGPUBufferDescriptor desc = WGPU_BUFFER_DESCRIPTOR_INIT; |
| 1978 | #else |
| 1979 | WGPUBufferDescriptor desc = {}; |
| 1980 | #endif |
| 1981 | desc.usage = buffer->m_Usage; |
| 1982 | desc.size = size; |
| 1983 | buffer->m_Buffer = wgpuDeviceCreateBuffer(context->m_Device, &desc); |
| 1984 | buffer->m_Used = buffer->m_Size = desc.size; |
| 1985 | } |
| 1986 | else if (buffer->m_LastRenderPass && buffer->m_LastRenderPass > context->m_LastSubmittedRenderPass) // flush pipeline |
| 1987 | { |
| 1988 | //dmLogWarning("Deoptimization: Forcing pipeline flush due to buffer write"); |
| 1989 | WebGPUSubmitCommandEncoder(context); |
| 1990 | } |
| 1991 | wgpuQueueWriteBuffer(context->m_Queue, buffer->m_Buffer, offset, data, size); |
| 1992 | } |
| 1993 | |
| 1994 | static HUniformBuffer WebGPUNewUniformBuffer(HContext _context, const UniformBufferLayout& layout) |
| 1995 | { |
no test coverage detected