tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 25b4f05ee86414c60f4d947d6251b7bc1502a503
parent 2dc73d0961a804e57d64dfcc0c60855478388b6c
Author: Nicolas Silva <nical@fastmail.com>
Date:   Thu, 27 Nov 2025 09:38:04 +0000

Bug 1996818 - Allow pushing up to max_block_count gpu blocks. r=gw

Instead of enforcing an exact number of blocks. This aligns with GpuDataRequest, which the render task data relies on.

Differential Revision: https://phabricator.services.mozilla.com/D270503

Diffstat:
Mgfx/wr/webrender/src/renderer/gpu_buffer.rs | 18+++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/gfx/wr/webrender/src/renderer/gpu_buffer.rs b/gfx/wr/webrender/src/renderer/gpu_buffer.rs @@ -216,7 +216,7 @@ pub struct GpuBufferWriter<'a, T> { buffer: &'a mut FrameVec<T>, deferred: &'a mut Vec<DeferredBlock>, index: usize, - block_count: usize, + max_block_count: usize, } impl<'a, T> GpuBufferWriter<'a, T> where T: Texel { @@ -224,13 +224,13 @@ impl<'a, T> GpuBufferWriter<'a, T> where T: Texel { buffer: &'a mut FrameVec<T>, deferred: &'a mut Vec<DeferredBlock>, index: usize, - block_count: usize, + max_block_count: usize, ) -> Self { GpuBufferWriter { buffer, deferred, index, - block_count, + max_block_count, } } @@ -258,7 +258,7 @@ impl<'a, T> GpuBufferWriter<'a, T> where T: Texel { /// Close this writer, returning the GPU address of this set of block(s). pub fn finish(self) -> GpuBufferAddress { - assert_eq!(self.buffer.len(), self.index + self.block_count); + assert!(self.buffer.len() <= self.index + self.max_block_count); GpuBufferAddress { u: (self.index % MAX_VERTEX_TEXTURE_WIDTH) as u16, @@ -269,7 +269,7 @@ impl<'a, T> GpuBufferWriter<'a, T> where T: Texel { impl<'a, T> Drop for GpuBufferWriter<'a, T> { fn drop(&mut self) { - assert_eq!(self.buffer.len(), self.index + self.block_count, "Claimed block_count was not written"); + assert!(self.buffer.len() <= self.index + self.max_block_count, "Attempt to write too many GpuBuffer blocks"); } } @@ -316,11 +316,11 @@ impl<T> GpuBufferBuilderImpl<T> where T: Texel + std::convert::From<DeviceIntRec /// Begin writing a specific number of blocks pub fn write_blocks( &mut self, - block_count: usize, + max_block_count: usize, ) -> GpuBufferWriter<T> { - assert!(block_count <= MAX_VERTEX_TEXTURE_WIDTH); + assert!(max_block_count <= MAX_VERTEX_TEXTURE_WIDTH); - if (self.data.len() % MAX_VERTEX_TEXTURE_WIDTH) + block_count > MAX_VERTEX_TEXTURE_WIDTH { + if (self.data.len() % MAX_VERTEX_TEXTURE_WIDTH) + max_block_count > MAX_VERTEX_TEXTURE_WIDTH { while self.data.len() % MAX_VERTEX_TEXTURE_WIDTH != 0 { self.data.push(T::default()); } @@ -332,7 +332,7 @@ impl<T> GpuBufferBuilderImpl<T> where T: Texel + std::convert::From<DeviceIntRec &mut self.data, &mut self.deferred, index, - block_count, + max_block_count, ) }