1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems


Facebook RSS Twitter Twitter Google Plus


Phoronix Test Suite

OpenBenchmarking Benchmarking Platform
Phoromatic Test Orchestration

A Proposal For Compiling Direct3D HLSL With LLVM

Compiler

Published on 28 March 2011 10:54 PM EDT
Written by Michael Larabel in Compiler
6 Comments

Lately we have been talking a lot about this year's Google Summer of Code whereby Google pays student developers to work on various free software projects over the summer. While GSoC has been taking place for several years, this year there's been several interesting proposals expressed. Among the proposals to catch our attention has been experimental work on KDE's KWin for Wayland, an OpenGL 4.1 Gallium3D state tracker that's now turned into a video acceleration state tracker for WebM/VP8 on VDPAU, better multi-GPU support, and ReactOS improvements, among many other expressed proposals from dozens of free software projects. Another one was just brought up by a student developer and that's to provide support for compiling Microsoft Direct3D HLSL in LLVM.

This proposal by Charles Davis, an American university student, is entitled "Microsoft Direct3D shader bytecode backend." Here's the abstract from the proposal:
There is a distinct lack of open-source frameworks for compiling HLSL, the shader language used by Direct3D, into bytecode that D3D can understand. Currently, the only such framework is Ryan Gordon's MojoShader, whose HLSL compiler component is still under heavy development. By utilizing LLVM, it may be possible to generate high-performance shader code from HLSL, just as Apple is known to do for GLSL. The first step is a backend to generate D3D bytecode from LLVM IR.

Basically it's doing what Apple does with LLVM for GL Shading Language (GLSL) work on Mac OS X and what Linux developers have begun to do in the Linux world with Gallium3D, but to apply this to Direct3D and HLSL, the Microsoft High Level Shader Language.

Not only would the Low-Level Virtual Machine be compiling the HLSL, but it would take advantage of the LLVM optimizers to generate more efficient and higher-performing HLSL. Right now under Windows, most HLSL is generated by Microsoft's compiler in DirectX. As part of the HLSL compiler, the LLVM back-end would generate Direct3D shader byte-code from LLVM IR.

What makes this work particularly interesting is that the proposal has the interest of the Wine project. In fact, it was Dan Kegel who brought up this idea of using LLVM for a Direct3D/HLSL compiler. Wine's in need of a shader compiler and so they hope this work will come to fruition. Dan Kegel in fact a well known Wine figure and is employed by Google and was the Wine 1.0 release manager. There is also the Direct3D 10/11 state tracker for Mesa's Gallium3D architecture, but that hasn't garnered the interest of Wine.

If this proposal is accepted and ends up materializing, this could -- in the long run -- end up improving Wine's support for modern Direct3D titles and when optimized with LLVM could provide faster performance.

About The Author
Michael Larabel is the principal author of Phoronix.com and founded the web-site in 2004 with a focus on enriching the Linux hardware experience and being the largest web-site devoted to Linux hardware reviews, particularly for products relevant to Linux gamers and enthusiasts but also commonly reviewing servers/workstations and embedded Linux devices. Michael has written more than 10,000 articles covering the state of Linux hardware support, Linux performance, graphics hardware drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated testing software. He can be followed via and or contacted via .
Latest Articles & Reviews
  1. Radeon Linux Benchmarks: Catalyst 15.3 Beta vs. Linux 4.0 + Mesa 10.6-devel
  2. Trying Out The Modern Linux Desktops With 4 Monitors + AMD/NVIDIA Graphics
  3. Turning A Basement Into A Big Linux Server Room
  4. NVIDIA's $1000+ GeForce GTX TITAN X Delivers Maximum Linux Performance
  5. OS X 10.10 vs. Ubuntu 15.04 vs. Fedora 21 Tests: Linux Sweeps The Board
  6. The New Place Where Linux Code Is Constantly Being Benchmarked
Latest Linux News
  1. Debian 8.0 Jessie Gets A Release Date
  2. Firefox 37 Coming Today With Heartbeat, HTTPS Bing
  3. OpenIndiana 2015.03 Updates Its Solaris/Illumos Environment
  4. GNOME 3.16 SDK Runtime Now Available
  5. Initial Intel Braxton Support Might Come To Linux 4.1
  6. Why KDE's KWin Doesn't Integrate Weston/QtCompositor For Wayland Support
  7. Clang Now Supports Targeting The NaCl OS
  8. PC-BSD Updates Its Lumina Desktop (v0.8.3)
  9. Fedora 22 Alpha Now Available For AArch64 & PowerPC64
  10. Systemd Developers Did NOT Fork The Linux Kernel
Most Viewed News This Week
  1. Introducing The Library Operating System For Linux
  2. Improved OpenCL Support For Blender's Cycles Renderer
  3. The Big Features Of The Linux 4.0 Kernel
  4. Open-Source Driver Fans Will Love NVIDIA's New OpenGL Demo
  5. Allwinner Continues Jerking Around The Open-Source Community
  6. GNOME 3.16 Released: It's Their Best Release Yet
  7. Ubuntu 15.04 Final Beta Released
  8. Systemd Change Allows For Stateless Systems With Tmpfs