Engineering Windows 7

Welcome to our blog dedicated to the engineering of Microsoft Windows 7

Engineering the Windows 7 Boot Animation

Engineering the Windows 7 Boot Animation

As we connect through this blog and through all of those talking about Windows 7 it is clear that folks have a lot of passion around many topics.  We learned early on about the passion around the boot/startup sequence and how important it was for that to go by quickly! At the same time, we know that it is really dull to watch a HDD light blink when resuming a machine from hibernate or powering up a machine. To improve this first connection with people, we set out to improve the boot sequence—jazz it up if you will. It sounds pretty easy, but as we looked into solving this we found it is a pretty significant engineering challenge. Our goal was to have fun while having no impact on the boot performance of the system. To explain this engineering and describe the boot sequence, Karen Wong, a program manager on our Core User Experience feature team, authored this post. --Steven

Design

We use the word “personality” to refer to some of the characteristics of software that connect emotionally with people.  ‘Light’ and ‘energy’ are some of the terms we use to describe the personality of Windows 7. As we designed Windows 7 it became clear that in order to showcase these elements of Win7’s personality, we needed go above and beyond what we did with Vista’s boot visuals.

From a design perspective, we know that the visual presentation of a feature plays a key role in the user’s perception of performance and quality.  Our objective was to make Windows boot beautiful and was inspired by our Windows 7 personality of light and energy; and the way these forms reveal themselves in nature became our design palette.  Words such as “bioluminescence”, “organic”, “humble beauty”, and “atmosphere” came up frequently in our brainstorming sessions. We know that in isolation these might sound a bit corny, but this is all part of the overall goals of Windows 7.

Over two dozen boot sequence designs were created, reviewed, and user tested to evaluate them against our goals.  Designs varied in the saturation and/or brightness of color, the complexity of motion, and lighting effects.  Here are some sketches from our design journey:

Design sketches for the proposed boot animation

The final design in Windows 7 shows energy approaching from four directions, that join to form a light that projects through a window (of course it is no coincidence that the Windows logo resembles a window!).  A subtle pulse indicates progress thereafter; another design detail that reinforces the liveliness of Windows 7’s personality.

From a design perspective, this new boot sequence met all of our design goals, and we were excited to send it out into the world.  However, boot had to be more than just a pretty face.  From an engineering perspective, we had some clear challenges to overcome, as we knew that “time to desktop” was still the most important thing to users. Visual delight could not trump getting to the desktop faster and many of you have been critical of features that are dubbed “eye candy” – the boot sequence is not going to be one of those features for sure. 

No compromise on performance

If we had kept everything the same from Vista and simply updated the boot animation to the new Win7 look, we would not have achieved new levels performance and quality that we aspire to.  In fact, significant code changes were required in order to make the new boot animation even possible in Win7. 

In Vista, the boot loader is using a low resolution 640x480 screen, and file size required for the green animated progress bar is very small. Furthermore, the Vista boot screen had low color depth – 16 bits per pixel (bpp). We increased this in Win7 to 32 bpp, which enabled the color richness you see in the new boot animation. Updates to the Vista boot progress indicator were achieved via the CPU, which was susceptible to I/O time, therefore causing occasional glitches in the animation. With the low resolution screen, limited color depth, and susceptibility to glitches – we knew we had our work cut out for us if we wanted to build something fancier for Win7.

We started with the Win7 boot loader using a different mechanism to display the boot animation. It gets a pointer to the frame buffer from the firmware (either BIOS or UEFI firmware), and displays a higher resolution image (1024 x 768). It animates the image while the kernel and boot critical device drivers are loaded into memory.   Since the native graphics driver for the display is not loaded into memory and initialized yet, the animation is run by using the CPU, and by updating the frame buffer for the graphics display. We made an additional optimization - to have the CPU use write-combined caching to accelerate performance.

Michael Fortin’s blog entry on boot performance describes how the early stage of boot is I/O bound, as it is loading the kernel, device driver files, and other system component files.  We therefore limited the dimensions of the boot animation to a small region of the screen, to avoid introducing any delay during the early stage of boot.  A larger animation area would require loading a larger set of animation images, which adds to the file I/O.  The animation images are compressed by incorporating the bitmaps as resources, which are then compressed using WIM image compression. WIM image compression reduces the overall file size, thereby reducing the I/O required to read them in. It also reduces the on-disk footprint. Animating a smaller region of the screen, and using a slightly lower frame rate also keeps the CPU overhead of updating the frame buffer to a low enough level, that there is no added overhead to the boot time.

Another change we made that improved not only the performance of boot, but the quality, was the reduction of transitions in graphics mode. These transitions occur during initialization of the graphics subsystem and Windows shell. In Vista, these cause the boot experience to be less smooth, as the display changes (flashes black) a few times before presenting the user with a logon screen (or the user’s desktop if there is only one system user). 

After looking deep into our boot architecture for performance and quality improvements to enable the new animation, we were pleasantly surprised that the act of beautifying the boot animation created a new opportunity to further decrease time to desktop.  In Vista, when a customer powered on the machine, the boot sequence included an animation of the Windows flag, or ‘pearl’, before reaching the login screen (or the desktop if the user is set to auto-login).  Due to the Vista boot architecture constraints, this pearl animation can only play after boot code has already completed. 

Vista boot animation 
Vista Boot Sequence, with Pearl Animation

Now that new boot visuals display a rich animation that reflects the Windows 7 personality, the pearl animation seemed out-of-date and redundant, and was removed.  As a result, we saved the time it takes to play this animation after boot is complete.

Windows 7 boot animation.
Windows 7 Boot Sequence, Pearl Animation Removed

You may also be wondering what happened to the startup sound.  In Vista, the sound had to be synchronized with the pearl animation to produce the highest quality experience.  This has potential performance impact on some hardware, as we require the system’s sound stack to be loaded to complete the pearl sequence.  In the cases when we are waiting for the system’s sound playback to be ready, a delay can occur in getting to the desktop.  As such, we changed the sound to now play asynchronously, anytime after the logon screen loads.  On most hardware that we tested, this is right when the logon screen displays.  We heard customer feedback in Vista that the sound played and caught your attention, but boot was not yet complete.  So in addition to performance benefits, this change also improves the user experience by letting users know when their machine is ready for use. 

The sum of the boot code optimizations and removal of the pearl animation from Vista enabled us to add a rich, high-quality animation during boot, with no increase in the time it takes a user to reach the desktop.

Designing for a wide range of hardware

The boot experience varies depending on the user’s hardware.  We made some design decisions to ensure the best visual experience across a wide range of hardware, however the time it takes a system to get to the desktop is mainly hardware-dependent.

For example, you may notice that there is a delay before the animation starts during boot, and this delay time varies depending on system hardware.  To optimize for showing immediate feedback, we actually display text on the boot screen before Windows has had a chance to start all the processors on the system. It is only when that is complete that the animation can run asynchronously to the rest of the I/O during boot (which as discussed earlier is necessary for optimal performance and quality).

You may also notice that the Windows flag’s dimensions during boot may change slightly on different screen sizes.  Due to technical constraints in Win7, boot is always displayed in our recommended minimum resolution – 1024x768, regardless of the system’s native resolution.  Today, most hardware is set to stretch the boot sequence to fill the screen, as opposed to centering it.  Consequently, the boot animation is usually stretched on screens that are of different aspect ratio than 1024x768; however, we did test the sequence on common aspect ratios to ensure that visual quality was preserved.

Boot, Reboot and Resume from Hibernate

With all this hard work to improve the boot experience, we couldn’t let it go to waste.  As such, users will also have this experience when they resume from hibernate. 

Personalization

We know many of you might be asking if you could include your own animation or customize this sequence. This is not something we will support in Windows 7.  We’ve talked about and shown a great many “personalization” elements of Windows 7 already, such as the new themepacks which you can try out in the beta. The reasons for this should be pretty clear, which is that we cannot guarantee the security of the system to allow for arbitrary elements to be loaded into memory at boot time. In the early stages of starting Windows, the system needs to be locked down and execute along a very carefully monitored and known state as tools such as firewalls and anti-virus checking are not yet available to secure the system. And of course, even though we’re sure everyone would follow the requirements around image size, content, etc. due to performance we would not want to build in all the code necessary to guarantee that all third parties would be doing so. One of our design goals of Windows 7 was around making sure there are ample opportunities to express yourself and to make sure your PC is really your PC and so we hope that you’ll understand why this element is one we need to maintain consistently.

This was a quick behind the scenes look at something that we hope you enjoy. With Windows 7 we set out to make the experience of starting a Windows PC a little more enjoyable, and from the feedback we’ve seen here and in other forums, we think we’re heading in the right direction. In addition to our efforts to make boot fast, we also have a goal to make the system robust enough, such that most of you will not see this new boot animation that often and when you do it will be both enjoyable and fast!

--Karen

Leave a Comment
  • Please add 3 and 3 and type the answer here:
  • Post
Thanks for sharing your comment! If your comment doesn't appear right away, please be patient as it may take a few minutes to publish or may require moderation.
  • @ Xepol

    Are you serious?  I use hibernate *exclusively* on my (now ancient) P4 3.0ghz Dell Vista box.  As someone else already mentioned, 'hibernate' should be the default setting.  It boots faster (significantly), shuts down faster, and is useable more quickly.  The 'hibernate' and 'sleep' features in Win7 also seem to work great on my Dell D630 laptop.

    @ Karen

    Unlike some others, I truly appreciate the time and effort put into streamlining the boot process animations (and technology therein).  Watching animations and/or hearing sounds "stutter" during the boot or login is a real turn off.

    Yip

  • At 1st I thought, Oh God, don't let it be any star wars crap, or any space crap for that matter. NASA is after all founded on a captured Nazi! Go suck on that..

    Then I though, NO, it's a clump of bugs hitting the windscreen! :-) or window!!!!

    The Windows 7 Boot Animation is - THE BEST YOU HAVE EVER DONE - and although poo-pooed by nerds, is important to your retail customers.

    GOOD WORK - I LIKE WATCHING IT ALL THE TIME...

  • Nicely done ... congrats on the rich graphical experience you give us at every boot/resume. The inner workings of the whole process is amazing

  • Considering how awful the Windows 2000 and XP start up was, I'm greatful for the changes in Windows 7. My Windows 7 startup doesn't falter nor does the sound stutter as some have suggested on my desktop. Then again I've got a dual core with top of the line DDR2 memory and SATA drives.

    However, what do you expect from ancient machines? They were designed for a completely different era. They were designed for single core breaking the 1 Ghz barrier. Windows 7 and Vista was designed for the multi-core, 2 and 3 Ghz processors, terabyte drives, and solid state drives that are coming out. Thats like expecting a 1970 Camero to have the same fuel efficiency of a 2010 Chevy Volt!

    Its time to retire some of these machines. Every machine has a retirement point. Where the cost of maintaining the machine outweighs investing in a new machine.

    Great Job Windows team on the bootup screen. I suggest fine tuning the hibernate function, which works pretty darn well on my modern machine. I also want you guys to work on performance. We need to beat Linux and OS-X benchmark performance to show a real reason why you should upgrade.

    As for taking out XP features, you can thank those idiots in the European Union and companies like Apple, Google, Opera, and others for stripping of features. Yet Opera, Google, and Apple get to bundle all they want, but not Microsoft. The only way to avoid further DOJ crackdowns and EU crackdowns is to strip features.

    I think Microsoft should remove IE and WMP from Windows 7 and add them to the Windows Live Essentials suite. You could create a limited browsing function download manager to download the Windows Live Essentials or a competitors browser into Windows. You could make this feature available on installation or from the start menu. You can delete the shell of IE and WMP without damaging the OS.

    Or an alternative would to create a delete function of IE and WMP in the Control Panel's Programs and Features Menu. Even if its just the shell, it would be a great way to compromise with anti-IE and WMP consumers.

    So far, I've been very impressed with Windows 7. I just think the changes listed above will be a big PR boon to consumers and silence a lot of critics.

  • Make sure all the non-user-specific data is loaded before the username/password is entered to speed up the process of entering into the system. There's often a situation when you turn on the system and go somewhere for a while, Windows is loading, you come back and enter the pass and then you have to wait another while for the OS to finish loading and entering to the desktop(I know there is some user data that has to be loaded this way-after the pass is entered and you probably can't preload it... Maybe there could be a "default user" setting so Windows could know what to preload by default...?).

  • I like the new boot animation.

    But as I mostly use hibernate I would like some progress indicator for hibernate and resume. Having a blank screen immediately when hibernation starts to write content to the disk is a false sign for machine being already powered off.

    When this was new to me, I even removed my laptops harddisk to swap in another boot disk while hibernation was still running - not that successful as you might expect. Now I always have to look carefully at my power and hd led.

    If you are an MSDN or Technet subscriber, please vote on better hibernation progress:

    https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=404326&SiteID=647

    You will have to register for Win7 connect access from your subscription home page:

    https://msdn.microsoft.com/en-us/subscriptions/default.aspx

    --

    SvenC

  • I also added a feedback item for the missing "Invert selection". Please vote here:

    https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=416563&SiteID=647

  • I also added a feedback item for the missing "Invert selection". Please vote here:

    https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=416563&SiteID=647

    --

    SvenC

  • Thanks.

    I figured this is the best place and time to ask this. My HTPC does not display Windows 7 animated boot logo and loads Vista style. What circumstances cause Windows 7 to not show the animated boot logo?

    My HTPC is connected to HDTV via HDMI.

    My specs:

    VIERA TH-50PX70A 50" (127cm) HD Digital Plasma TV

    Intel E8400 Core 2 Duo Processor - LGA775, 3.0GHz 6MB L2 Cache 1333Mhz FSB 45nm

    Intel BLKDG45ID - INTEL G45/1333FSB/uATX/PCIEx16/VGA/GbLAN/DDR2/HDMI/DVI

    Kingston KHX8500D2K2/4G - 4GB-kit 1066MHz DDR2 PC2-8500 CL5 (5-5-5-15) 240-Pin DIMM (Kit of 2)

  • I'm not too fussed about boot logos, however I'll admit Windows 7's is impressive and an improvement over Vista's where I always felt it should at least have *some* image on bootup.

    Hibernate wise though, the combination of a 975X motherboard and two 7600GTs (i.e. pretty modern) still bluescreens on every restore for hibernate and has done since Vista GA through Windows 7 beta. This appears to be entirely due to Nvidia, though - the only BSODs I've seen are due to crashes in the Nvidia driver or crashes running games in Windows 7 (Neverwinter Nights 1 1.69 : PROCESS_HAS_LOCKED_PAGES BSOD. Again, probably Nvidia - seeing a pattern?).

    Would it be unreasonable to expect a world where a WHQL driver release that consistently produces BSODs under reproducible error conditions should not permit future WHQL releases until each and every outstanding serious bug is fixed?

  • Change the "Starting Windows" text to "Microsoft Windows 7" with the logo above it and you've got a super-neat boot screen! Btw the logo is not that sharp even on my laptop LCD.

  • I agree with tom5 -- start preloading stuff that normally waits until after login while the login prompt is up. That part takes longer than booting, so I have to take two walks around the office when a machine boots. Thank God for Win7's sleep mode. But still...

    The bootup looks nice, btw!

  • I appreciate the thought that's gone into the boot animation vis-a-vis load times for the O/S, and understand why the animation will not be user-customizable.  However, under XP I used BGInfo:

     http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx

    to write a screenshot of system info to the logged-out desktop (HKU/.DEFAULT/Control Panel/Desktop/Wallpaper), and no longer seem to be able to do that.

    This was particular useful to me as the lab manager for a college, to identify NETBIOS names and MAC addresses as well as an envvar for "image build date" without having to log into a system.

    Under Vista you could use procedures to "hack" this, but I would appreciate it if the BGInfo functionality could be "baked into" the O/S -- particularly since Russinovich now works for Microsoft.

    On to other comments:

    @SvenC, I agree -- there should be progress bars for hibernate and resume (and potentially the initial boot process).  The progress bar gives you an indication of percentage completion.

    @wtroost, Yeah, I think a text-only boot (that's not Safe Mode) would be useful.

  • I'm from the old school. I think a text based boot proccess would be much better, as it gives you more feedback about what is really happenning.

    I'd like to see something like this:

    Microsoft Boot Manager

    Loading \Windows\System32\config\SYSTEM

    Loading \Windows\System32\config\SECURITY

    Loading \Windows\System32\ntoskrnl.exe

    ...

    Starting Microsoft Windows 7 [Version 6.1.7000]

    Starting Session Manager Subsystem

  • I have to say, I really like the new animation. My only complaint is that it won't display on my MSI Wind (assumedly because it runs at 1024x600). I don't suppose the base size for the animation could be changed to 800x600 instead of 1024x768?

    Great work, guys!

Page 3 of 7 (103 items) 12345»