Chromium Blog
News and developments from the open source browser project
Universal rendering with SwiftShader, now open source
mercoledì 29 giugno 2016
SwiftShader is a software library for high-performance graphics rendering on the CPU. Google already uses this library in multiple products, including Chrome, Android development tools, and cloud services. Starting today, SwiftShader is fully open source, expanding its pool of potential applications.
Since 2009, Chrome has used SwiftShader to enable 3D rendering on systems that can’t fully support hardware-accelerated rendering. While 3D content like
WebGL
is written for a GPU, some users’ devices don’t have graphics hardware capable of executing this content. Others may have drivers with serious bugs which can make 3D rendering unreliable, or even impossible. Chrome uses SwiftShader on these systems in order to ensure 3D web content is available to all users.
Chrome running without SwiftShader on a machine with an inadequate GPU (left) cannot run the WebGL Globe experiment. The same machine with SwiftShader enabled (right) is able to fully render the content.
SwiftShader implements the same OpenGL ES graphics
API
used by Chrome and Android. Making SwiftShader open source will enable other browser vendors to support 3D content universally and move the web platform forward as a whole. In particular, unconditional WebGL support allows web developers to create more engaging content, such as casual games, educational apps, collaborative content creation software, product showcases, virtual tours, and
more
. SwiftShader also has applications in the cloud, enabling rendering on GPU-less systems.
To provide users with the best performance, SwiftShader uses several techniques to efficiently perform graphics calculations on the CPU. Dynamic code generation enables
tailoring
the code towards the tasks at hand at run-time, as opposed to the more common compile-time optimization. This complex approach is simplified through the use of
Reactor
, a custom C++ embedded language with an intuitive imperative syntax. SwiftShader also uses vector operations in
SIMT
fashion, together with multi-threading technology, to increase parallelism across the CPU’s available cores and vector units. This enables real-time rendering for uses such as
app streaming
o
n
A
n
d
r
o
i
d.
Developers can access the SwiftShader source code from its
git repository
. Sign up for the
mailing list
to stay up to date on the latest developments and collaborate with other SwiftShader developers from the open-source community.
Posted by Nicolas Capens, Software Engineer and Pixel Pirate
Chrome 52 Beta: CSS containment, simpler performance measurement, streamable responses from service workers, and more options for web push
venerdì 10 giugno 2016
Unless otherwise noted, changes described below apply to the newest Chrome
Beta
channel release for Android, Chrome OS, Linux, Mac, and Windows.
CSS Containment
Rich, interactive experiences are a cornerstone of the web, but can sometimes take a long time to render due to their complexity. Currently, Chrome improves rendering performance by using heuristics to determine which parts of a page have changed. Only sections that have changed are updated instead of rendering the entire page 60 times per second. However, because elements can display outside the bounds of their parents, it is possible that changes to one element could affect elements anywhere else in the document. This dramatically increases the number of elements that Chrome must consider while rendering.
New in this release, the CSS
contain
property allows developers to
prevent an element’s children from displaying outside of its bounds
. When an element updates, this guarantee allows Chrome to ignore any element outside the parent node during rendering, leading to faster rendering times.
Performance Observer
Collecting accurate real-user measurement (RUM) data is critical to detecting performance problems and regressions that may hurt the user experience of a site. Chrome's DevTools allow local site testing, but measuring how a site performs for real users with varied devices can be challenging. The latest version of Chrome supports the
PerformanceObserver
API, which enables a
simple and performant way to collect RUM data
at runtime. Instead of polling for updates,
sites can declare which metrics they’re interested in
. The browser notifies the site when new data points for those metrics become available.
Service Worker Responses Powered by ReadableStreams
Streaming HTTP responses allow browsers to progressively render earlier portions of a large HTML document before the entire response is available. The latest version of Chrome
improves service workers by adding streaming support
. Sites can use the
Streams API
to construct streamable
Response
objects by passing a
ReadableStream
to the Response constructor.
Offline Wikipedia client
demonstrates the speed benefits of readable streams.
Web Push Protocol and VAPID Support
Push notifications
have unlocked a new level of re-engagement for web apps, but until now developers have had to use proprietary push message delivery services and different APIs for different browsers. Chrome now supports
VAPID
, an open standard to authenticate a site’s server with a push service. When using VAPID, sites are given a
Firebase Cloud Messaging
endpoint, which supports the cross-browser
web push protocol
.
Other features in this release
Chrome now pauses animations while showing modal dialog boxes.
HTTP
alternative services
allow sites to specify additional origins that can be used to reach a certain resource, enabling easier protocol upgrades and load balancing.
ImageBitmaps
can be created more easily using
ImageBitmapOptions
to specify configurations on construction.
Sites can now free the memory consumed by an
ImageBitmap
using
ImageBitmap.close()
.
Chrome now supports
OpenType
small capitals and easier styling of numbers using the
font-variant-caps
and
font-variant-numeric
properties.
Touch gestures
inside a cross-origin iframe can no longer trigger popups unless they correspond to a tap gesture, preventing accidental pop-ups during scrolling.
Now only secure origins can
create or delete secure cookies
on Chrome for Android.
The latest version of Chrome supports
-webkit-appearance:none
which disables the default rendering of HTML5
meter
elements and allows easier custom CSS styling.
The
unsafe-dynamic
Content Security Policy expression allows sites to use single-use or hash-based whitelists to verify script sources, making it easier to
protect against cross-origin scripting attacks
.
Sites can
now use the Fetch API
to programmatically
set the referrer policy
for a
request
.
CanvasRenderingContext2D
now supports the
filter
attribute, allowing sites to apply effects to primitives drawn to the canvas.
Sites can now test whether or not a key exists within the bounds of an
IDBKeyRange
using
IDBKeyRange.includes()
.
The
HTMLMediaElement.srcObject
attribute simplifies associating a
MediaStream
with a media element.
AudioParam
now supports the read-only
min
and
max
attributes
to simplify introspection.
RTCCertificates
can now be stored in IndexedDB.
PannerNode
and
AudioListener
now support automation methods, allowing smooth audio transitions.
Stylesheets can now specify alpha values for colors using
eight- and four-bit hexadecimal values
instead of the longer
rgba()
syntax.
Sites
can now experiment
with
persistent storage
as an
origin trial
, allowing a site to disable automatic storage clearing when bookmarked.
Multiple WebVTT tracks will now be presented as
user options
in the default media controls, enabling language selection for captions and subtitles.
postMessage
overrides of the form
postMessage(message,transferables,targetOrigin)
have been deprecated.
The
MediaStream
ended event and the corresponding onended attribute have been deprecated.
The
web app manifest
icons
entry no longer supports the density property.
The
DynamicsCompressorNode.reduction
attribute is now a
readonly float
instead of an
AudioParam
.
flexbox
children with
position:absolute
will now be
positioned using justify and align
if the element does not have a
left:
,
right:
,
top:
,
or bottom:
position specified.
requestAutocomplete()
has been
deprecated and removed
due to low usage numbers.
X-Frame-Option
will no longer be supported in the
meta
tag to support a more secure implementation.
Invalid values for
track-kind
are now treated as
metadata
instead of
subtitles
to improve media behavior in older user agents.
Posted by Shubhie Panicker, Performance Powerhouse
Etichette
$200K
1
10th birthday
4
abusive ads
1
abusive notifications
2
accessibility
3
ad blockers
1
ad blocking
2
advanced capabilities
1
android
2
anti abuse
1
anti-deception
1
background periodic sync
1
badging
1
benchmarks
1
beta
83
better ads standards
1
billing
1
birthday
4
blink
2
browser
2
browser interoperability
1
bundles
1
capabilities
6
capable web
1
cds
1
cds18
2
cds2018
1
chrome
35
chrome 81
1
chrome 83
2
chrome 84
2
chrome ads
1
chrome apps
5
Chrome dev
1
chrome dev summit
1
chrome dev summit 2018
1
chrome dev summit 2019
1
chrome developer
1
Chrome Developer Center
1
chrome developer summit
1
chrome devtools
1
Chrome extension
1
chrome extensions
3
Chrome Frame
1
Chrome lite
1
Chrome on Android
2
chrome on ios
1
Chrome on Mac
1
Chrome OS
1
chrome privacy
4
chrome releases
1
chrome security
10
chrome web store
32
chromedevtools
1
chromeframe
3
chromeos
4
chromeos.dev
1
chromium
9
cloud print
1
coalition
1
coalition for better ads
1
contact picker
1
content indexing
1
cookies
1
core web vitals
2
csrf
1
css
1
cumulative layout shift
1
custom tabs
1
dart
8
dashboard
1
Data Saver
3
Data saver desktop extension
1
day 2
1
deceptive installation
1
declarative net request api
1
design
2
developer dashboard
1
Developer Program Policy
2
developer website
1
devtools
13
digital event
1
discoverability
1
DNS-over-HTTPS
4
DoH
4
emoji
1
emscriptem
1
enterprise
1
extensions
27
Fast badging
1
faster web
1
features
1
feedback
2
field data
1
first input delay
1
Follow
1
fonts
1
form controls
1
frameworks
1
fugu
2
fund
1
funding
1
gdd
1
google earth
1
google event
1
google io 2019
1
google web developer
1
googlechrome
12
harmful ads
1
html5
11
HTTP/3
1
HTTPS
4
iframes
1
images
1
incognito
1
insecure forms
1
intent to explain
1
ios
1
ios Chrome
1
issue tracker
3
jank
1
javascript
5
lab data
1
labelling
1
largest contentful paint
1
launch
1
lazy-loading
1
lighthouse
2
linux
2
Lite Mode
2
Lite pages
1
loading interventions
1
loading optimizations
1
lock icon
1
long-tail
1
mac
1
manifest v3
2
metrics
2
microsoft edge
1
mixed forms
1
mobile
2
na
1
native client
8
native file system
1
New Features
5
notifications
1
octane
1
open web
4
origin trials
2
pagespeed insights
1
pagespeedinsights
1
passwords
1
payment handler
1
payment request
1
payments
2
performance
20
performance tools
1
permission UI
1
permissions
1
play store
1
portals
3
prefetching
1
privacy
2
privacy sandbox
4
private prefetch proxy
1
profile guided optimization
1
progressive web apps
2
Project Strobe
1
protection
1
pwa
1
QUIC
1
quieter permissions
1
releases
3
removals
1
rlz
1
root program
1
safe browsing
2
Secure DNS
2
security
36
site isolation
1
slow loading
1
sms receiver
1
spam policy
1
spdy
2
spectre
1
speed
4
ssl
2
store listing
1
strobe
2
subscription pages
1
suspicious site reporter extension
1
TCP
1
the fast and the curious
23
TLS
1
tools
1
tracing
1
transparency
1
trusted web activities
1
twa
2
user agent string
1
user data policy
1
v8
6
video
2
wasm
1
web
1
web apps
1
web assembly
2
web developers
1
web intents
1
web packaging
1
web payments
1
web platform
1
web request api
1
web vitals
1
web.dev
1
web.dev live
1
webapi
1
webassembly
1
webaudio
3
webgl
7
webkit
5
WebM
1
webmaster
1
webp
5
webrtc
6
websockets
5
webtiming
1
writable-files
1
yerba beuna center for the arts
1
Archive
2024
ago
giu
mag
apr
mar
feb
2023
nov
ott
set
ago
giu
mag
apr
feb
2022
dic
set
ago
giu
mag
apr
mar
feb
gen
2021
dic
nov
ott
set
ago
lug
giu
mag
apr
mar
feb
gen
2020
dic
nov
ott
set
ago
lug
giu
mag
apr
mar
feb
gen
2019
dic
nov
ott
set
ago
lug
giu
mag
apr
mar
feb
gen
2018
dic
nov
ott
set
ago
lug
giu
mag
apr
mar
feb
gen
2017
dic
nov
ott
set
ago
lug
giu
mag
apr
mar
feb
gen
2016
dic
nov
ott
set
ago
giu
mag
apr
mar
feb
gen
2015
dic
nov
ott
set
ago
lug
giu
mag
apr
mar
feb
gen
2014
dic
nov
ott
set
ago
lug
giu
mag
apr
mar
feb
gen
2013
dic
nov
ott
set
ago
lug
giu
mag
apr
mar
feb
gen
2012
dic
nov
ott
set
ago
lug
giu
mag
apr
mar
feb
gen
2011
dic
nov
ott
set
ago
lug
giu
mag
apr
mar
feb
gen
2010
dic
nov
ott
set
ago
lug
giu
mag
apr
mar
feb
gen
2009
dic
nov
set
ago
lug
giu
mag
apr
mar
feb
gen
2008
dic
nov
ott
set
Feed
Follow @ChromiumDev
Give us feedback in our
Product Forums
.