mirror of
https://gitlab.winehq.org/wine/wine.git
synced 2026-03-07 01:54:45 +00:00
Page:
Direct3D
Pages
256 Color Mode
3D Driver Issues
AFD
AMD64
ARM
ARM64
ARM64EC Toolchain
Acknowledgements
Android
Apps That Support Wine
Bottling Standards
Bug Triage
Bugs
Building Biarch Wine On Ubuntu
Building Wine
Buildroot
CentOS RHEL
Clang
Clean Room Guidelines
Cmd Conformance Tests
Code Coverage
Code Hygiene
Code In
Commands
Compatibility
Conformance Tests
Copy Protection
Create Fonts
Create Icons
Cygwin and More
DOSBox
Debian Ubuntu
Debug Channels
Debugging Hints
Designers
Developer FAQ
Developer Hints
Developers
Direct3D
DirectDraw
DirectPlay Games
DirectX D3DX9
Disassembly
Distributed build with icecream
Distrobox development environment
Documentation
Download
Emulation
FAQ
Fedora
Forum Posting Guidelines
Forums
FreeBSD
Gcc
Gecko
Git Wine Tutorial
Guest Unit Tests
Haiku
Hardware
Hurd
IRC
Importance of Wine
Known Issues
Licensing
MIDI
MacOS Building
MacOS FAQ
MacOS
Mageia
Make Test Failures
Man Pages
Multiarch
News
OpenSUSE
Ospp Summer Code
Outreachy
Packaging
Performance
Pop! os
Portable Wine
Preloader Page Zero Problem
Previous Summers of Code
Project Organization
Public Relations
Regression Testing
Reverse Regression Testing
Sound
Source Code
Source Tree Structure
Stable Rules
Static Analysis
Submitting Patches
Summer Of Code
Third Party Applications
Translating
Uniscribe
Usage Statistics
Useful Registry Keys
Vim Tips
Web Design Tasks
Who's Who
Wine Developer's Guide
Wine Features
Wine History
Wine ICU
Wine Installation and Configuration
Wine Mono
Wine Status
Wine TestBot VMs
Wine TestBot
Wine User's Guide
Wine and Valgrind
WineConf
WineGUI
Winelib User's Guide
Winelib
Winetricks
Winezeug
Writers
home
No results
4
Direct3D
Elizabeth Figura edited this page 2026-02-09 23:12:15 +00:00
Bug lists
Todo
vkd3d
On the WineHQ wiki here: https://wiki.winehq.org/Vkd3d-todo
Direct3D
- Finish the Vulkan renderer for d3d < 10. This is a bit of a cumbersome task to name so it's sometimes called "Himavant" after Elizabeth's branch for this.
- Implement sm1-specific instructions in vkd3d-shader:
bem,breakc, breakp, call/label, callnz, cnd, crs,dp2add,dst, expp, if (b#), lit, logp,loop/endloop, lrp,mx,nrm,phase,pow, rep/endrep,setp, sgn,tex, texcoord, texld (1.4), texcrd,texdepth, texdp3, texdp3tex, texm*, texreg*. - Implement sm1-specific other instruction features in vkd3d-shader: predicate, shift (x2 etc), 1.4 projection (dw/dz),
relative addressing,BIAS, SIGN, NOT,1.1-1.3 t# temps,vPos, vFace Implement an interface for remaining "extra" states in vkd3d-shader: bump mapping constants (for bem, texbem), 1.x texture type, projection- Hook up remaining "extra" states: fog, bump mapping constants,
1.x texture type,projection - Implement legacy formats: B8G8R8, B2G3R3, B4G4R4X4, R8G8B8X8, B10G10R10A2, P8, L8, L8A8, L4A4, R5G5_L6, R8G8_L8X8, D16_LOCKABLE, X8D24, L16, S8_UINT_D24_FLOAT, NV12 (opaque ver), YV12, UYVY, YUY2, MULTI2_ARGB8, G8R8_G8B8, R8G8_B8G8, ATI1N, ATI2N, INTZ, NULL
Implement missing TSS_TCI_* support in the HLSL shader backend.- Blit features: format conversion, scaling, colour keys, alpha test
Set the necessary feature flags; we're missing a lot of them- d3d9 SRGB texture location
- Implement sm1-specific instructions in vkd3d-shader:
- Windowless wined3d.
- Ddraw has some code for this to handle rendering to the desktop / full screen. This should be moved to wined3d.
- D3d10+ needs this. You can render before even setting up a swapchain. Currently it creates a "frontbuffer-only" implicit swapchain.
- Maintain the card / driver info database in a separate file or the registry. We'd like to be able to update the card database without recompiling wined3d. This means the format should be somewhat stable though. How do we want to distribute updates for this?
- Most format capabilities are just recorded in the flags field of the wined3d_format structure now. Exceptions to this are CheckSurfaceCapability(), CheckDepthStencilCapability() and CheckRenderTargetCapability(). These should go away.
- DirectDraw should get its pixel format information from wined3d. We could for example ask wined3d for a format matching a set of masks.
- D3d9 and earlier handle multiplies with zero in shaders differently than OpenGL and d3d10+. In d3d9 and earlier anything multiplied by zero results in zero, including floating point specials like INF or NaN. OpenGL allows hardware to e.g. return NaN for 0 * +INF. We'd need an extension to request a specific behaviour from OpenGL. It looks like EXT_zero_mul_conventions never went anywhere, but we could perhaps get a similar extension into Mesa instead.
- Cleanup the tests.
- There are a number of tests in d3d9 that have no corresponding d3d8 or ddraw test, but don't require d3d9 specific features.
- Move the existing ddraw tests over to the new ddraw1/2/4/7 setup.
- We still have a number of test failures on the testbot.
- Ddraw flips need to be able to be vsync'ed. We can do this by blitting to the (real) backbuffer first and then doing a present instead of blitting directly from the shadow frontbuffer to the real frontbuffer.
- The way P8 textures (ddraw) are implemented is less than optimal. Stefan did some work on this, the basic idea is to keep surfaces as P8, including the ddraw frontbuffer, until they're blitted to the screen or uploaded to a texture.
- Review locking for ddraw, dxgi and d3d11. Dxgi mostly doesn't do locking at all, ddraw is probably broken.
- Wined3d locking could probably be more fine-grained. For example, (D3D) state updates typically don't need to wait for resource updates at all and draws only need to wait for resources used by that draw. This has interactions with the command thread above.
- We really shouldn't screw around with the window styles when switching to fullscreen. We have tests to prove this, and e.g. [https://bugs.winehq.org/show_bug.cgi?id=29301 WineHQ 29301] is caused by this. Creating a GL context on the window DC works, but can still only draw to the client rect (see test_window_dc() in dlls/opengl32/tests/opengl.c). Is there some way to really create a GL context on the window DC, perhaps by calling the OpenGL ICD directly? It probably wouldn't be terribly hard to add some special calls to winex11 to create a GL context on the whole window, but that would break the Win32 build of wined3d. How is this supposed to work in native D3D, are there DDI interfaces for this? Or does the d3d client library just tell the driver to draw to the entire screen? But in that case, is e.g. WS_CLIPCHILDREN supposed to work in fullscreen?
- We should add a Wine specific GL extension to winex11.drv, essentially the successor to WGL_WINE_pixel_format_passthrough. The purpose would be to allow wined3d to properly co-exist with OpenGL applications. See [https://bugs.winehq.org/show_bug.cgi?id=28869 WineHQ 28869] and [https://bugs.winehq.org/show_bug.cgi?id=29934 WineHQ 29934] for some of the issues involved. We'd need a function to create a "wined3d" WGL context and the equivalent of context_enter() / context_release(). There may be a role for switching a context to fullscreen / exclusive mode.
- We should add support for ARB_separate_shader_objects, and try to compile shaders with reasonable defaults in advance to reduce stutter on first use.
Direct2D
- d2d_geometry_intersect_self() is pretty slow.
- Cubic beziers are currently approximated by quadratic ones. This has acceptable results for things like font glyphs since those are mostly elevated quadratics or something close, but doesn't work so well for real cubics.
- Drawing arcs is unimplemented.
- Layers are unimplemented.
- Anti-aliasing is unimplemented.
- Gradient brushes are unimplemented.