Permalink
Browse files

Make usage of simd in gfx optional

  • Loading branch information...
SimonSapin committed Oct 11, 2017
1 parent 3d5eb82 commit a8e671c93f9b339d9b1469f4f0d556d4a3e155b0
Showing with 12 additions and 4 deletions.
  1. +4 −1 components/gfx/Cargo.toml
  2. +2 −1 components/gfx/lib.rs
  3. +5 −2 components/gfx/text/glyph.rs
  4. +1 −0 components/servo/Cargo.toml
@@ -10,6 +10,9 @@ publish = false
name = "gfx"
path = "lib.rs"
[features]
unstable = ["simd"]
[dependencies]
app_units = "0.5"
bitflags = "0.7"
@@ -58,7 +61,7 @@ servo-fontconfig = "0.2.1"
xml5ever = {version = "0.10"}
[target.'cfg(any(target_feature = "sse2", target_feature = "neon"))'.dependencies]
simd = "0.2.0"
simd = {version = "0.2.0", optional = true}
[target.'cfg(target_os = "windows")'.dependencies]
dwrote = "0.4"
View
@@ -3,8 +3,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// For SIMD
#![cfg_attr(feature = "unstable", feature(cfg_target_feature))]
#![cfg_attr(any(target_os = "linux", target_os = "android"), feature(allocator_api))]
#![feature(cfg_target_feature)]
#![deny(unsafe_code)]
@@ -53,6 +53,7 @@ extern crate servo_arc;
extern crate servo_geometry;
extern crate servo_url;
#[macro_use] extern crate servo_atoms;
#[cfg(feature = "unstable")]
#[cfg(any(target_feature = "sse2", target_feature = "neon"))]
extern crate simd;
extern crate smallvec;
@@ -5,7 +5,7 @@
use app_units::Au;
use euclid::Point2D;
use range::{self, EachIndex, Range, RangeIndex};
#[cfg(any(target_feature = "sse2", target_feature = "neon"))]
#[cfg(all(feature = "unstable", any(target_feature = "sse2", target_feature = "neon")))]
use simd::u32x4;
use std::{fmt, mem, u16};
use std::cmp::{Ordering, PartialOrd};
@@ -74,6 +74,7 @@ pub type GlyphId = u32;
// TODO: make this more type-safe.
const FLAG_CHAR_IS_SPACE: u32 = 0x40000000;
#[cfg(feature = "unstable")]
#[cfg(any(target_feature = "sse2", target_feature = "neon"))]
const FLAG_CHAR_IS_SPACE_SHIFT: u32 = 30;
const FLAG_IS_SIMPLE_GLYPH: u32 = 0x80000000;
@@ -591,6 +592,7 @@ impl<'a> GlyphStore {
}
#[inline]
#[cfg(feature = "unstable")]
#[cfg(any(target_feature = "sse2", target_feature = "neon"))]
fn advance_for_byte_range_simple_glyphs(&self, range: &Range<ByteIndex>, extra_word_spacing: Au) -> Au {
let advance_mask = u32x4::splat(GLYPH_ADVANCE_MASK);
@@ -634,13 +636,14 @@ impl<'a> GlyphStore {
/// When SIMD isn't available, fallback to the slow path.
#[inline]
#[cfg(not(any(target_feature = "sse2", target_feature = "neon")))]
#[cfg(not(all(feature = "unstable", any(target_feature = "sse2", target_feature = "neon"))))]
fn advance_for_byte_range_simple_glyphs(&self, range: &Range<ByteIndex>, extra_word_spacing: Au) -> Au {
self.advance_for_byte_range_slow_path(range, extra_word_spacing)
}
/// Used for SIMD.
#[inline]
#[cfg(feature = "unstable")]
#[cfg(any(target_feature = "sse2", target_feature = "neon"))]
#[allow(unsafe_code)]
fn transmute_entry_buffer_to_u32_buffer(&self) -> &[u32] {
@@ -25,6 +25,7 @@ unstable = [
"canvas_traits/unstable",
"compositing/unstable",
"constellation/unstable",
"gfx/unstable",
]
[dependencies]

0 comments on commit a8e671c

Please sign in to comment.