mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-09-20 05:50:11 +00:00
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:
parent
1b38cbd410
commit
f0fc2709d6
@ -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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user