summaryrefslogtreecommitdiff
path: root/src/gallium
AgeCommit message (Collapse)Author
2010-09-21d3d1x: fix compilation with recent Wine versions installedLuca Barbieri
Recent Wine versions provide a d3d11shader.h, which is however empty and was getting used instead of our non-empty one. Correct the include path order to fix this.
2010-09-21d3d1x: add blob and signature extraction APIsLuca Barbieri
NOTE: untested, needs a testing tool!
2010-09-21llvmpipe: fix flatshading in new line codeKeith Whitwell
Calculate interpolants before rearranging the vertices.
2010-09-21d3d1x: add new Direct3D 10/11 COM state tracker for GalliumLuca Barbieri
This is a new implementation of the Direct3D 11 COM API for Gallium. Direct3D 10 and 10.1 implementations are also provided, which are automatically generated with s/D3D11/D3D10/g plus a bunch of #ifs. While this is an initial version, most of the code is there (limited to what Gallium can express), and tri, gears and texturing demos are working. The primary goal is to realize Gallium's promise of multiple API support, and provide an API that can be easily implemented with just a very thin wrapper over Gallium, instead of the enormous amount of complex code needed for OpenGL. The secondary goal is to run Windows Direct3D 10/11 games on Linux using Wine. Wine dlls are currently not provided, but adding them should be quite easy. Fglrx and nvidia drivers can also be supported by writing a Gallium driver that talks to them using OpenGL, which is a relatively easy task. Thanks to the great design of Direct3D 10/11 and closeness to Gallium, this approach should not result in detectable overhead, and is the most maintainable way to do it, providing a path to switch to the open Gallium drivers once they are on par with the proprietary ones. Currently Wine has a very limited Direct3D 10 implementation, and completely lacks a Direct3D 11 implementation. Note that Direct3D 10/11 are completely different from Direct3D 9 and earlier, and thus warrant a fully separate implementation. The third goal is to provide a superior alternative to OpenGL for graphics programming on non-Windows systems, particularly Linux and other free and open systems. Thanks to a very clean and well-though design done from scratch, the Direct3D 10/11 APIs are vastly better than OpenGL and can be supported with orders of magnitude less code and development time, as you can see by comparing the lines of code of this commit and those in the existing Mesa OpenGL implementation. This would have been true for the Longs Peak proposal as well, but unfortunately it was abandoned by Khronos, leaving the OpenGL ecosystem without a graphics API with a modern design. A binding of Direct3D 10/11 to EGL would solve this issue in the most economical way possible, and this would be great to provide in Mesa, since DXGI, the API used to bind Direct3D 10/11 to Windows, is a bit suboptimal, especially on non-Windows platforms. Finally, a mature Direct3D 10/11 implementation is intrinsically going to be faster and more reliable than an OpenGL implementation, thanks to the dramatically smaller API and the segregation of all nontrivial work to object creation that the application must perform ahead of time. Currently, this commit contains: - Independently created headers for Direct3D 10, 10.1, 11 and DXGI 1.1, partially based on the existing Wine headers for D3D10 and DXGI 1.0 - A parser for Direct3D 10/11 DXBC and TokenizedProgramFormat (TPF) - A shader translator from TokenizedProgramFormat to TGSI - Implementation of the Direct3D 11 core interfaces - Automatically generated implementation of Direct3D 10 and 10.1 - Implementation of DXGI using the "native" framework of the EGL st - Demos, usable either on Windows or on this implementation - d3d11tri, a clone of tri - d3d11tex, a (multi)texturing demo - d3d11gears, an improved version of glxgears - d3d11spikysphere, a D3D11 tessellation demo (currently Windows-only) - A downloader for the Microsoft HLSL compiler, needed to recompile the shaders (compiled shader bytecode is also included) To compile this, configure at least with these options: --with-state-trackers=egl,d3d1x --with-egl-platforms=x11 plus some gallium drivers (such as softpipe with --enable-gallium-swrast) The Wine headers (usually from a wine-dev or wine-devel package) must be installed. Only x86-32 has been tested. You may need to run "make" in the subdirectories of src/gallium/winsys/sw and you may need to manually run "sudo make install" in src/gallium/targets/egl To test it, run the demos in the "progs" directory. Windows binaries are included to find out how demos should work, and to test Wine integration when it will be done. Enjoy, and let me know if you manage to compile and run this, or which issues you are facing if not. Using softpipe is recommended for now, and your mileage with hardware drivers may vary. However, getting this to work on hardware drivers is also obviously very important. Note that currently llvmpipe is buggy and causes all 3 gears to be drawn with the same color. Use export GALLIUM_DRIVER=softpipe to avoid this. Thanks to all the Gallium contributors and especially the VMware team, whose work made it possible to implement Direct3D 10/11 much more easily than it would have been otherwise.
2010-09-21r600g: Removed debug code.Tilman Sauerbeck
Signed-off-by: Tilman Sauerbeck <tilman@code-monkey.de>
2010-09-21r600g: fix eg texture borders.Dave Airlie
texture border regs are indexed on evergreen.
2010-09-21r600g: fixup evergreen miptree setup.Dave Airlie
eg seems to have a higher pitch aligmment requirement and uses r700 cube setup this fixes a couple of piglit tests here.
2010-09-21r600g: set back to correct codepaths.Dave Airlie
Jerome please use git diff and git show before pushing.
2010-09-21r600g: deal with overflow of VTX/TEX CF clauses.Dave Airlie
running piglit's texrect-many caused the vtx to overflow.
2010-09-20tgsi: Remove duplicate case value.Vinson Lee
2010-09-21tgsi: Actually care what check_soa_dependencies saysJakob Bornecrantz
Thanks to José for the more complete list of supported opcodes. NOTE: This is a candidate for the 7.9 branch.
2010-09-21tgsi: Don't ignore indirect registers in tgsi_check_soa_dependenciesJosé Fonseca
NOTE: This is a candidate for the 7.9 branch.
2010-09-20r600g: add back reference check when mapping bufferJerome Glisse
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-09-20r600g: use pipe context for flushing inside mapJerome Glisse
This allow to share code path btw old & new, also remove check on reference this might make things a little slower but new design doesn't use reference stuff. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-09-20python/tests: Fixed tri.py for API and TGSI syntax changes.Tilman Sauerbeck
Signed-off-by: Tilman Sauerbeck <tilman@code-monkey.de>
2010-09-20r600g: Implemented the Z and W component write for the SCS opcode.Tilman Sauerbeck
Signed-off-by: Tilman Sauerbeck <tilman@code-monkey.de>
2010-09-20r600g: Honour destination operand's writemask in the SCS implementation.Tilman Sauerbeck
If we are not going to write to the X or Y components of the destination vector we also don't need to prepare to compute SIN or COS. Signed-off-by: Tilman Sauerbeck <tilman@code-monkey.de>
2010-09-20softpipe: fix whitespaceLuca Barbieri
2010-09-20tgsi: add switch/case opcodes to tgsi_opcode_tmp.hLuca Barbieri
2010-09-20softpipe: make z/s test always pass if no zsbuf, instead of crashingLuca Barbieri
D3D10 specifies this.
2010-09-20gallium: avoid the C++ keyword "template" in sw_winsys.hLuca Barbieri
2010-09-20gallivm: remove debug codeBrian Paul
2010-09-20llvmpipe: fix query bug when no there's no sceneBrian Paul
2010-09-20r600g: move chip class to radeon common structureJerome Glisse
So texture code can be shared btw new state design & old one. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-09-20i915g: Link with wrapper sw winsys with sconsJakob Bornecrantz
2010-09-20svga: Integer constant register file has a separate namespace.Michal Krol
Count int and float constants independently. Since there are only few i# constants available and hundreds of c# constants, it would be too easy to end up with an i# declaration out of its range.
2010-09-20svga: Fix relative addressing translation for pixel shaders.Michal Krol
Pixel shaders do not have address registers a#, only one loop register aL. Our only hope is to assume the address register is in fact a loop counter and replace it with aL. Do not translate ARL instruction for pixel shaders -- MOVA instruction is only valid for vertex saders. Make it more explicit relative addressing of inputs is only valid for pixel shaders and constants for vertex shaders.
2010-09-19r600g: Cleanup viewport floats.Corbin Simpson
2010-09-19r600g: Clean up PS setup.Corbin Simpson
I didn't do r600d according to the docs; I split EXPORT_MODE to be a bit more useful and obvious. Hope this is okay.
2010-09-20r600g: only flush for the correct colorbuffer, not all of them.Dave Airlie
2010-09-20r600g: add missing BC_INST wrapper for evergreenDave Airlie
2010-09-20r600g: fixup r700 CB_SHADER_CONTROL register.Dave Airlie
r600c emits this with a mask of each written output.
2010-09-20r600g: fix r700 cube map sizing.Dave Airlie
this fixes fbo-cubemap on r700.
2010-09-20r600g: add color/texture support for more depth formats.Dave Airlie
2010-09-20r600g: add z16 to color setupDave Airlie
2010-09-20r600g: fix tiling support for ddx supplied buffersDave Airlie
needed to emit some more relocs to the kernel.
2010-09-19r600g: "tmp" is such a bad name for a texture.Corbin Simpson
2010-09-19r600g: Fix false and true.Corbin Simpson
2010-09-19r600g: Clean up some indentation and |= vs. | usage.Corbin Simpson
2010-09-19r600g: Deobfuscate and comment a few more functions in r600_hw_states.Corbin Simpson
2010-09-19r600g: Trivially deobfuscate r600_hw_states.Corbin Simpson
2010-09-19r600g: Use align() instead of handrolled code.Corbin Simpson
2010-09-20r600g: drop debugging that snuck inDave Airlie
2010-09-20r600g: clean up valgrind issues on maxtargets test.Dave Airlie
2010-09-20r600g: fix fbo-drawbuffers-maxtargetsDave Airlie
we were leaking buffers since the flush code was added, it wasn't dropping references. move setting up flush to the set_framebuffer_state. clean up the flush state object. make more space in the BOs array for flushing.
2010-09-20r600g: send correct surface base update for multi-cbufsDave Airlie
2010-09-20r600g: modify index buffers for sizes the hw can't deal with.Dave Airlie
this just uses the common code from r300g now in util to do translations on r600g.
2010-09-20util/r300g: split the r300 index buffer modifier functions out to utilDave Airlie
These can be used by other drivers, like r600g. Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-09-20r600g: fix exports_ps to export a number not a mask.Henri Verbeet
2010-09-20scons: Link against talloc in the Gallium DRI driversJakob Bornecrantz