Community Announcements - Pierre-Loup
Today we are releasing the first build of Proton 4.11, based on Wine 4.11. Among the usual variety of functional fixes, as well as a new Vulkan-based D3D9 implementation, it also includes a significant amount of work on reducing CPU overhead for multithreaded games. We observed the following performance gains when forcing a CPU-bound scenario on a high-end machine by reducing graphics details to a minimum:



We expect such gains to be reproducible on more realistic settings with a lower-end machine.

It also includes an experimental replacement for esync. Last year, as we were ramping up Proton development, we identified several blocking performance issues with multithreaded games. CodeWeavers then worked on developing the esync patchset to address them. While we think that was very successful, there's certain tradeoffs associated with it: because it relies on the kernel's eventfd() functionality, esync needs special setup and can cause file descriptor exhaustion problems in event-hungry applications. We think it also results in extraneous spinning in the kernel, compared to what an optimal implementation would be.

As such, we're proposing changes to the Linux kernel to extend the futex() system call to expose what we think is the needed extra bit of core functionality needed to support optimal thread pool synchronization. Proton 4.11 includes the fsync patchset, which will leverage this new Linux kernel functionality to replace esync when supported. For more technical details, refer to the link to the proposed kernel changes above.

We are also posting proof-of-concept glibc patches for upstream review and discussion; these patches expose the corresponding kernel functionality as part of the pthread library. We think that if this feature (or an equivalent) was adopted upstream, we would achieve efficiency gains by adopting it in native massively-threaded applications such as Steam and the Source 2 engine.

As usual, testing our theories and uncovering the last few bugs will involve a lot of testing; we have prepared packages for Ubuntu and Arch containing the necessary kernel patches to test fsync with Proton 4.11; for more information, please see this forum thread.
Community Announcements - Pierre-Loup
Back in late 2016, we started sponsoring the work of open-source graphics driver engineers, creating the foundation for the Valve open-source graphics group. By leveraging the open development model of the Mesa driver codebase, we were able to provide direct support for Steam and its functionality to Intel and AMD graphics users. At the time, we got a ton of help from the community; folks rallied together and produced a very valuable list of games that didn't work on Mesa, as well as many other bugs affecting Steam games.

So far, that project has been very successful: through the combined efforts of all parties working on Mesa, we think the user experience when playing high-end Steam games has greatly improved over the past few years.

The team has since continued to grow over time; earlier last year, we were able to take a step back and think about larger development efforts, rather than having to put all of our focus on incoming bugs and feature requests. So far, the majority of the work we have done around game performance and functionality has turned out to be related to the driver's shader compiler. Likewise, we think the majority of the regressions encoutered by users originated from the shader compiler.

The AMD OpenGL and Vulkan drivers currently use a shader compiler that is part of the upstream LLVM project. That project is massive, and has many different goals, with online compilation of game shaders only being one of them. That can result in development tradeoffs, where improving gaming-specific functionality is harder than it otherwise would, or where gaming-specific features would often accidentally get broken by LLVM developers working on other things. In particular, shader compilation speed is one such example: it's not really a critical factor in most other scenarios, just a nice-to-have. But for gaming, compile time is critical, and slow shader compilation can result in near-unplayable stutter.

With that in mind, and our newfound resources from last year, we decided to embark on an experiment. Could we make a shader compiler that is, at its core, designed and engineered with only gaming in mind? Would it provide a significant experience difference for our users?

To answer that question, we started working on ACO, a new Mesa shader compiler for AMD hardware. Its main two goals are best-possible code generation for game shaders, and fastest-possible compilation speed. Starting with radv, we initially got the shaders for a single game to compile and render properly, then worked through the bringup of additional games.

We've recently gotten to the point where it's able to run a wide variety of games without issues, letting us take an initial stab at optimization and testing our initial theories. Below are some quick highlights from the results.

As expected, keeping a focus on compile times throughout development let us make a lot of progress on that aspect:



Right now, ACO only handles pixel and compute shader stages. When the rest of the stages are implemented, we expect the compile times will be reduced even further.

July 29th update: the chart above has been updated to reflect improved compile times now that ACO has vertex shader support.

On the in-game performance side, we've also been able to get great results, sometimes exceeding our initial expectations:



Most other games we've tested appear mostly unaffected in terms of runtime performance, but still benefit from the compilation time improvements.

Today, we are posting the ACO source tree for discussion and review by the Mesa developers. More importantly, we think it's also ready for consumption by users, as many games run stably and demonstrate noticeable stutter reduction in our own testing. In turn, getting issue reports from users testing a wide variety of games and applications will greatly help direct the development effort. To facilitate testing, we are preparing packages for select distributions, and a dedicated bug tracker. If you run Vulkan games on AMD hardware, please check out this forum thread for details!

We are looking forward to your testing feedback, as well as comments from the Mesa community; they will help inform our next steps for this project.

For more information on the compiler, please refer to Daniel's email to the Mesa list.

For more details on the performance results, see this document.
Community Announcements - Pierre-Loup
In 2010, we announced Steam Play: a way for Steam users to access Windows, Mac and Linux versions of Steam games with a single purchase. More than 3000 of the games that have been added to Steam after that point have included Linux support, with more titles being added every day. Since then, we've continued to look for ways to make more titles easily accessible to Linux users.

So, two years ago, we started an effort to improve the quality and performance of Windows compatibility solutions for Steam games. A lot of our work has been in the form of supporting Wine and other existing compatibility projects. We have also been integrating these tools into the Steam client to provide the same simple plug-and-play experience offered by regular Linux games.

Our goal for this work is to let Linux Steam users enjoy easy access to a larger back catalog. We think it will also allow future developers to easily leverage their work from other platforms to target Linux. This would give them the option of focusing on areas that would make a meaningful experience difference for all users instead, such as supporting Vulkan.

As a result of this work, today we are releasing the Beta of a new and improved version of Steam Play to all Linux users! It includes a modified distribution of Wine, called Proton, to provide compatibility with Windows game titles. Here are some of the improvements it brings to the table:
  • Windows games with no Linux version currently available can now be installed and run directly from the Linux Steam client, complete with native Steamworks and OpenVR support.
  • DirectX 11 and 12 implementations are now based on Vulkan, resulting in improved game compatibility and reduced performance impact.
  • Fullscreen support has been improved: fullscreen games will be seamlessly stretched to the desired display without interfering with the native monitor resolution or requiring the use of a virtual desktop.
  • Improved game controller support: games will automatically recognize all controllers supported by Steam. Expect more out-of-the-box controller compatibility than even the original version of the game.
  • Performance for multi-threaded games has been greatly improved compared to vanilla Wine.



This goes hand-in-hand with an ongoing testing effort of the entire Steam catalog, in order to identify games that currently work great in this compatibility environment, and find and address issues for the ones that don't. The initial set of supported games that we are enabling with this initial Beta release is as follows:
We will be enabling more titles in the near future as testing results and development efforts progress; in the meantime, enthusiast users are also able to try playing non-whitelisted games using an override switch in the Steam client. Going forward, users can vote for their favorite games to be considered for Steam Play using platform wishlisting.

Steam Play whitelisted games will not be offered for purchase or marked as supported on Linux on the Store during the initial Beta period.

Proton, the tool that Steam Play uses to provide Windows compatibility, contains a custom version of Wine as well as additional libraries developed alongside it. It's fully open-source and available right now on GitHub!

If you're familiar with building open source projects, you can even make your own local builds of Proton; the Steam client has support for using those to run games in lieu of the built-in version. Join the discussion in the issue tracker and share your patches and testing results with the rest of the community!



Q: What do I need to get started?

Not much; here's what to keep in mind:
Q: What is Proton exactly? How does it differ from normal Wine? Who worked on it?

Proton is a tool distribution based on a modified version of Wine. The included improvements to Wine have been designed and funded by Valve, in a joint development effort with CodeWeavers. Here are some examples of what we've been working on together since 2016:
  • vkd3d, the Direct3D 12 implementation based on Vulkan
  • The OpenVR and Steamworks native API bridges
  • Many wined3d performance and functionality fixes for Direct3D 9 and Direct3D 11
  • Overhauled fullscreen and gamepad support
  • The "esync" patchset, for multi-threaded performance improvements
Modifications to Wine are submitted upstream if they're compatible with the goals and requirements of the larger Wine project; as a result, Wine users have been benefiting from parts of this work for over a year now. The rest is available as part of our source code repository for Proton and its modules.

In addition to that, we've been supporting the development of DXVK, the Direct3D 11 implementation based on Vulkan; the nature of this support includes:
  • Employing the DXVK developer in our open-source graphics group since February 2018
  • Providing direct support from our open-source graphics group to fix Mesa driver issues affecting DXVK, and provide prototype implementations of brand new Vulkan features to improve DXVK functionality
  • Working with our partners over at Khronos, NVIDIA, Intel and AMD to coordinate Vulkan feature and driver support
Q: What is the performance like?

A performance difference is to be expected for games where graphics API translation is required, but there is no fundamental reason for a Vulkan title to run any slower.

Q: Are there any games that will never work with Proton?

It's likely that some games using complex DRM or anti-cheat systems will be difficult, or even impossible to support.

Q: When will additional game titles marked as compatible with the new Steam Play?

We'll whitelist new batches of games as testing progresses, with no set cadence. New games will be added to the system without requiring a Steam Client update.

Q: Can I try a game with Proton even if it's not marked as compatible?

Yes; head to the Steam Play options of your Steam Client and you'll be able to enable it for all games.

Q: Any plans for macOS support?

While Wine and Proton work on macOS, there are no plans to support the new Steam Play functionality on macOS at the moment.

Q: I'm a developer; if my game is already supporting Linux, does this change anything?

Probably not; if you've already ported your common code or are using an engine that supports Linux, keep doing what you're doing, you're good to go.

Q: I'm a developer; I wasn't planning on targeting Linux, how can I best leverage the new Steam Play?

We recommend you target Vulkan natively in order to offer the best possible performance on all platforms, or at least offer it as an option if possible. It's also a good idea to avoid any invasive third-party DRM middleware, as they sometimes prevent compatibility features from working as intended.

Q: I'm a developer; my game got whitelisted in Steam Play; does this mean I have to support an additional platform?

No; if a game was whitelisted as a result of our testing, we've assessed the experience to be identical (save for an expected moderate performance impact). Users playing through Steam Play experiencing Linux-specific issues should be directed to Steam for support. Keep in mind users were most likely already playing your game using Wine; you just have better visibility into it now.

----

If you have any questions that aren't answered above, head to the Steam Community and get a conversation started!
- Pierre-Loup
Community Announcements - Pierre-Loup
We have made changes to the wishlist aiming to improve developers' visibility of any interest in their title coming from Steam users playing on platforms they're not currently targeting.

If a user only has one platform filter selected in their Steam store preferences, adding a game to their wishlist will result in it being specially reported to the developer in a new platform-specific breakdown of the wishlist report:





If you want to signal your interest in a given title becoming available for your platform of choice, just make sure your store preferences are set appropriately and wishlist away!
Shacknews - Ozzie Mejia
Dreamfall Chapters is going in a slightly different direction for its upcoming release. Originally slated as a standalone release, the Kickstarter-funded project will now be released as an episodic series, with developer Red Thread Games releasing a new trailer for the first installment.
Community Announcements - Pierre-Loup
We have just made Portal 2 available in Beta form on Linux; to access it, you need to opt into the Beta from the Portal 2 properties in your Steam Library.

We look forward to your feedback; head to our dedicated tracker to report issues and look at know issues:

https://github.com/ValveSoftware/portal2/issues
Shacknews - Alice O'Connor
It's been nine months since Dreamfall Chapters: The Longest Journey smashed its crowdfunding goal (though over six years since the very first plans), and we have another eleven until it arrives in November 2014. So how's it looking at this point? Pretty good, it seems, going by a new 27-minute gameplay walkthrough narrated by creator Ragnar T rnquist and design director Martin Bruusgaard. The video shows off the first half of the adventure game's second chapter from a pre-alpha build, which sees returning Dreamfall character Kian Alvane in prison, sentenced to death.
Shacknews - Ozzie Mejia
IndieCade 2013 featured 36 award finalists, with the event's winners announced on Thursday evening. The event also announced three more winners (Audience Choice, Media Choice, and Developer's Choice) during Sunday evening's closing ceremonies. The big winner was Quadrilateral Cowboy from Blendo Games, which won IndieCade's Grand Jury Award. This top prize is decided by a panel of jurors who recognize a specific game for overall excellence. Other winners include Nevernaut Games' 2v2 capture the flag game SlashDash taking the Audience Choice Award, Matt Thorson's TowerFall winning the Media Choice Award, and the 5-on-5 arcade cabinet Joust homage Killer Queen taking Developer's Choice honors.
Shacknews - Steve Watts
Gone Home has gotten critical praise and awards, but what does it all mean? A free update may provide some answers, by providing a commentary track from many of the game's key creative forces.
Shacknews - Ozzie Mejia
The Fullbright Company captivated players with a unique take on first-person exploration in its first indie title, Gone Home. With its irreverent take on horror tropes, an engaging setting, and an unforgettable narrative, Gone Home left a lasting impression on many players, myself included. It's been a year since Shacknews last spoke to Steve Gaynor from The Fullbright Company, but now seemed like a good time to reach out to him. And while Fullbright remains on a tight schedule, Gaynor did make some time to answer a handful of questions, including a few from our Chatty. Be forewarned, the following will contain light spoilers for Gone Home.
...

Search news
Archive
2020
Feb   Jan  
Archives By Year
2020   2019   2018   2017   2016  
2015   2014   2013   2012   2011  
2010   2009   2008   2007   2006  
2005   2004   2003   2002