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 4 and 8 and type the answer here:
  • Post
  • PLASE MAKE SOME IMPROVEMENT TO LOGON SCREEN, LIKE LONGHORN CONCEPT VIDEO, ACTUALLY IS SO UGLY AND SO SIMILAR TO VISTA, ONLY BACKGROUND CHANGED......

  • ....ALL BOOT ANIMATION ARE AWESOME, BUT LOGON SCREEN I LIKE TO BE MORE DIFFERENT TO VISTA

  • I like the new screen. Little things like smooth transitions (fade outs, fade ins etc) help give an overall impression of a solid well polished product, so it's worth the effort in my opinion.

    I agree with others here that hibernate should be the default option instead of shutdown. I asked myself "why do we shutdown anyway?" - in my case to apply updates (which is a restart, not a shutdown) or to add / remove hardware, which I do rarely. Logging off also saves a user's settings, and if on a domain, sends the user's registry hive to the domain controller's storage.

    I think MS should be looking at ways to make a shutdown an extream rare occurrence. Offer normal shutdown (that actually hibernate) and a "maintenance shutdown) for when a user needs to add hardware.

  • One problem with the boot: I have a dual monitor setup, and one monitor is shared with a second computer (using the low tech method of one plugged in via DVI, the other VGA). At the end of the boot process, just before the Login screen appears, the screen flashes black *just long enough* for the monitor to say "ahh, the DVI connection has been suspended" and it switches to the VGA output - I have to go into the monitor's OSD menu to switch it back. I didn't get that issue with Vista or XP.

  • Speaking of boot, I just ran into a "feature" that'll probably make me revert to XP.

    Windows 7, like Vista, prevents me from deleting the files installed in \Program Files.

    Why would I want that?

    Two answers:

    1: I'm the user, it's not Microsoft's place to ask why. If I want to delete the boot loader, random Windows files or IE, that's my choice. Sure, warn me that this will render the system unusable, but don't magically make files undeletable. Sometimes, just sometimes, it is possible that the user knows best what to do in the current situation. Get used to it.

    2: The files are not going to be used. I copied them to a folder on a separate partition, renamed the original \program files to program files.bak, and created a junction point from \program files pointing to the new folder. That leaves me with a "program files.bak" folder which is never going to be used, but which can NEVER be deleted, because Microsoft decided for me that THESE files are important. No they're not. The copy I made is important. That's why I made the copy.

    Going back to the above point, I, the user, am in a situation that MS had obviously not predicted (gasp, a user wants to spread his programs across more than one partition. This is unprecedented). I don't have enough free disk space on my Win7 partition to keep more than Windows itself there. I don't want Program files to hog all the disk space on that partition. But apparently, Microsoft in its infinite wisdom has decided for me that this is the only solution imaginable. And they feel so strongly about it that no amount of admin priviliges will sort out the problem. Nor will changing ownership of the files, changing permissions on them or anything else, because these files are SPECIAL, and simply using the ordinary access rights mechanism is not good enough.

  • @Jalf -- the only thing that changed in Windows Vista and Windows 7 (if I understand your issue correctly) is that we secured the \program files directory via Administrative rights.  You can certainly move/delete files.

    However, it has always been risky to do so as most programs have dependencies on the absolute path to which they were installed.  This information can be stored in the registry in keys private to the application or keys used across applications, or the information can be stored in settings files private to the application.

    You can sometimes manually repair and tweak these sorts of things and there are many "how to" guides on the web, but by far the best thing to do is uninstall the program and then install it on another partition.

    It is correct that for the shared items Windows installs, these are located in Program Files and cannot be moved.

    That some of this worked in older windows is more coincidence than design.  It would not have been a scenario we tested for or supported by design.  That doesn't mean it isn't a good idea, but just not one we have done.

    If you are that tight on %systemdrive% space it is not likely that you will be able to service the partition over time, have support for hibernation, or have many more user accounts.  

    I recognize your frustration and wish I had a better answer for this.  

    --Steven

  • I have to second returning "Invert Selection" to Explorer, even if it is off-topic. And the addition of a text boot mode, like Linux. I've spent far too many hours upgrading, downgrading, disabling and/or removing hardware and software to determine the causes of slow or stuck boots. (Logged boots do not always work--when the system locks up, the log files often don't get saved.)

  • @Steven,

    I have feeling, that current way of extending win32 architecture is going nowhere. I have even read in some places, that people started to name Seven as Vista+ (Vista + new problems). Sorry for irony, but:

    1. you're receiving various comments about interface, fonts, DRM, speed and many times answer is: this is by design or this is cool in our opinion

    2. you're receiving various comments about compatibility and more and more often we can see something like: our system is OK, change your apps

    3. some comments about methods of distributing Seven were also ignored: no cheap upgrade for annoyed Vista users, no help for OEM customers, which are forced to delete all partitions during installing system, etc. etc.

    I have read in one of blogs created by Microsoft employees (I can find it, if you want), that creating shutdown window in Windows 5.x required few teams and something near six months (I write it from memory, but numbers were big). And what ? You had to press additional Shift to be able to make Hibernation... Annoyed.

    Now we can read, that you're giving a lot of resources for creating boot/shutdown animations. And what is result ? There is removed progress bar or ability of customizing it.

    I'm sorry, but I have feeling, that nothing (I repeat: nothing) has been changed in your development methods since years. And you don't (want to) get, what is liked by your customers.

    To be clear: problem of moving Program Files, many security/uninstall problems can be avoided, when you will use sandboxing. How many functions will have to be modified ? 20 ? And what programs will be affected ? Debuggers, antivirus ? Almost all of them will be changed from other reasons too. And compatibility problems (info, that you can't do it because of it) are only excuses.

    Once again: Seven is a little faster in some places, but it's again worse than Windows 5.x. If you want to make customers happy, remove at least controversial parts (some DRM). Without it you will loose another parts of market...

  • The boot screen is nice, but I second the request for a more informational text screen when you hold down some key.  

    Also, does anyone else dislike the logon screen?  I guess the light streaming from heaven is supposed to be calming, but it reminds me of being underwater and drowning.  In either case, I rather not have my logon screen be a memento mori.  And I think both religious and non-believers alike may object to it, for opposite reasons.

  • the boot screen is shite.

    who are these idiots taking out useful features and customization in favour of designing and offering nub shite instead?

    I'm sick of it. and I ain't buying this junk!

  • in my idea graphic engine of windows should take revision in next version of windows (after 7). because new graphic engine that started by Vista is some dark! XP is more natural and pleasurable.

  • I'm sorry, but I thought this must have been a spoof entry.

    Do you really think the most important problem is the animation that goes on when the machine starts?  How about fixing some real problems instead?

    How about the fact that windows explorer drag-and-drop copy is useless on a network - the slightest hiccough and it stops without telling you how far it has got.  And why after all these years does it still not offer to skip existing files at the destination?  Neither rsync nor robocopy are new ideas.

    What about, if you are messing about with bootup, a simple way to monitor what is actually happening during bootup.  If we could see what is making it hang up when there are booting problems that would make it so much easier to fix when things go wrong.

    How about moving most of the startup stuff out of the user's login into the machine startup?

    What about providing a 'location' option that includes selecting between DHCP and fixed IP addresses when booting, as well as just tiddling about with the dialling prefix for modems we don't use any more?  

    If you have all this spare programmer time, how about counting how many times the desktop is painted and the icons re-drawn between logging in and being able to do something, and eliminating all that unecessary duplication of system calls.

    Or arranging that, at startup, start menu navigation is not cancelled just because some 3rd party application has added something to the system tray, forcing me to start again.

    How about a logout option that snapshots the applications and windows in use, and re-opens them in exactly the same state next time you login in?

    For heaven's sake, there a thousand important things you could be doing to speed up the system and make it smaller instead of tiddling about with screen candy.  That screen with the light shining from the top left hand screen looks like some 19th century sunday school print of the annunciation.  Are you really so self-obsessed that you see an operating system in divine terms?

    This posting is really, really annoying.  Because it is so ignorant about what the real user finds frustrating.

  • bobharveym if you find this blog annoying then I suggest you stop reading it. I find it very interesting.

    By writing about the boot screen, it doesn't mean it got priority over other issues. Although if you've read this blog much you'll know that boot performance was a major priory for the W7 team. If you've read this post then you'll also know the new screen improves actual boot time, and I've no doubt it improves perceived boot time too.

    I don't think this blog is aimed that those who have no idea about software engineering process. Some of the suggestions posted here are so short sighted and cazy. Read http://blogs.msdn.com/kamvedbrat/archive/2005/10/01/476160.aspx and maybe learn something about why you can't have it all your way.

  • @Karen

    "shown a great many “personalization” elements "

    Now that's funny.  Microsoft actually thinks that changing colors is "personalization".  With old windows xp you could truly personalize your system.  Move and or combine, "tool bars, menu bars, icon bars, address bars."  Yes there was no command bar, it was called an icon bar and had icons instead of words.  Just give back that ability, of course Microsoft won't. Why as someone stated in a past blog, "it's too hard for Microsoft tec-support how to direct customers to fix windows problems when they change the UI to much.  Be that as it may, yea I like the new bot up screen, WOW.  Is it really that note worthy to devote an entire blog on it? In my opinion, "NO".  Steve, how about a blog on "how can we improve?" specific parts of Windows. Like how can we improve the "task bar" or "UI" or "security", Installation?  Instead of telling "how we did this any why" Just follow, industry standard training or learning by asking, "open ended questions". That's when this blog will truly become feed back, instead of Microsoft just tooting it's own horn and saying, look "We're wonderful and you should love us". "harsh words", I know but I've been following this blog since it beginning and, Microsoft still ignores the, "Tough" questions".  

  • @manicmarc

    Like it or not, "bobharvey" has valid points.  Yea you can't have everything your way but, Microsoft need to understand that. The problem since the early incarnations of "Vista" is Microsoft wants too much control. The want to dictate every thing.  That's a major problem, and that's one of the main reasons why Vista failed.

Page 4 of 7 (103 items) «23456»