Another month is at end, and it looks like a good timing for another update about the Intel Linux Graphics project.

As usual, starting with Kernel, I can say that this way a very, very busy month, and we had more kernel patches during this time than I can remember from the past. Several patchbombs came through, such as:

  • Several rounds of Ben‘s patches for timed GPU execution, or BO waits. Those patches add the ability to specify the desired timeout parameter to the core GPU functions, and allow the userspace to specify how log to wait until they are done – instead of waiting for them indefinitely. It is a nice addition to the way userspace cooperates with the Kernel part for the GPU-related tasks, and a helpful addition to support the GL_ARB_sync OpenGL extension.
  • Also from Ben, we had some patches that fixed a couple of sparse warnings. They should not change anything functionality or performance-wise, but they make the driver code more elegant :) .
  • From Daniel Vetter, we had a 22-patch series for dragon slaughtering consolidation of the legacy DRI1 code paths. Those patches do a huge cleanup and properly split the DRI1 and DRI2 calls in a way that everything related to DRI1 should belong to the i915_dma.c module now.
  • Chris Wilson and Jesse Barnes have been working on a better way to handle the PCH PLLs separately from the display pipes. This patch greatly simplifies the interaction with the components of the GPU located on the chipset, and allows to allocate or re-use different PLLs on-demand. This came particularly handy for my Haswell enablement efforts, where most of the things are being done by the CPU part of the graphics subsystem, and PCH is used for non-essential tasks.
  • Also from Chris Wilson, we had a 28-patch series for reusing the stolen memory early in the GPU initialization. Stolen memory is being allocated by BIOS for its need, and previously, when Kernel GPU driver was loaded, most of the memory was re-initialized. With those new patches, it is possible to reuse BIOS-allocated objects and even allocate frame buffer from the stolen memory. Yet another step towards a faster and flicker-less boot!
  • Ben Widawsky has sent his patches for L3 cache remapping. Those patches account for the row-level remapping of cache content when a parity error is detected, and this task is carried transparently to the software. On Ivy Bridge (which those patches are targeted), this situation is detected by means of an interrupt, and when this interrupt gets to the i915 kernel driver, it is able to cope with it and keep track of the failed bits. In other words, you may think on it as on a some sort of badblocks handling which is used for hard disks disks, but for L3 cache. Except that the L3 errors are much, much rare to occur.
  • Some power subsystem refactoring came from me, where all the power-related components of the driver (rc6, watermarks, framebuffer compression, power monitoring and turbo-related bits) got moved into the intel_pm.c module; and Daniel Vetter has also complemented this new module with additional power-related items I missed in my original move.
  • As another major patchbombing, I’ve send another round of Haswell GPU enablement patches, which add a new intel_ddi.c module, improve support for HDMI outputs, and address most of the comments I’ve received for the past months about those patches.
  • And finally, still on Intel Linux Graphics page but on an entirely different hardware, Alan Cox has sent a round of updated kernel patches for GMA500 support to inclusion into the drm-next tree.

Besides those major patch series, we had several patches for i8xx interrupts handling and gen2 fixes (which also helps to answer the question whether the old i8xx graphics cards are still supported :) ), improvements in page flipping, turbo initialization, Sandy Bridge GPU hangs in Google Maps/Earth, proper IPS polling which should be limited to Gen5 architecture now, pineview clock gating and several backlight fixes, besides all the other smaller ones.

On 2D driver side, the major news of the past month was the release of Glamor 0.4 acceleration backend. The biggest changes are the support for DRI2 and texture from pixmap functionalities, co-existance with AIGLX, many performance optimizations for pixmap uploading/downloading, full GLES2 color formats support and a new texture cache pool mechanism to reduce texture/fbo creating and destruction overhead and considerable improve overall performance.

Still on the 2D side of things, a new Cairo 1.12.2 release went out. This is a largely bugfixing release, which fixed a large number of issues which were found out since the Cairo 1.12 got released. Chris Wilson has also carried out a performance evaluation of Cairo 1.12.2 with different backends in his blog.

On Mesa side, lots of bugs were fixed, as usual, and among the most interesting updates for the past months that I caught were:

  • Support for RGBX_8888 format used in Android native buffers from Sean Kelley.
  • Support for additional gbm interfaces from Ander, used to allow weston compositor to reuse KMS framebuffer objects instead of creating and destroying them for each rendered frame.
  • Addition of the DRI image v4 extensions to MESA_drm_image, and support for additional DRI image formats from Gwenole.
  • Also from Gwenole, 5-patch series for the DRI2 changes to add support for the new Wayland and VA/EGL proposals to handle YUV buffers, and differentiate progressive/interlaced contents.
  • A couple of fixes for mipmap offsets when used with HiZ and separate stencil buffers, from Paul Berry.
  • Lots of work on GLSL support, from Eric, Ken, Ian and Paul.
  • And finally, still from Gwenole, came a patch series to allow caching data regions according to a given offset.

Moving to Wayland, the patches that caught my attention were:

  • Collabora’s Pekka Paalanen‘s patches for adding Android support for Wayland (which were already covered by phoronix as well).
  • Ander’s patches for reusing KMS framebuffer objects.
  • Gwenole‘s patches that added support for querying for the list of supported surface formats, support for YUV buffers and generic buffer formats.
  • And Tiago Vignatti‘s patches for xwayland improvements, customizable modifier key biddings.

And, last but not least, we’ve gone through the list of the open freedesktop.org and kernel.org bugzillas, and managed to scrub dozens of fixes in the past few weeks, solving a huge variety of issues – from i8xx-specific bugs up to recent GPU turbo issues after idle on newer machines. If you have a bug open with us, take a look if it is still active – chances are that many of the issues you could have were already gone :) . And if it still there, it would be a great time to check it again and verify if the drm-intel-next tree is still affected by it. As Kernel 3.5 merge window gets closer, it is a very good timing to try to address the remaining issues prior to its opening.

That’s all for now – stay tuned for future news from the Intel Linux Graphics land, and enjoy the International Workers’ Day meanwhile – if your country considers it as a holiday, of course :) !

As Starks used to say, “Winter is coming”. So in this sense, time has come for another round of updates from the Intel Linux Graphics project.

This time, it took me less time than on previous round of updates, so I think I’ll be able to give you some more details about some of the most interesting changes I’ve spotted for the past weeks.

Starting with the Kernel, many and many patches has landed into the intel-gfx mailing list. Among some of the most interesting were:

  • Another round of Valley View enabling patches from Jesse Barnes. Some of both Valley View and Haswell architecture patches were already included into the drm-intel-next branch by Daniel Vetter, but obviously most of the things are still being worked on. Valley View patches are getting really close to their final form, but some of the changes come from the fact that its architecture handles most of the display-related operations in a very orthogonal way to the other GPUs we have. So we’ll still see more rounds of patchbombing on ValleyView front.
  • Daniel Vetter sent another round of patches for PPGTT handling, most of which were already included in his drm-intel-next tree by now. Besides those, Daniel came with another round of Sandy Bridge hardware-related workarounds for the kernel as well. None of those were (apparently) hit by our usual code paths in Kernel, but in order to prevent possible future problems it is better to be safe than sorry on this matter.
  • Jesse also came with a patch series which reworked and simplified some shared code paths in the driver, mostly related to the Display Port support and interaction with the PCH-based items (e.g., parts of the display that are based on the chipset and not on the CPU itself).
  • Chris Wilson sent some patches for properly handle some Graphics interrupts corner cases, some additional debugging patches, additional LVDS-related fixes and a large number of patches that improve the way GPU rings interact between each other.
  • Adam Jackson from Redhat, Rodrigo Vivi, Paulo Zanoni and Takashi Iwai from SuSE have been working on supporting new video modes that we weren’t handling properly (such as modes that are not properly described in EDID metadata that monitors report even when those modes are actually supported by them). Those patches resulted in a series of very interesting discussions about how to handle such cases as well, including all the scary terms like CVT, DMT, EDID, GTF2, GTF, and all the other WTF-like terms and all the related stuff.
  • Ben Widawsky posted some patches for proper cache-level parity handling and better RC6 visibility from userspace, by using the sysfs facilities.
  • Last but not least, I’ve sent out the 3rd round of Haswell enablement patches. Phoronix already did a great coverage of them in the past weeks, so as the major highlights of this new series is support of digital outputs (like HDMI and DVI), and some additional tweaks to make things work better in overall. This time, the patchbombing was of mere 29 patches thanks to Daniel Vetter who had already included around as many patches into his drm-intel-next-queued tree last week. It was an amazingly interesting experience for me to work on this hardware enablement, and it is great to see the results of this work out in the wild. And of course, I’d like to thank Jesse for helping me with most of the hardest issues I had, and Ben for his help when I got completely stuck on some of them :) .
  • And finally, still related to the Intel Graphics but also to all the other drm-based Linux projects, Paulo Zanoni have been working on an infoframes programming tool, which was finally included into the intel-gpu-tools suite; underscan properties support and on generic CRTC properties development.

Moving to Mesa, lots of patches on all the areas as well. The most interesting ones related to the Intel GPUs that I managed to look at were:

  • Eric Anholt’s work on GLSL 1.40 support and performance tuning in shaders for Intel GPUs. The GLSL 1.40 support is a big step for the open-source GL library, and it will be a very welcomed addition for the next GL versions support. And performance-related patches are always a nice thing to have :) .
  • Ian Romanick sent the patches that rework the initial uniform handling in Mesa.
  • And Neil Roberts came with some patches that improve wayland-specific Mesa code paths.

Besides those changes, we had hundreds of patches that I left out of the scope of this update. Lots of activities are going on on many Mesa-related development, and the progress of this open-source GL implementation is looking great!

On 2D driver side, lots of patches entered the xf86-video-intel project for the past weeks, mostly related to the SNA acceleration backend, but also some glyph-related fixes and other bugfixes for UXA. All of them came from Chris Wilson, who is doing an unbelievable job on the project for the past years!

On Wayland project, as usual, lots of activity was going on. Among the most interesting developments was the addition of piglit support to the project by Chad Versace, which allows to run the piglit tests under GLX, Wayland and X11/EGL while selecting the desired window system at runtime.

And finally, on a related project, Jeremy Huddleston has released the first maintenance release for xorg-server, which fixes many input-related issues together with some RandR fixes and small memory leaks.

I guess that’s it for today. Stay tuned for future updates, and enjoy the next season of The Game of Thrones meanwhile (which works amazingly well on my Intel-based card with vaapi acceleration by the way :) ).

Yeah, I know that it has been quite a while since I last time wrote about news from the Intel Linux Graphics land. But as an excuse for such a long delay, I can say that it wasn’t because we had nothing to comment about – but on the contrary, we had sooo many things happening that I really could get a free time to write something.

With so many happenings in the past weeksˆWmonths, it is hard to know where to start. But I’ll try to cover the most relevant events which happened since the last update.

Golf course at Skamania Loudge

As one of the coolest things which happened in the past month, I must mention the OSTS 2012 conference. OSTS stands for Open-source Technology Summit, and it is an Intel-internal (with some guests of course, among them, naturally, Linus Torvalds himself :) ) event which aims at gathering all the Intel open-source developers in one amazingly beautiful place between the states of Oregon and Washington. The event takes place in Skamania Loudge, one of the most beautiful places I’ve been to, and it happened on the first week of March.

While there, I finally had a chance to discover the rest of the team in person (yeah, it is really nice to have people faces matching the names who were just voices on the phone and irc handles in the past). And, of course, it was a huge opportunity to discuss many of the projects we’ve been working on in person (alongside discussing the politics, open-source, football, french history and pretty much everything else :) ).

Distant lonely mountain

Besides technical stuff, the conference itself was amazing, and it is great that Intel organizes it and makes it such a success – I really hope to be able to attend the future iterations of it as well.

But back to the news, let me cover some of the major highlights of the Intel Linux Graphics project which we had in the past month or so.

First of all, the 2012.02 Intel Linux Graphics stack release was released, bringing a full-featured Ivy Bridge platform support on the hardware side and OpenGL 3.0 compatibility on the software one. The support for GL 3.0 is a huge leap forward for open-source graphics landscape, and I’d like to congratulate all the developers who were working on it for the past months. You did an amazing job guys, congratulations for shaping the open-source world and making it move ahead in such a great pace!

One day after the 12.02 stack release, Chris Wilson has released xf86-video-intel 2.18, featuring hundreds of new commits and improvements. But the work on the 2D driver by no means stops at this point – we already have lots and lots of new commits there, most of which are related to the SNA technology. It is still considered experimental, but at the same time it is already quite ahead of the UXA backend in many trends.

Still on the 2D support side, Chris Wilson has also released Cairo 1.11.4 and, a couple of days later, stable Cairo 1.12 version. This is the first major Cairo version in years, and it comes with an amazing set of features and performance improvements in all aspects. Check those two articles on Chris Wilson blog for some of the highlights of those releases.

Moving to the kernel project, we have an amazing number of features as well. Within a couple of hours from each other, Jesse Barnes has published his first set of patches for the Valley View support, and I’ve sent my patches for Haswell enablement. Both series of patches has already received a couple of iterations of updates, and have already been covered by phoronix reviews. Another major step towards full Open-Source support in not yet released GPUs!

Still on Kernel, Daniel Vetter has released a couple of snapshots of his drm-intel-next tree, and initial patches for the 3.4 kernel has already landed in Linus Torvald’s tree. And yet, while the next version of kernel is still taking place, we already have a a huge amount of patches getting ready for the one after it – the 3.5 one. Among those, are the logical context switching patches from Ben Widawsky, gtt handling improvements, lvds improvements, more Sandy Bridge and Ivy Bridge workarounds, improved semaphores for display plane, enablement (hopefully final) of RC6 by default for Sandy Bridge, and many many others. Things are looking great, and the development pace is amazing. I’ll try to cover more details of those patches in one of the next blog posts.

And to finish with the Kernel side of the story, Dave Airlie has managed to nail-down the long-standing issues we had while suspending, which resulted in random filesystem corruption and other nasty side effects. The patch was already sent to Linus, so things on the suspend-resume side are looking sweet again.

On Mesa side, Eric Anholt has sent the initial GLSL 1.40 patches. GLSL 1.40 is a bit different from its 1.30 counterpart in the sense that there is not much use for it outside the OpenGL 3.1, which is not there yet. Meanwhile, Mesa 8.0.2 was released, with additional bug fixes and improvements in this stable edition of it. So far, Mesa 8.0 looks very impressive, from both stability and performance point of view. Once again, amazing job guys!

Besides those news, we had thousands of new patches meanwhile, which I won’t be able to cover in this post. The development goes on and on, and so far 2012 looks quite promising for the Intel Linux Graphics project.

Snow on a bridge.

And, last but not least, this probably will be my last post while I have 0x1E years of age. In a couple of hours, I’ll have to go through a bit-shifting in age, coming to a very nicely looking number of 0x1F years (which looks yet more amazing in binary, being represented by a beautiful number of 0b11111). Almost coming of age by now :) .

Time flies by quickly, and another couple of weeks has past. So time for your regular news from the Intel Linux Graphics land!

Starting with the hot topic of the past years, Wayland 0.85 has just been released! This release marks the first milestone in the road to a stable 1.0 Wayland and Weston release. After it, we’ll have a 0.90 release, which would be the one to mark API freeze and will begin the preparation to the final 1.0 release. Of course, additional releases could happen meanwhile. Wayland has evolved a lot for the past years, so make sure to check it out.

Besides Wayland, lots of activities have been going on with all the projects.

On kernel side, Daniel Vetter has sent out his new drm-intel-next tree, which features lots of fixes from Ben, Eric and Chris, improvements to swizzling handling, fence accounting improvements, VTd workarounds for Ironlake, simplified debugfs handling code and an improved i915_error_state logging.

Besides those improvements, lots of attention was directed towards interlaced modes support on Intel GPUs, which resulted in a large series of patches from Paulo Zanoni and Daniel Vetter that should improve support for interlaced and non-interlaced modes and made them, well, work correctly :) . If you have been experiencing any sort of problems with such modes, please, try the patches and verify if they solve the issues. Chances are that they will, but if they won’t, please, let us know!

Among other interesting patches in kernel for the past few weeks, Ivy Bridge hard-hang fixes are among the most notable ones. Those patches toggle a couple of work-arounds for issues which randomly affected some of the Ivy Bridge machines – and resulted in complete system hangs. Due to their random nature, and specially due to the fact that they mostly affected low-resolution modes (chances to hang your machine in a 320×240 resolutions were noticeable much higher than in any other resolution), we had hard time to track them previously. In fact, we only managed to reproduce them consistently in the last week – and luckily we were able to come with patches which apparently fixed most of the problems. The patches will probably be included into 3.3 kernel via the drm-intel-fixes branch, and if they won’t cause any other issues we’ll backport them to 3.2 kernel as well.

Another interesting patch is the one which applies the missed IRQ fix (a.k.a., the voodoo patch :) ) to Sandy Bridge platform as well. So far, we had a couple of reports which mentioned that a very similar issue to the one which was fixed on Ivy Bridge last month was happening on Sandy Bridge as well. If you are suffering from this issue, please, give it a try and let us know if it solved the issue to you or transformed it into anything else (like a GPU hang which happened on one of the machines instead of missed IRQ. Those results would be even more interesting, as they could tell us what we are missing and how to fix the problem for good).

Additionally, lots of development was targeted on improving the semaphores issues detection and avoidance, and for better debugging support in the i915_error_state log. Usually, this log is all that remains of a GPU hang – so the more information we can get from there, the better.

And finally, aiming at finally discovering what root-causes all the rc6 issues out there, I sent out a patch which allows to hopefully isolate the issue. Leann Ogasawara from Canonical was also kind enough to pre-build Ubuntu kernels with this patch – so if you are affected by a RC6 issue, and are running Ubuntu – please, give them a try!!

On Mesa side, things are moving very quickly towards the Mesa 8.0 release. The 8.0-RC2 version was already released, and final 8.0 version is expected to happen in a very near future. Who knows, perhaps by the time you’ll be reading this line, it will already be among us :) . Mesa 8.0 release looks very exciting so far – besides the GL 3.0 extensions and GLSL 1.30 support, it also brings amazing performance and stability improvements. Hopefully you’ll be able to see it with your own eyes when the next stable release will be out – or, if you don’t want to wait that long, or want to use your very last chance to report any major show-stopper bugs in the 8.0 branch – now is the time.

On the xf86-video-intel side, as usual, hundreds of patches were committed by Chris Wilson, mostly targeting the SNA backend, and also the Glamor integration. Since the beginning of the year, git log already shows 380 new patches. Out of those, 368 are SNA-specific for now. Phoronix has run yet another round of SNA testing in the past weeks with some interesting results. Things are getting very interested with this backend.

And finally, moving to the intel-gpu-tools project, two new tools were proposed in the past few days – one for testing different panel fitter settings (intel_panel_fitter, from Paulo Zanoni); and another to demonstrate the sprite features, available for SNB/IVB platform, which uses 3 new IOCTLs included in the latest drm subsystem: GETPLANERESOURCES, GETPLANE, and SETPLANE. Planes and sprites support are ones of the latest additions to the core drm subsystem, and in my opinion they certainly are among the most interesting items there. I believe that more and more applications will be using them at some point (like the 1st one mentioned in this post – yes, the one which starts with ‘W‘), which is great.

The real life and work issues had eaten most of my time for the past 2 weeks, but things seem to be geting back to normal now. So time for semi-regular updates from the Intel Linux Graphics land.

Starting with kernel, many notable changes happened in the past weeks. To make our -next merge window process go faster, a new process was adopted for the kernel patch and branch handling process. Let me elaborate a bit more about how this is going to work.

For the past months, we had the drm-intel-next branch (containing patches intended to go into the next merge window – e.g., when the 3.3 kernel is being developed, this is the branch which contains patches intended to be included in the 3.4 kernel version), and also drm-intel-fixes branch (containing patches for the currently developed kernel – e.g., patches which fix issues which were added during the past merge window. So for instance, those are the patches which go into 3.3-rcN kernel versions after the merge window). Both of those patches were maintained by Keith Packard.

However, the amount of patches combined with other tasks resulted in a somewhat slower patch queuing process. So Daniel Vetter has volunteered himself to maintain the drm-intel-next branch from now on, reviewing, queuing and managing the patches intended to get into the next kernel merge window (for now, those are targeting the 3.4 kernel version).

At the same time, Keith Packard will continue to maintain the drm-intel-fixes branch, managing and carrying stability patches for the current kernel.

And finally, to improve the testing and availability of newer features for older kernel versions, I’ve started my own drm-intel-backports set of branches, for 3.0, 3.1 and 3.2 kernel versions – containing all the latest and greatest patches from the latest kernel releases. Of course, those patches do not follow the usual kernel stable development model, so they introduce new features, capabilities and possible issues. But for the brave souls out there willing to see and test the absolutely latest development in our drivers on top of their kernels, it should be a great chance to do so.

(I assume that I was not that fast with the drm-intel-backports patch merging process in the past 2 weeks, so for now it only contains patches from the 3.2 kernel branch. I intend to backport the 3.3 and 3.4-next patches for all those versions in the coming days. Also, apparently those backported patches do not work correctly with pre-Ironlake chipsets on 3.0 kernel, and there are some display-related issues on top of 3.1 one – I’ll look into it as well. Sorry for the delay – but the real life interfered with my patching capability for the past weeks…)

Besides those changes, we had a large number of notable kernel advances in the past weeks:

  • One of the most interesting features is the support for interlaced modes in the Intel Linux Graphics cards. A great work by Peter Ross, Daniel Vetter and Paulo Zanoni resulted in a series of patches which provided support for interlaced modes. These patches will be queued for inclusion in the 3.4 kernel – but when I’ll get back to my -backports series of patches, I’ll certainly include them into the 3.[012] series as well.
  • More Ivy bridge 3-display pipes issues were fixed, such as the hibernation problem with 3rd pipe being active.
  • Stabilizing the almost-ready-to-launch Ivy bridge platform, the hopefully final forcewake-related fixes were included in both drm-intel-next and drm-intel-fixes branches, and were also cherry-picked by Greg to be included in the stable 3.2 kernel as well. This should solve the remaining missing interrupts problems we were experiencing.
  • Initial patches to support the hardware context switching were sent by Ben Widawsky, and are accessible in his own freedesktop.org repository for testing. Hardware-supported context switching allows to save the hardware registers and state for each process, so it could essentially help the GL_EXT_transform_feedback extension and advanced geometry shading state passing between different stages. And, of course, it can also improve the stability – hardware would ensure that different processes would not interfere with each other in a harmful way.
  • And almost a hundred pending patches were picked by Daniel Vetter for his new drm-intel-next branch. The next merge window certainly looks interesting for the Intel Linux Graphics support in this sense…

On Mesa side, the 8.0 release is getting really close. After the 8.0-rc1 release a couple of weeks ago, lots of patches were picked into the 8.0 branch, improving the stability, performance, and fixing many rendering issues – especially on the Ivy Bridge platform. More excitingly, the communication between Mesa and Unigine developers resulted in better support for open-source drivers in the just released Oil Rush game. It is really great to see such cooperation – and Unigine-based game certainly is one of the most advanced graphical releases of past years on Linux.

Speaking about the Mesa development, this final stabilization phase prior to the 8.0 release is a great chance for you to report issues, bugs and problems before the release which is expected in a few days from now. So if you observe any last-minute problems and regressions with Mesa 8.0 branch – please, let us know! This next release looks really impressive from the technical side, but your help in additional testing is more than welcome.

On Wayland side, lots of different patches and features were received in the past weeks. Wayland and Weston development goes on with great pace – and the ones of you to attend FOSDEM next week will have some really interesting stuff to gaze upon. But I won’t spoil the surprise :) .

On Xserver development, the 1.12 RC2 and 1.11.4 releases were unleashed last week, together with a new glproto, util-macros and xkeyboard-config versions. The development continues non-stop, with hundreds of patches and discussions happening in the mailing lists.

And finally, the phoronix feedback I got from you over the past weeks was amazing. Thank you all for all your questions and suggestions – it was really nice to hear what you have in mind, what you like (and dislike) in our drivers and what direction we should be heading. I’ll try to answer the last remaining questions in the next few day, and will summarize everything on a dedicated blog post.

Yeah, I admit that my semi-periodic updates about Intel Linux Graphics got more “seldom-periodic” than “truly-periodic” for the past weeks. But have no fear – they are back! And I am still on my self-appointed bi-weekly schedule estimate. This is what’s good about semi-periodic schedule – one never can run too much out of it :) .

So starting with the coolest news – the Mesa team is getting close to the GL 3.0 milestone! Yeah, with latest GL_ext_transform_feedback patches from Paul Berry, the last major piece of GL 3.0 spec is getting into place. There are still some extensions missing and lots of smaller tasks to be done, but it is possible to say that we are almost there. I think that this is really exciting for both us, and for all the Linux and open-source users in the world – so yeah – we’ve been good boys and girls during the year and Santa Claus gift has materialized itself in form of almost-full GL 3.0 support in Mesa.

Who knows, maybe prior to the Chinese new year we’ll receive the 2nd part of this gift (in other words, mesa 8.0 release :) ).

On kernel side, the 3.2-rc6 release brought lots of awesome changes to our drivers. Yes, I am talking about everyone’s favorite rc6 and semaphores features. They are on by default on Ivy Bridge architecture, and are also enabled on Sandy Bridge if VTd is disabled. So most of you should enjoy greatly improved battery life, considerable faster performance and also enhanced stability within the i915 driver when Linux 3.2 will be released.

Besides those patches, work has started on collecting patches for the 3.3 merge window. Daniel Vetter sent his pending patches in a form of tiny 43-patches series. Those patches bring PPGTT support, improve debugfs handling, enhance pread/pwrite performance, fix swizzling for SNB/IVB, improve forcewake operations and enhance debugging support for cases when GPU rings get stuck.

Ben has also sent his patches for scheduling/throttling, but they haven’t received much interest except from myself and phoronix :) . Those patches add support for more fine-grained GPU scheduling and rings load distribution between individual process. I am really interested in this work, and I hope that they will be accepted into the main kernel in the foreseeable future.

Also on kernel, Rodrigo Vivi and Paulo Zanoni sent out some patches which finally fix some corner cases for TV-out and SDVO outputs. This certainly should make many users happy out there just in time for Christmas.

And finally, for the kernel size, Chris Wilson came with a patch which works around the missed IRQs issues on Ivy Bridge platform. With this patch, and with semaphores being enabled on Ivy Bridge by default, I am very happy to say that we don’t have any blocking bugs for Ivy Bridge in our bugzilla. I think that it comes as a nice Christmas gift for all the users out there (the ones who already have an Ivy Bridge machine, and the ones who will get it by its launch – which is still 4 months away). Of course, I won’t talk much about it prior to its official launch, but trust me – Ivy Bridge rocks!. I can’t wait to have an Ultrabook based on this platform for myself…

Besides mesa and kernel, it is worth mentioning that on the 2D side, Zhigang added full Glamor support into the driver. The Glamor acceleration is still considered very experimental and non-stable, but now it is available for the world to take a peek on it and witness how it works with their own eyes.

So I think that this is pretty much it. We have hundreds of patches floating around for all the projects, thousands of emails and millions of users in the world – and we are working hard to make all of them happy with the results of our work. 2011 was extremely productive and rewarding for us – and I hope that the year of 11111011100 (a.k.a., 0x7DC or 2012_base10 for the ones still reading in decimal numbers out there :) ) will be even more interesting*!

See you!

(*) Assuming the world won’t end in a core dump caused by the Mayan millennium counter overflow bug :) .

Development goes on, on all the fronts, and time has come for some news about Intel Linux Graphics project.

For the Kernel side, some nice patch series have arrived to the list:

  • Daniel Vetter sent his PPGTT enabling patches, which resulted in many interesting reviews and discussions. PPGTT, or Per-Process Graphics Translation Table, is a mechanism for remapping GPU memory into system one. Unlike traditional Graphics Translation Table, which has a global mapping for everything, PPGTT allows each process to have its own level of mapping. On practice, it should improve stability by a large margin and performance by a considerable value, and also is a nice thing to have in general, specially when hardware supports it natively (which it does, starting with Sandy Bridge). Also, if you are interested in learning the details of how GTT and GPU memory management works, you should check this excellent article from 2007 for a great introduction.
  • Ben Widawsky has sent a new series of patches for forced GPU throttling and scheduling. I already described them in one of the previous posts, and I am really interested in seeing them accepted to the kernel.
  • I’ve sent out some patches for userspace-controled RC6 enabling and tweaking, together with some patches for enabling semaphores and rc6 by default on newer generations of gfx hardware. Those patches, together with Ben’s ones, also raised an interesting point – we have many userspace-controllable items in the debugfs file system, which should probably belong to sysfs instead. This would require a proper definition of their usage and behavior before real userspace applications would be able to use them.
  • And Wu Fengguang sent some patches for Display Port and HDMI fixes.

Moving up the stack to the 3D driver, some major news worth highlighting are:

  • On Mesa side, the major news is Ian has released Mesa 7.11.2 with some additional GLES and EGL patches, and a small patch which fixed Mesa build on Mandriva (and also on other distributions which use -Werror by default, such as Mageia for example).
  • Lots of work is happening in Mesa, targeting OpenGL 3.0 support by the end of the year. GLSL 1.30 is already among us, and most of GL 3.0-required extensions are in place, but there are many things to do. Hopefully they will be all done in the next few weeks.
  • Speaking on Mesa, some major news happened for the drivers using the Gallium technology. As you probably heard through Phoronix already, the i965g, Cell and Failover gallium-based drivers were dropped from Mesa due to lack of love, support and care. Sad – but this is life. And in any case, i915g driver is still there, and of course, those events do not affect Intel’s 915 and 965 Mesa drivers at all.
  • And also on Mesa, Ian has started the work on GLX_ARB_create_context and the layered GLX_ARB_create_context_profile extension, and came with a question whether it is still worthy to support non-XCB protocol, or if there are any platforms that can’t / don’t use XCB for X protocol yet. The overall feedback so far was to drop non-XCB bits sooner than later. So looks like XCB has won the X protocol war in the end :) .

And finally, on the xserver side, discussions were raised on the mailing list on the release dates for the next xserver release, and the Xinput 2.2 state in it. It is almost there, and will probably get merged until Christmas. Also, Xorg-server 1.11.2.901 (a.k.a., 1.11.3-RC2) was released.

For those of you who couldn’t attend LinuxCon Brazil – I’ve put my presentation about Intel Linux Graphics online for you all.

(of course, if you have attended and want to see it again, you can do this too :) ).

Have fun!

Intel Linux Graphics

Yeah, I know that it is Friday, and it is also 11/11/11 (though I still don’t know if the end of the world was expected on 11/11/11 at 11:11am or 11/11/11 at 11:11pm), but still, the development goes on and on.

But as I said, heck, it is Friday, and we all have a nice binary date on the calendar, so I’ll give you two additional reasons for celebration today:

  • On Mesa, Eric Anholt and Ian Romanick exposed GLSL 1.30 compatibility for Intel gen6+ cards. Yes, with the latest commit which added gl_VertexID support, everything required by GLSL spec should be supported now. Yet another milestone towards GL 3.0 was passed.

  • And on xf86-video-intel, patches which add the support for Glamor were sent by Zhigang. Yes, I am talking a lot about Glamor in the past days, as it certainly looks like a very interesting project. Now, with patches which split the device-independent library from the device-dependent part, its support towards upstreaming is getting closer and closer.

Besides those items, as usual, we have had lots of development and news for all the projects. And next week, we’ll have LinuxCon in Brazil, where I’ll give a presentation about Intel Linux Graphics, what it is, how it works, and what are all those scary words like kernel, drm, ddx, vaapi and wayland. And, of course, we’ll have lots of amazing presentations on many Linux-related projects.

So if you’ll be there, I’ll be glad to answer your questions and talk about pretty much everything.

See you!

After some period of silence, this blog returns in bringing you the latest and greatest news from the Intel Linux Graphics world.

So if you were sad, depressed and crying in despair without having a chance of reading about what was going on with the Intel Graphics for the past days, rejoice! :)

Those past few days were quite busy on all the projects, and with thousands of emails to keep track of it is hard to select the most relevant news – all of them are! But I’ll try to summarize the most interesting stuff that happened for the past few days.

Starting with kernel, as you all already know, we are living in the post-3.1 era now, with the release of Linux 3.2-rc1. It brings lots and lots of fixes and improvements all around, and much more are yet to come.

On Intel Graphics side, the following items caught my attention for the past days:

  • Keith Packard sent yet more eDP-related patches, allowing eDP displays connected to the PCH to, well, work :) . The main issue came from the fact that the driver incorrectly was treating a PCH-connected eDP panel like a CPU-connected one, setting the wrong bits in the wrong places.
  • Daniel Vetter has sent out a series of patches for simulating GPU hangs. As you all know, GPU hangs are an (unfortunate) part of a GPU driver life, and there are many factors which could cause them, ranging from incorrect GL instructions to out-of-bounds variables somewhere in the stream of commands and down to hardware failures. Prior to Daniel’s patches, the only way to see a GPU hang was by having a hung GPU, so most of them were not easy to reproduce and investigate. Now, it is possible to stop the GPU at will, and see the effects. This is particularly interesting at least for me, because I was working on some tools for doing heuristics analysis of the root-causes of GPU hangs. Now, I can do this task with much more ease.
  • Jesse Barnes sent out a new round of planes support, and support for SNB and IVB video sprites. The video sprites support different video formats natively and can do scaling as well, and their support was added to the DRM overlay code with this patchset.
  • Ken and Daniel did a bit of cleanup of code specific to some pre-production SNB systems. Now that Sandy Bridge is out there, those bits are not necessary anymore, so they were wiped out.
  • Daniel has sent a 13-patch series of pwrite/pread reworking. This patchset fixes some spurious -EFAULTS issues which could lead to kernel issues, improves the performance of pread/pwrite calls on LLC machines and cleanups unused code, replacing them with faster execution paths.
  • Also on kernel, I’ve found an issue which can cause division-by-zero in kernel when accessing power-related registers from userspace, and sent a small patch fixing it. Apparently, the very same issue was already found back in July by Konstantin Belousov. It is a small fix for a potential kernel crashing issue, and let’s hope it will be picked up in one of the next kernel pull requests.
  • And Jesse Barnes sent out some documentation and cleanup patches for the drm subsystem.
  • Still on kernel, but outside of our team’s area, one big news for Linux Graphics will certainly make some people out there happy. Yes, I am speaking about Alan Cox moving of basic GMA500 driver out of staging. This driver support accelerated console and non-accelerated KMS on Poulsbo, Oaktrail, Cedarview and Medfield hardware. Note that medfield support in this initial patchset is left out on purpose, as it needs considerable rework to be ready to enter main kernel.

One particular issue worth highlighting is that a long-standing issue on GL-based applications (among which Unigine Tropics and Sanctuary are probably the most notable examples, among many others) was finally fixed, thanks to an amazing work by Eric Anholt, Kenneth Graunke and Keith Packard. This issue can be described as ‘small moving ants on top of image edges’ or ‘flickering pixels‘. So if you have had this issue, make sure to check out the patches!

Going to Mesa, out of hundreds of emails and commits, it is hard to choose the most interesting ones. Work on GL 3.0 support proceeds quickly, and new mesa stability release, 7.11.1 is almost out of the door. Our Q&A team did a full testing of this bugfixing release, and haven’t found much issues. So prepare yourself, as in few weeks we’ll have MESA 7.11.1 out there. Stay tuned for Ian’s announcement in nearby future.

But as for mesa master branch, the following patches called my attention the most:

  • Eric sent a patch series to add support for GL_EXT_texture_integer on i965 driver.
  • More work towards EXT_transform_feedback was done by Dan McCabe and Paul Berry, and Marek from the community side.
  • And we had lots of fixes for potential segmentation faults, safety checks, better hardware specification compatibility, piglit-based fixes and other issues from Yuanhan, Eric, Ken, Chad and Ian.

On Wayland side of the force, lots of patches went in those days. Among those, there was an interesting proposal for the screen locking protocol by Pekka Paalanen, and some bugfixing patches from Juan Zhao.

Going to the other components, we had a release of xorg-xserver 1.11.2 RC2, with several crashes and correctness fixes; and new stable pixman 0.24.0 which brings many performance improvements and usage of architecture-specific instructions to improve overall performance over a number of different operations (such as bilinear scaling for example).

And finally, for the intel-gpu-tools, I was working on a new intel_gpu_analyze application, which I was using to tracing and analyzing CPU and GPU performance data during workloads, and also checking on the corresponding power consumption. This is a very experimental code yet, and it lives at my freedesktop.org git for now. But still, I can already do some nice performance analysis like this one.

© 2012 Eugeni's blog Suffusion theme by Sayontan Sinha