[ZZ] A Proposal For Compiling Direct3D HLSL With LLVM (Written by Michael Larabel )
http://www.phoronix.com/scan.php?page=news_item&px=OTI2NA
Note: Something very instersting to wine translating
这个点子是对于GPU virtualization有启发。。。不过有很多技术和专利上的问题。
MSFT HSLS -> LLVM IR -> Windows graphics driver or Linux graphic drivers.
Apple GLSL -> LLVM IR -> ??
A Proposal For Compiling Direct3D HLSL With LLVM
Written by Michael Larabel in Compiler on 28 March 2011 at 10:54 PM EDT. 6 Comments
COMPILER --
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.
[ZZ] A Proposal For Compiling Direct3D HLSL With LLVM (Written by Michael Larabel )的更多相关文章
- 【转载】Direct3D HLSL介绍(上)
原文路径:http://www.csharpwin.com/csharpspace/3087.shtml 写过Direct3D程序的朋友们可能还记得,在以往,大家常为如何表现更多真实的材质(如玻璃.金 ...
- Angle
1 What is Angle. The goal of ANGLE is to allow Windows users to seamlessly run WebGL and other OpenG ...
- 剖析虚幻渲染体系(08)- Shader体系
目录 8.1 本篇概述 8.2 Shader基础 8.2.1 FShader 8.2.2 Shader Parameter 8.2.3 Uniform Buffer 8.2.4 Vertex Fact ...
- Native code on Windows Phone 8(转)
Windows Phone 8 introduces the ability to use native code to implement Windows Phone. In this sectio ...
- 区块链学习(四)truffle部署编译智能合约以太坊私有链
前面我们介绍了以太坊私有链的搭建以及多节点私有链网络,这次我们介绍如何使用truffle框架来部署编译智能合约到我们之前搭建的私有链网络中. 搭建环境及需使用的工具:ubuntu18.04 Truf ...
- Manjaro Linux安装singularity-container
技术背景 容器化技术在各种生产领域已经得到了广泛的应用,这得益于容器的轻量化(相比于虚拟机而言),安全性(隔离弱于虚拟机,但是权限控制得当的情况下也可以认为是安全隔离的)以及系统级虚拟化带来的高可用性 ...
- [ZZ] cbuffer和tbuffer
http://blog.chinaunix.net/uid-20235103-id-2578297.html Shader Model 4支持的新东西,通过打包数据可以获得更好的性能.原文转发:Sha ...
- 【ZZ】 DShader之位移贴图(Displacement Mapping)
http://www.myexception.cn/other/1397638.html DShader之位移贴图(Displacement Mapping) www.MyException.Cn ...
- DirectX 11游戏编程学习笔记之8: 第6章Drawing in Direct3D(在Direct3D中绘制)(习题解答)
本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com 注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候 ...
随机推荐
- C#高级编程笔记 Day 4, 2016年9月 12日(接口)
1.定义和实现接口:接口名称通常上以字母 I 开头 例子:定义IBankAccount接口 namespace Test.YinXi{ public interface IBankAccount{ v ...
- rabbitmq 简单梳理
概念: 生产者(Producer,简写P),负责发布消息. “交换机”(Exchange, 简写X), 负责中转消息. 路由(Route, 简写R), 即 X->Q的路线名. 消息队列 (Que ...
- 如何更高效地定制你的bootstrap
bootstrap已经作为前端开发必不可少的框架之一,应用bootstrap使得我们对布局.样式的设定变得非常简单.但bootstrap提供的默认样式往往不能满足我们的需求,从而定制化bootstra ...
- 【krpano】高德地图导航插件(源码+介绍+预览)
简介 krpano可以利用js调用第三方网页版地图,因此可以实现导航效果,用来帮助用户导航到我们全景所在的位置. 效果截图如下,在手机端点击左侧按钮,便会对用户进行定位,跳转至高德地图进行导航 ...
- jquery中使用serialize() 序列化表单时 中文乱码问题
序列化中文时之所以乱码是因为.serialize()调用了encodeURLComponent方法将数据编码了 解决方法就是进行解码 1 原因:.serialize()自动调用了encodeURICo ...
- jQuery treetable【表格多重折叠树功能及拖放表格子元素重新排列】
今天有个表格需求做到多重折叠子元素功能,仔细想了下实现原理, 1.在html中,把父子节点的关系写在自定义属性,但对于节点是否有孩子(hasChild),是否是最后一个节点(isLastOne),是否 ...
- 理解autorelease
如果你能够真正的理解autorelease,那么你才是理解了Objective c的内存管理.Autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease,系统只是 ...
- jasig CAS 实现单点登录 - java、php客户端登录实现
jasig CAS项目本身就是一个完整的CAS单点登录服务 1.服务端需要把 认证处理类.用户属性返回值处理类 调整成我们自己处理类即可实现单点登录 2.java客户端需要引入cas-client- ...
- 笔记本双系统XP与Ubuntu,重装XP后如何恢复grup引导,另附操作系统启动过程
背景:笔记本双系统(XP与Ubuntu),其中XP系统因问题重装了一下,重装后不能识别Ubuntu系统(该系统装在另一个磁盘中),直接进入了XP系统. 解决办法:利用U盘(Ubuntu系统)启动机器, ...
- NetApp 监控
http://support.ipmonitor.com/mibs/network-appliance-mib/tree.aspx http://www.360doc.com/content/10/1 ...