| 311 | |
| 312 | template <typename T> |
| 313 | Status GlBuffer::MappedWrite( |
| 314 | const std::function<Status(absl::Span<T> d)>& writer) { |
| 315 | if (bytes_size_ % sizeof(T) != 0) { |
| 316 | return InvalidArgumentError("Buffer is not aligned"); |
| 317 | } |
| 318 | gl_buffer_internal::BufferBinder binder(target_, id_); |
| 319 | gl_buffer_internal::BufferMapper mapper(target_, offset_, bytes_size_, |
| 320 | GL_MAP_WRITE_BIT); |
| 321 | if (!mapper.data()) { |
| 322 | return GetOpenGlErrors(); |
| 323 | } |
| 324 | return writer(absl::MakeSpan(reinterpret_cast<T*>(mapper.data()), |
| 325 | bytes_size_ / sizeof(T))); |
| 326 | } |
| 327 | |
| 328 | } // namespace gl |
| 329 | } // namespace gpu |
nothing calls this directly
no test coverage detected