Presentation WT-4072, Rendering Web Content at 60fps, by Vangelis Kokkevis, Antoine Labour and Brian Salomon at the AMD Developer Summit (APU13) Nov. 11-13, 2013.
WT-4151, Efficient Delivery of 3D Web Contents with Khronos and MPEG Technolo...AMD Developer Central
Presentation WT-4151, Efficient Delivery of 3D Web Contents with Khronos and MPEG Technologies, by Khaled Mammou, at the AMD Developer Summit (APU13) November 11-13, 2013
WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by Mikael ...AMD Developer Central
Presentation WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by Mikael Sevenier, at the AMD Developer Summit (APU13) November 11-13, 2013.
WT-4067, High performance WebGL games with the Turbulenz Engine, by Ian Balla...AMD Developer Central
Presentation WT-4067, High performance WebGL games with the Turbulenz Engine, by Ian Ballantyne, at the AMD Developer Summit (APU13) November 11-13, 2013.
WT-4151, Efficient Delivery of 3D Web Contents with Khronos and MPEG Technolo...AMD Developer Central
Presentation WT-4151, Efficient Delivery of 3D Web Contents with Khronos and MPEG Technologies, by Khaled Mammou, at the AMD Developer Summit (APU13) November 11-13, 2013
WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by Mikael ...AMD Developer Central
Presentation WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by Mikael Sevenier, at the AMD Developer Summit (APU13) November 11-13, 2013.
WT-4067, High performance WebGL games with the Turbulenz Engine, by Ian Balla...AMD Developer Central
Presentation WT-4067, High performance WebGL games with the Turbulenz Engine, by Ian Ballantyne, at the AMD Developer Summit (APU13) November 11-13, 2013.
HC-4019, "Exploiting Coarse-grained Parallelism in B+ Tree Searches on an APU...AMD Developer Central
Presentation, HC-4019, "Exploiting Coarse-grained Parallelism in B+ Tree Searches on an APU," by Mayank Daga and Mark Nutter at the AMD Developer Summit (APU13) Nov. 11-13.
MM-4104, Smart Sharpen using OpenCL in Adobe Photoshop CC – Challenges and Ac...AMD Developer Central
Presentation MM-4104, Smart Sharpen using OpenCL in Adobe Photoshop CC – Challenges and Achievements, by Joseph Hsieh at the AMD Developer Summit, November 11-13, 2013.
Keynote (Phil Rogers) - The Programmers Guide to Reaching for the Cloud - by ...AMD Developer Central
Keynote presentation, The Programmers Guide to Reaching for the Cloud, by Phil Rogers, AMD Corporate Fellow, AMD, at the AMD Developer Summit (APU13), Nov. 11-13, 2013.
MM-4092, Optimizing FFMPEG and Handbrake Using OpenCL and Other AMD HW Capabi...AMD Developer Central
Presentation MM-4092, Optimizing FFMPEG and Handbrake Using OpenCL and Other AMD HW Capabilities, by Srikanth Gollapudi at the AMD Developer Summit (APU13) November 11-13, 2013.
HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated ...AMD Developer Central
Presentation HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated Processing Units, by Robert Engel at the AMD Developer Summit (APU13) Nov. 11-13, 2013.
Vulkan and DirectX12 share many common concepts, but differ vastly from the APIs most game developers are used to. As a result, developing for DX12 or Vulkan requires a new approach to graphics programming and in many cases a redesign of the Game Engine. This lecture will teach the basic concepts common to Vulkan and DX12 and help developers overcome the main problems that often appear when switching to one of the new APIs. It will explain how those new concepts will help games utilize the hardware more efficiently and discuss best practices for game engine development.
For more, visit http://developer.amd.com/
HC-4019, "Exploiting Coarse-grained Parallelism in B+ Tree Searches on an APU...AMD Developer Central
Presentation, HC-4019, "Exploiting Coarse-grained Parallelism in B+ Tree Searches on an APU," by Mayank Daga and Mark Nutter at the AMD Developer Summit (APU13) Nov. 11-13.
MM-4104, Smart Sharpen using OpenCL in Adobe Photoshop CC – Challenges and Ac...AMD Developer Central
Presentation MM-4104, Smart Sharpen using OpenCL in Adobe Photoshop CC – Challenges and Achievements, by Joseph Hsieh at the AMD Developer Summit, November 11-13, 2013.
Keynote (Phil Rogers) - The Programmers Guide to Reaching for the Cloud - by ...AMD Developer Central
Keynote presentation, The Programmers Guide to Reaching for the Cloud, by Phil Rogers, AMD Corporate Fellow, AMD, at the AMD Developer Summit (APU13), Nov. 11-13, 2013.
MM-4092, Optimizing FFMPEG and Handbrake Using OpenCL and Other AMD HW Capabi...AMD Developer Central
Presentation MM-4092, Optimizing FFMPEG and Handbrake Using OpenCL and Other AMD HW Capabilities, by Srikanth Gollapudi at the AMD Developer Summit (APU13) November 11-13, 2013.
HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated ...AMD Developer Central
Presentation HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated Processing Units, by Robert Engel at the AMD Developer Summit (APU13) Nov. 11-13, 2013.
Vulkan and DirectX12 share many common concepts, but differ vastly from the APIs most game developers are used to. As a result, developing for DX12 or Vulkan requires a new approach to graphics programming and in many cases a redesign of the Game Engine. This lecture will teach the basic concepts common to Vulkan and DX12 and help developers overcome the main problems that often appear when switching to one of the new APIs. It will explain how those new concepts will help games utilize the hardware more efficiently and discuss best practices for game engine development.
For more, visit http://developer.amd.com/
- Vector- and Raster-based Graphics
-- Idea behind Vector- and Raster-based Graphics
-- Crispness
-- Overview of Raster-based Drawing APIs
- Platform independent Graphics and GUIs in the Web Browser
-- Bare HTML Pages
-- Plugins and Problems
-- From rich Content to HTML 5
- Drawing with HTML 5 Canvas
-- Continuous, Event driven and free Drawing
-- Basic Drawing "How does Drawing work with JavaScript?"
-- Interaction with Controls
By Maksim Sisov.
Slides at https://docs.google.com/presentation/d/13D5M9ZDGM-i33GDjMFLFrPHWRvYJcZvai3zI4RQ0tDM/edit#slide=id.p1
(c) BlinkOn 10
Toronto, Ontario (Canada)
April 09 - 10, 2019
https://docs.google.com/document/u/1/d/e/2PACX-1vTgBrqyQ4KCchsymvssri1pN1BkOg3sEqHThqhvFDl9-zl-hLx1S5c8sc5gaZ_VzKEVaYj94H3m1vso/pub#h.igsyfaa103a0
How the Universal Render Pipeline unlocks games for you - Unite Copenhagen 2019Unity Technologies
Learn how the Boat Attack demo was created using the Universal Render Pipeline. These slides offer an in-depth look at the features used in the demo, including Shader Graph, Custom Render Passes, Camera Callback, and more.
Speaker:
Andre McGrail - Unity Technologies
Watch the session on YouTube: https://youtu.be/ZPQdm1T7aRs
Martin Dobias of Lutra Consulting explaining some of the performance enhancements coming in the next releases of QGIS including multi-threaded processing.
QGIS UK User Group - QGIS Performance Enhancements (Lutra)QGIS UK
Martin Dobias of Lutra Consulting explaining some of the performance enhancements coming in the next releases of QGIS including multi-core, multi-threaded processing.
Presentation about developing games and graphic visualizations in Pascal by Michalis Kamburelis, author of Castle Game Engine.
Presented in Salamanca at International Pascal Congress 2023 . See https://castle-engine.io/conferences .
Computer Graphics - Lecture 01 - 3D Programming I💻 Anton Gerdelan
Slides from when I was teaching CS4052 Computer Graphics at Trinity College Dublin in Ireland.
These slides aren't used any more so they may as well be available to the public!
There are some mistakes in the slides, I'll try to comment below these.
This is the second lecture, and introduces programming with OpenGL 4 and shaders.
Running HTML5 Mobile Web Games at 60fpsApoorv Saxena
How to run Web Mobile Games at 60fps, talk presented at Meta Refresh 2015 conference.
Presentation discusses the performant tweaks / approaches to consider for running games at mobile at 60fps, and also entails the different pros and cons related to each approach.
In this side, I introduce Webrender 1.0 (it have been updated to 2.0 after 08/03/2016) that is based on Rust language and OpenGL to develop a proof of concept to bring the game engine technology into Web browser. It mentions how Scene Graph, Batching, Composite work in this modern web browser, Servo.
Enable hardware acceleration for GL applications without glamor on Xorg modes...Igalia
This talk will focus on development efforts and progress of enabling hardware
acceleration using the modesetting Xorg driver on Raspberry Pi 1-3 devices
without using Glamor.
We will discuss the reasons for disabling Glamor on these Raspberry Pi devices,
along with some previous attempts to accomplish this. This talk will also cover
the methods and technologies used in the current implementation such as DRI3,
GEM and GBM.
(c) X.Org Developer Conference (XDC) 2022
October 4-6, 2022
Minneapolis, Minnesota, USA
https://indico.freedesktop.org/event/2/
AMD’s math libraries can support a range of programmers from hobbyists to ninja programmers. Kent Knox from AMD’s library team introduces you to OpenCL libraries for linear algebra, FFT, and BLAS, and shows you how to leverage the speed of OpenCL through the use of these libraries.
Review the material presented in the AMD Math libraries webinar in this deck.
For more:
Visit the AMD Developer Forums:http://devgurus.amd.com/welcome
Watch the replay: www.youtube.com/user/AMDDevCentral
Follow us on Twitter: https://twitter.com/AMDDevCentral
This is the slide deck from the popular "Introduction to Node.js" webinar with AMD and DevelopIntelligence, presented by Joshua McNeese. Watch our AMD Developer Central YouTube channel for the replay at https://www.youtube.com/user/AMDDevCentral.
This presentation accompanies the webinar replay located here: http://bit.ly/1zmvlkL
AMD Media SDK Software Architect Mikhail Mironov shows you how to leverage an AMD platform for multimedia processing using the new Media Software Development Kit. He discusses how to use a new set of C++ interfaces for easy access to AMD hardware blocks, and shows you how to leverage the Media SDK in the development of video conferencing, wireless display, remote desktop, video editing, transcoding, and more.
An Introduction to OpenCL™ Programming with AMD GPUs - AMD & Acceleware WebinarAMD Developer Central
This deck presents highlights from the Introduction to OpenCL™ Programming Webinar presented by Acceleware & AMD on Sept. 17, 2014. Watch a replay of this popular webinar on the AMD Dev Central YouTube channel here: https://www.youtube.com/user/AMDDevCentral or here for the direct link: http://bit.ly/1r3DgfF
Learn more about DirectGMA in this blog post: bit.ly/AMDDirectGMA
AMD has introduced Direct Graphics Memory Access in order to:
‒ Makes a portion of the GPU memory accessible to other devices
‒ Allows devices on the bus to write directly into this area of GPU memory
‒ Allows GPUs to write directly into the memory of remote devices on the bus supporting DirectGMA
‒ Provides a driver interface to allow 3rd party hardware vendors to support data exchange with an AMD GPU using DirectGMA
‒ and more
View the accompanying blog post here: bit.ly/AMDDirectGMA
This Webinar explores a variety of new and updated features in Java 8, and discuss how these changes can positively impact your day-to-day programming.
Watch the video replay here: http://bit.ly/1vStxKN
Your Webinar presenter, Marnie Knue, is an instructor for Develop Intelligence and has taught Sun & Oracle certified Java classes, RedHat JBoss administration, Spring, and Hibernate. Marnie also has spoken at JavaOne.
The Small Batch (and other) solutions in Mantle API, by Guennadi Riguer, Mant...AMD Developer Central
This presentation discusses the Mantle API, what it is, why choose it, and abstraction level, small batch performance and platform efficiency.
Download the presentation from the AMD Developer website here: http://bit.ly/TrEUeC
Inside XBox One by Martin Fuller from the Sweden Game Developers Conference, June 2, 2014, Stockholm, Sweden. View other presentations here: http://bit.ly/TrEUeC
Computer Vision Powered by Heterogeneous System Architecture (HSA) by Dr. Ha...AMD Developer Central
Computer Vision Powered by Heterogeneous System Architecture (HSA) by Dr. Harris Gasparakis, AMD, at the Embedded Vision Alliance Summit, May 2014.
Harris Gasparakis, Ph.D., is AMD’s OpenCV manager. In addition to enhancing OpenCV with OpenCL acceleration, he is engaged in AMD’s Computer Vision strategic planning, ISVs, and AMD Ventures engagements, including technical leadership and oversight in the AMD Gesture product line. He holds a Ph.D. in theoretical high energy physics from YITP at SUNYSB. He is credited with enabling real-time volumetric visualization and analysis in Radiology Information Systems (Terarecon), including the first commercially available virtual colonoscopy system (Vital Images). He was responsible for cutting edge medical technology (Biosense Webster, Stereotaxis, Boston Scientific), incorporating image and signal processing with AI and robotic control.
Productive OpenCL Programming An Introduction to OpenCL Libraries with Array...AMD Developer Central
In this webinar presentation, ArrayFire COO Oded Green demonstrates best practices to help you quickly get started with OpenCL™ programming. Learn how to get the best performance from AMD hardware in various programming languages using ArrayFire. Oded discusses the latest advancements in the OpenCL™ ecosystem, including cutting edge OpenCL™ libraries such as clBLAS, clFFT, clMAGMA and ArrayFire. Examples are shown in real code for common application domains.
Watch the webinar here: http://bit.ly/1obT0M2
For more developer resources, visit:
http://arrayfire.com/
http://developer.amd.com/
Follow us on Twitter: https://twitter.com/AMDDevCentral
See info in the slides for more contact information and resource links!
Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14AMD Developer Central
Johan Andersson will show how the Frostbite 3 game engine is using the low-level graphics API Mantle to deliver significantly improved performance in Battlefield 4 on PC and future games from Electronic Arts in this presentation from the 2014 Game Developers Conference in San Francisco March 17-21. Also view this and other presentations on our developer website at http://developer.amd.com/resources/documentation-articles/conference-presentations/
RapidFire - the Easy Route to low Latency Cloud Gaming Solutions - AMD at GDC14AMD Developer Central
Learn more about how AMD’s RapidFire SDK simplifies the delivery of multi-game streaming from a single GPU while minimizing latency to ensure one of the best cloud gaming experiences in this presentation from the 2014 Game Developers Conference in San Francisco March 17-21. Also view this and other presentations on our developer website at http://developer.amd.com/resources/documentation-articles/conference-presentations/
Mantle and Nitrous - Combining Efficient Engine Design with a modern API - AM...AMD Developer Central
Oxide Games Partners Dan Baker and Tim Kipp will show you how to build a high throughput renderer using the Mantle API in this AMD technology presentation from the 2014 Game Developers Conference in San Francisco March 17-21. Also view this and other presentations on our developer website at http://developer.amd.com/resources/documentation-articles/conference-presentations/
This AMD technology presentation from the 2014 Game Developers Conference in San Francisco March 17-21 explains how Mantle features can enable developers to improve both CPU and GPU performance in their titles. Also view this and other presentations at http://developer.amd.com/resources/documentation-articles/conference-presentations/
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
WT-4072, Rendering Web Content at 60fps, by Vangelis Kokkevis, Antoine Labour and Brian Salomon
1. Rendering Web Content
@ 60FPS
Vangelis Kokkevis & Brian Salomon
vangelis@google.com bsalomon@Google.
com
2. Google Chrome
●
●
●
Recently celebrated Chrome’s fifth anniversary!
Hundreds of millions of active users
Cross platform:
○
○
●
●
●
Windows (XP +) , Mac, Linux
Chrome OS (x86 and ARM), Android, iOS (*)
Open source: Chromium and Blink
Rapid release cycle, four channels (canary, dev, beta, stable)
Core Principles: Speed, Security, Stability, Simplicity
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
4. Why use the GPU?
●
Enable new platform features:
○
●
3D CSS, WebGL
Speed & Responsiveness
○
○
○
Less jank: Smoother scrolling, 60fps CSS animations
Page “sticks to your finger”
Faster <canvas>, <video>
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
5. Accelerated Compositing
Re-rasterizing is expensive and should be avoided if possible
Caching rasterized contents into textures is an effective way to reduce raster costs.
Split the page contents into layers, use the GPU to composite them
What gets a layer?
●
●
Content that rasters on the GPU: WebGL, 2D Canvas, Video, Flash
Content that is expected to change infrequently:
○
○
○
●
CSS transform and opacity animations
Overflow scroll
Fixed position elements
Content that overlaps other composited content
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
7. The Rendering Pipeline
User Input
or Timer
Event
Run Script
Rasterize
Invalidated
Content
Re-Layout
Document
Upload New
Content to
Textures
Draw Textured
Quads
< 16ms =
(if needed)
Compositor
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
8. Tiling
Large content layers get tiled
●
●
Layer split up into 256 x 256 or 512 x 512 pixel tiles
Cache rasterized contents in manageable chunks to
○
○
Speed up scrolling
Conserve VRAM
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
10. GPU Architecture
Browser
Screen
Shared Memory
Renderer
Blink (WebGL)
Skia (Canvas)
Compositor
CMD
CMD
CMD
ringbuffer
ringbuffer
ringbuffer
GLES2
Client
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
GPU Process
GLES2
Service
Transfer
Transfer
Transfer
buffer
buffer
buffer
ANGLE (GL ES -> D3D)
13. Threaded Compositing
Solution: Move compositing to its own thread
16ms
Main
Thread
Compositor
Thread
JS
Upload
Layout
16ms
Rasterize
Draw
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
Upload
Draw
14. Good enough?
The devil’s in the details
●
●
Need to aggressively pre-paint tiles to avoid running out of rasterized content in the compositor
thread when scrolling.
How many tiles to pre-paint?
○
○
Too many: VRAM pressure, possibly lots of unnecessary work
Too few: Checkerboarding
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
15. Deferred Rasterization
Less checkerboarding: Move raster out of main thread
16ms
Main
Thread
Compositor
Thread
Raster
Thread(s)
16ms
JS
Sort
Tiles
Record Display List
Layout
Issue
Raster
Tasks
UT
RT
RT
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
UT
RT
UT
Draw
RT
RT
Sort
Tiles
RT
Issue
Raster
Tasks
UT
UT
RT
UT
RT
UT
Draw
RT
RT
16. Tooling
Lots of threads, lots of asynchronous tasks.
Good performance tools are a must for debugging and improving!
Tools we use when developing Chrome:
●
●
●
Tracing (to monitor what each thread is doing in a timeline)
FrameViewer (Inspect layers, tiles and rasterization)
Telemetry (automated performance measurement framework)
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
20. Challenges
●
●
●
●
●
●
Rasterization is a bottleneck
The main thread is unpredictable (JS, layout, long records)
There’s not enough cores to go around (mobile)
Bandwidth is at premium
GPU is a shared resource and can get oversubscribed
Huge matrix of OS / GPU / CPU / Drivers
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
21. What does the future hold
More performance gains:
●
●
●
●
Hardware accelerated rasterization
“Zero-copy” texture uploads
Hardware accelerated image decode
Smarter and more efficient layers
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
24. Pipeline Stages
SkPaint: Life of a Path
Programmable (via Subclassing)
●
SkRasterizer
○
○
●
Coverage Mask -> Coverage Mask
e.g. Blur
Source-Space Coordinate -> Color
e.g. Gradients, Bitmap Fill
SkColorFilter
○
○
Color -> Color
e.g. Color Matrix, Blend with constant Color
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
Src Image -> New Src Image
e.g. Color Blur, Morphology Filter
Subsume SkColorFilter?
SkXfermode
○
○
○
Path -> Coverage Mask
e.g. ?? [considering deprecating]
SkShader
○
○
●
●
SkMaskFilter
○
○
●
Path -> Path
e.g. Dashing
SkImageFilter
○
○
○
SkPathEffect
○
○
●
●
AKA Blend
Src Color + Dst Color -> New Dst Color
e.g. Porter-Duff modes, Darken, …
Fixed Function
●
●
●
●
●
●
Stroking (width, caps, joins)
Text settings (typeface, pt size, …)
AA enable/disable
Image filtering quality level
Alpha
Default color if no SkShader
25. GPU Shaders
GPU Backend has an “effect” system for
building shaders
●
●
●
Effects arranged in linear order.
Write a snippet of GLSL fragment
code.
Effect passes a vec4 “color” to the
next effect.
○
●
●
Input to first effect is either
constant or per-vertex value.
Can insert uniforms, functions,
textures.
Internal effects can
○
○
Insert vertex shader code.
Require additional vertex
attributes.
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
Initial Coverage
Initial Color
Color Effect 1
Color Effect 2
final color
texture
matrix
uniform
Cov. Effect 1
Cov. Effect 2
Cov. Effect 3
final coverage
Important to keep color and fractional coverage separate.
26. Pipeline Stages and GPU Backend
●
SkPathEffect
○
○
○
○
●
SkRasterizer: ignored
○
○
●
Perform on CPU
Call filterPath(), draw the resulting path
Special hooks for some dashing cases
Future: general mechanism to avoid creating intermediate path object on CPU
No known clients use custom rasterizers.
Act as though no rasterizer installed
SkMaskFilter:
○
Filter object is given a gpu “context object” and primitive’s mask
■
■
■
○
○
○
Can create intermediate textures
Performs draws using Effects
Returns new mask as a texture.
Special case for filters that can be performed inline with the draw to dst
In practice the only significant SkMaskFilter is blur
Future: Specialize blur code path for simple primitive types (e.g. rects)
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
27. Pipeline Stages and GPU Backend Continued
●
SkShader
○
○
●
SkColorFilter:
○
○
●
Produces an Effect object that is inserted into the draw
Implementations for bitmap shaders, various gradient types, noise shader.
Produces an effect that receives SkShader effect’s output.
Implementations for color matrix, color table, blend-against-const-color
SkImageFilter:
○
○
Works the same way as SkMaskFilter but with color input/ouput
Implementations for
■
■
■
○
Graph implementation for chaining SkImageFilters together (CPU or GPU)
■
■
○
Color blur
Lighting effect
Any (color filter, shader, or xfermode) as an image filter
SVG image filter DAG
Future: Optimization pass to minimize intermediate draws.
Shortcuts for Image filters that can be done inline or are really just a matrix.
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
28. Pipeline Stages and GPU Backend Continued
●
SkXfermode: Either as GL coefficients or Effect
○
The Porter-Duff blend modes (src-over, etc) are all expressible as GL blend coeffs
■
○
Many others are not:
■
■
■
■
○
Big caveat here
Luminance
Darken
Arithmetic
…
Xfermode can install an Effect
■
Access to the destination?
●
Effect framework provides abstract interface for accessing the dst color
●
GL_EXT_shader_framebuffer_fetch if available
●
Future: GL_NV_texture_barrier
●
Otherwise a dst-copy-to-texture is triggered
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
29. Primitives: Text
●
Skia sits on top of system font engine:
○
○
○
○
●
Large ALPHA8 texture used as glyph mask atlas (1024 x 2048)
○
○
●
FreeType
CoreText
GDI
DirectWrite
Will use a second RGB(A) texture if there are “LCD” glyphs
Texture divided into 256x256 texel “plots”
Strike: A unique combination of
●
●
Typeface
Size
Style (italic, bold, …)
Strikes claim (multiple) plots
Plots purged wholesale using LRU
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
Strike 0
Strike 1
Strike 0
Strike 2
Strike 2
Strike 1
Strike 3
Strike 3
Strike 0
Strike 3
Strike 3
Strike 1
Strike 2
○
○
○
Strike 3
(free)
Strike 2
30. Primitives: Text Continued
●
●
Glyphs packed in plots packed using Skyline algorithm [Jukka Jylänki http://clb.demon.fi/]
Attempt to perform all uploads for a frame before draws
○
○
●
Avoid flushing draws
○
○
●
●
●
Queue GL draws
Uploads go through immediately
Only flush draws to GL when a plot is purged that is referenced in currently queued draws
Matters a lot more on mobile, especially tiled architectures
Works pretty well for scrolling
Struggles with pinch-zoom
Under development: distance field atlas
○
○
Same texture partitioning and replacement scheme
“Masks” are (mostly) resolution independent
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
31. Primitives: Rects
Not anti-aliased: Simple, draw a quad!
Two approaches for anti-aliasing (non-MSAA):
●
Geometric
○
○
○
Create inner and outer offset geometry
Offset is 0.5 pixels
Use “coverage” vertex attribute
■
■
○
●
c=1
0 at outer offset rect
1 at inner offset rect
c=0
Handle degenerate cases
Shader
○
Attributes:
■
■
■
○
W = rect.width() + 0.5, H = rect.height() + 0.5
Y = normalized y-axis of rect
C = center of rect
coverage in Y at pixel P is clamp(H-((p - C) dot Y), 0, 1)
Geometry shaders could reduce VBO size and save CPU cycles
W
C
Y
H
p
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
32. Primitives: Misc
Adaptations for stroked rectangles
Similar shader techniques for:
●
●
●
Ellipses
Circles
Rounded-Rectangles
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
33. Primitives: Paths
●
Why are paths hard?
○
○
In most general case have to handle both the fill rule and anti-aliasing
After a blend coverage/alpha distinction is lost. Must only perform one blend in general.
Can’t double blend in overlap!
Can’t anti-alias interior edge!
Multiple edges from different contours
relevant to pixels in concavities!
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
34. Primitives: Paths Continued
●
●
●
●
MSAA solves the AA problem
Use the stencil to solve the fill rule problem
Tessellate contours into line segments
Pass 1:
○
○
○
●
+1
Draw the tessellated contours as triangle fan
Disable color writes
Stencil op: +1 for front face, -1 for back face
-1
Pass 2:
○
○
○
Draw bounding geometry
Enable color writes
Stencil func
■
■
●
Pass 1
+1
Winding: Pass if stencil is non-zero
Even/Odd: Pass if LSB is 1
Avoid tessellating quadratic and cubic beziers:
○
○
○
Discard in FS if outside the curve [Kokojima et al.]
Need per sample discard or sample coverage mask
No-go on ES3 :(
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL
Pass 2
35. Primitives: Paths Continued
For AA paths without MSAA:
●
●
●
Detect if path is one of the other primitive types (e.g. rounded rectangle)
If very thin stroke draw as AA lines (and ignore double blend problem)
If path is convex fill rule problem goes away
○
○
○
●
Fan the on-contour control points
Draw bounding hulls of curves
Compute coverage using implict eq. approx distance to curve [LoopBlinn]
Otherwise, SW rasterize mask and upload
| RENDERING WEB CONTENT AT 60FPS | NOVEMBER 12, 2013 | CONFIDENTIAL