diff --git a/crates/gpui/src/platform/mac/renderer.rs b/crates/gpui/src/platform/mac/renderer.rs index 25870c81fb..41883a2f73 100644 --- a/crates/gpui/src/platform/mac/renderer.rs +++ b/crates/gpui/src/platform/mac/renderer.rs @@ -773,6 +773,79 @@ impl Renderer { } } + fn render_surfaces( + &mut self, + surfaces: &[Surface], + scale_factor: f32, + offset: &mut usize, + drawable_size: Vector2F, + command_encoder: &metal::RenderCommandEncoderRef, + ) { + if surfaces.is_empty() { + return; + } + + for surface in surfaces { + let origin = surface.bounds.origin() * scale_factor; + let target_size = surface.bounds.size() * scale_factor; + // let corner_radius = surface.corner_radius * scale_factor; + // let border_width = surface.border.width * scale_factor; + // let (alloc_id, atlas_bounds) = self.image_cache.render(&surface.native_surface); + } + + // command_encoder.set_render_pipeline_state(&self.image_pipeline_state); + // command_encoder.set_vertex_buffer( + // shaders::GPUIImageVertexInputIndex_GPUIImageVertexInputIndexVertices as u64, + // Some(&self.unit_vertices), + // 0, + // ); + // command_encoder.set_vertex_bytes( + // shaders::GPUIImageVertexInputIndex_GPUIImageVertexInputIndexViewportSize as u64, + // mem::size_of::() as u64, + // [drawable_size.to_float2()].as_ptr() as *const c_void, + // ); + + // for (atlas_id, images) in images_by_atlas { + // align_offset(offset); + // let next_offset = *offset + images.len() * mem::size_of::(); + // assert!( + // next_offset <= INSTANCE_BUFFER_SIZE, + // "instance buffer exhausted" + // ); + + // let texture = self.image_cache.atlas_texture(atlas_id).unwrap(); + // command_encoder.set_vertex_buffer( + // shaders::GPUIImageVertexInputIndex_GPUIImageVertexInputIndexImages as u64, + // Some(&self.instances), + // *offset as u64, + // ); + // command_encoder.set_vertex_bytes( + // shaders::GPUIImageVertexInputIndex_GPUIImageVertexInputIndexAtlasSize as u64, + // mem::size_of::() as u64, + // [vec2i(texture.width() as i32, texture.height() as i32).to_float2()].as_ptr() + // as *const c_void, + // ); + // command_encoder.set_fragment_texture( + // shaders::GPUIImageFragmentInputIndex_GPUIImageFragmentInputIndexAtlas as u64, + // Some(texture), + // ); + + // unsafe { + // let buffer_contents = + // (self.instances.contents() as *mut u8).add(*offset) as *mut shaders::GPUIImage; + // std::ptr::copy_nonoverlapping(images.as_ptr(), buffer_contents, images.len()); + // } + + // command_encoder.draw_primitives_instanced( + // metal::MTLPrimitiveType::Triangle, + // 0, + // 6, + // images.len() as u64, + // ); + // *offset = next_offset; + // } + } + fn render_path_sprites( &mut self, layer_id: usize,