From Fedora Project Wiki
No edit summary
(See bz - moving to incomplete category)
 
(36 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Direct3D =
= Wine to use mesa Direct3D =


== Summary ==
== Summary ==
<!-- A sentence or two summarizing what this change is and what it will do. This information is used for the overall changeset summary page for each release. -->
Enhancing mesa and wine with Direct3D9 support will increase performance and reduce resource usage in applications which using D3D9 framework.


== Owner ==
== Owner ==
<!--
For change proposals to qualify as self-contained, owners of all affected packages need to be included here. Alternatively, a SIG can be listed as an owner if it owns all affected packages.
This should link to your home wiki page so we know who you are.
-->
* Name: [[User:ignatenkobrain|Igor Gnatenko]]
* Name: [[User:ignatenkobrain|Igor Gnatenko]]
<!-- Include you email address that you can be reached should people want to contact you about helping with your change, status is requested, or technical issues need to be resolved. If the change proposal is owned by a SIG, please also add a primary contact person. -->
* Email: ignatenkobrain@fedoraproject.org
* Email: ignatenkobrain@fedoraproject.org
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> -->
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> -->
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
* FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address>
-->
<!--- UNCOMMENT only if this Change aims specific product, working group (Cloud, Workstation, Server, Base, Env & Stacks)
* Product:
* Responsible WG:
-->


== Current status ==
== Current status ==
Line 32: Line 20:
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
-->
-->
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1184894 #1184894]


== Detailed Description ==
== Detailed Description ==
<!-- Expand on the summary, if appropriate. A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
Developers: [https://plus.google.com/110830723758089847922 Axel Davy] (davyaxel@free.fr)
 
When playing d3d9 games on Wine, their d3d9 calls are translated to OpenGL. This is complicated process, because you have to deal with different drivers having different extensions available, and the fact that OpenGL and d3d9 don't map perfectly together. Gallium Nine implements the d3d9 API with Gallium internal API, which maps better to d3d9 than OpenGL. You remove some layers of translation in the process which enables better performance. Gallium Nine is not as mature as Wine OpenGL translation, and it is likely to have more bugs, but when the games work, you can expect 5-10% improvement for gpu limited games, or much more (sometimes 100%) for cpu limited games.
 
'''what is Gallium''':
Gallium is an internal graphic driver abstraction of Mesa to enable support of non-opengl languages more easily (it is used for vdpau and vaapi on r600/radeonsi for example). It is used by nouveau and r300 up to radeonsi for AMD. Intel OpenGL support doesn't use gallium, but a gallium driver named ilo exists, but isn't sponsored by Intel.
 
In practice, games have also smoother frame rate on Gallium Nine. Gallium Nine has good DRI_PRIME support, and if you have a system with an iGPU+dGPU, you can play without issues with the parameters DRI_PRIME=1 thread_submit=true
 
[https://wiki.ixit.cz/d3d9 https://wiki.ixit.cz/d3d9]
 
{| class="wikitable"
TODO List
!Description
!Assignee
!Status
!References
|-
|Enable Direct3D9 state tracker in mesa
|Igor Gnatenko
|{{result|pass}}  <ref>http://pkgs.fedoraproject.org/cgit/mesa.git/commit/?id=dc2fc7918e7ba9fc5ded9f59e0b5d3725414ece6</ref><ref>http://pkgs.fedoraproject.org/cgit/mesa.git/commit/?id=21449d7adf357239bf8982165d29676b2611cd06</ref>
|<references/>
|-
|Land d3d support in wine
|Axel Davy and Igor Gnatenko
|{{result|inprogress}}  <ref>https://github.com/iXit/wine</ref>
|<references/>
|-
|}
 
{| class="wikitable"
Hardware compatibility List
!Hardware
!Status
!References
|-
|AMD (r300-r500)
|{{result|warn}} <ref>some game will work, not all of them</ref>
|<references/>
|-
|AMD (r600-radeonsi)
|{{result|pass}}
|<references/>
|-
|Nvidia (nv50-nvc0)
|{{result|pass}} <ref>minor issues on some games that won't trigger on amd</ref>
|<references/>
|-
|Intel (ilo)
|{{result|fail}} <ref>Driver not advanced enough for now</ref>
|<references/>
|-
|Intel (i915)
|{{result|inprogress}} <ref>untested. Probably won't work</ref>
|<references/>
|-
|}


== Benefit to Fedora ==
== Benefit to Fedora ==
<!-- What is the benefit to the platform?  If this is a major capability update, what has changed?  If this is a new functionality, what capabilities does it bring? Why will Fedora become a better distribution or project because of this proposal?-->
Users wanting to play d3d9 games on Wine will get better experience when using Gallium Nine when it works


== Scope ==
== Scope ==
* Proposal owners:
* Proposal owners: work on the Mesa Direct3D support
** [[User:ignatenkobrain|Igor Gnatenko]]
**
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->


* Other developers: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Other developers: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->


* Release engineering: N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Release engineering: N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuid required?  If a rel-eng ticket exists, add a link here.  -->


* Policies and guidelines: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Policies and guidelines: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. -->


== Upgrade/compatibility impact ==
== Upgrade/compatibility impact ==
Line 62: Line 100:


== How To Test ==
== How To Test ==
<!-- This does not need to be a full-fledged document. Describe the dimensions of tests that this change implementation is expected to pass when it is done.  If it needs to be tested with different hardware or software configurations, indicate them.  The more specific you can be, the better the community testing can be.
# <code># dnf install wine</code>
 
# Check if <code>mesa-d3d</code> installed automatically
Remember that you are writing this how to for interested testers to use to check out your change implementation - documenting what you do for testing is OK, but it's much better to document what *I* can do to test your change.
# Run some benchmarks/games in wine
 
A good "how to test" should answer these four questions:


0. What special hardware / data / etc. is needed (if any)?
Expected results: no problems and more better performance
1. How do I prepare my system to test this change? What packages
need to be installed, config files edited, etc.?
2. What specific actions do I perform to check that the change is
working like it's supposed to?
3. What are the expected results of those actions?
-->
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
N/A (not a System Wide Change)


== User Experience ==
== User Experience ==
Line 91: Line 118:


== Contingency Plan ==
== Contingency Plan ==
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
* Contingency mechanism: Revert and try to do in next release
* Contingency mechanism: (What to do?  Who will do it?) N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Contingency deadline: beta freeze
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
* Blocks release? No
* Contingency deadline: N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Blocks product? N/A (not a System Wide Change)  
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? -->
* Blocks release? N/A (not a System Wide Change), Yes/No <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Blocks product? product <!-- Applicable for Changes that blocks specific product release/Fedora.next -->


== Documentation ==
== Documentation ==

Latest revision as of 07:55, 31 March 2015

Wine to use mesa Direct3D

Summary

Enhancing mesa and wine with Direct3D9 support will increase performance and reduce resource usage in applications which using D3D9 framework.

Owner

  • Name: Igor Gnatenko
  • Email: ignatenkobrain@fedoraproject.org
  • Release notes owner:

Current status

Detailed Description

Developers: Axel Davy (davyaxel@free.fr)

When playing d3d9 games on Wine, their d3d9 calls are translated to OpenGL. This is complicated process, because you have to deal with different drivers having different extensions available, and the fact that OpenGL and d3d9 don't map perfectly together. Gallium Nine implements the d3d9 API with Gallium internal API, which maps better to d3d9 than OpenGL. You remove some layers of translation in the process which enables better performance. Gallium Nine is not as mature as Wine OpenGL translation, and it is likely to have more bugs, but when the games work, you can expect 5-10% improvement for gpu limited games, or much more (sometimes 100%) for cpu limited games.

what is Gallium: Gallium is an internal graphic driver abstraction of Mesa to enable support of non-opengl languages more easily (it is used for vdpau and vaapi on r600/radeonsi for example). It is used by nouveau and r300 up to radeonsi for AMD. Intel OpenGL support doesn't use gallium, but a gallium driver named ilo exists, but isn't sponsored by Intel.

In practice, games have also smoother frame rate on Gallium Nine. Gallium Nine has good DRI_PRIME support, and if you have a system with an iGPU+dGPU, you can play without issues with the parameters DRI_PRIME=1 thread_submit=true

https://wiki.ixit.cz/d3d9

TODO List
Description Assignee Status References
Enable Direct3D9 state tracker in mesa Igor Gnatenko
Pass pass
[1][2]
Land d3d support in wine Axel Davy and Igor Gnatenko
Inprogress inprogress
[1]
Hardware compatibility List
Hardware Status References
AMD (r300-r500)
Warning warn
[1]
  1. some game will work, not all of them
AMD (r600-radeonsi)
Pass pass
Nvidia (nv50-nvc0)
Pass pass
[1]
  1. minor issues on some games that won't trigger on amd
Intel (ilo)
Fail fail
[1]
  1. Driver not advanced enough for now
Intel (i915)
Inprogress inprogress
[1]
  1. untested. Probably won't work

Benefit to Fedora

Users wanting to play d3d9 games on Wine will get better experience when using Gallium Nine when it works

Scope

  • Proposal owners: work on the Mesa Direct3D support
  • Other developers: N/A (not a System Wide Change)
  • Release engineering: N/A (not a System Wide Change)
  • Policies and guidelines: N/A (not a System Wide Change)

Upgrade/compatibility impact

N/A (not a System Wide Change)

How To Test

  1. # dnf install wine
  2. Check if mesa-d3d installed automatically
  3. Run some benchmarks/games in wine

Expected results: no problems and more better performance

User Experience

N/A (not a System Wide Change)

Dependencies

N/A (not a System Wide Change)

Contingency Plan

  • Contingency mechanism: Revert and try to do in next release
  • Contingency deadline: beta freeze
  • Blocks release? No
  • Blocks product? N/A (not a System Wide Change)

Documentation

N/A (not a System Wide Change)

Release Notes