gpu: Implement support for multiple storage buffers

When using the uber shader a lot, we may overflow the (only 16kB large)
storage buffer.

Stop crashing when that happens and instead just allocate a new one.
This commit is contained in:
Benjamin Otte 2023-11-20 03:42:37 +01:00
parent 1b38cbd410
commit f0fc2709d6

View File

@ -473,7 +473,18 @@ gsk_gpu_frame_write_storage_buffer (GskGpuFrame *self,
gsk_gpu_frame_ensure_storage_buffer (self);
offset = priv->storage_buffer_used;
g_assert (offset + size < gsk_gpu_buffer_get_size (priv->storage_buffer));
if (offset + size > gsk_gpu_buffer_get_size (priv->storage_buffer))
{
g_assert (offset > 0);
gsk_gpu_buffer_unmap (priv->storage_buffer);
g_clear_object (&priv->storage_buffer);
priv->storage_buffer_data = 0;
priv->storage_buffer_used = 0;
gsk_gpu_frame_ensure_storage_buffer (self);
offset = priv->storage_buffer_used;
}
if (size)
{