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 )的更多相关文章

  1. 【转载】Direct3D HLSL介绍(上)

    原文路径:http://www.csharpwin.com/csharpspace/3087.shtml 写过Direct3D程序的朋友们可能还记得,在以往,大家常为如何表现更多真实的材质(如玻璃.金 ...

  2. Angle

    1 What is Angle. The goal of ANGLE is to allow Windows users to seamlessly run WebGL and other OpenG ...

  3. 剖析虚幻渲染体系(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 ...

  4. Native code on Windows Phone 8(转)

    Windows Phone 8 introduces the ability to use native code to implement Windows Phone. In this sectio ...

  5. 区块链学习(四)truffle部署编译智能合约以太坊私有链

    前面我们介绍了以太坊私有链的搭建以及多节点私有链网络,这次我们介绍如何使用truffle框架来部署编译智能合约到我们之前搭建的私有链网络中. 搭建环境及需使用的工具:ubuntu18.04  Truf ...

  6. Manjaro Linux安装singularity-container

    技术背景 容器化技术在各种生产领域已经得到了广泛的应用,这得益于容器的轻量化(相比于虚拟机而言),安全性(隔离弱于虚拟机,但是权限控制得当的情况下也可以认为是安全隔离的)以及系统级虚拟化带来的高可用性 ...

  7. [ZZ] cbuffer和tbuffer

    http://blog.chinaunix.net/uid-20235103-id-2578297.html Shader Model 4支持的新东西,通过打包数据可以获得更好的性能.原文转发:Sha ...

  8. 【ZZ】 DShader之位移贴图(Displacement Mapping)

    http://www.myexception.cn/other/1397638.html DShader之位移贴图(Displacement Mapping) www.MyException.Cn   ...

  9. DirectX 11游戏编程学习笔记之8: 第6章Drawing in Direct3D(在Direct3D中绘制)(习题解答)

            本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com         注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候 ...

随机推荐

  1. 使用bootstrap tooltip控件动态修改提示内容

    初始化控件之后即使修改了元素的title内容也不会更改提示信息,比如下面 $(element).attr('title','XXXXXX') 这样只会增加一个原生的title提示,如果保持原样显示必须 ...

  2. dp 走格子问题

    问题: 一个5x8的格子,想从左下角走到右上角,求最短路径,共有多少种走法. 思路: 因为是求最短路径,所以,只会往右往上走. 我们可以把棋盘的左下角看做二维坐标的原点(0,0),把棋盘的右上角看做二 ...

  3. Python面向对象(一)

    面向对象 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向对象是一种编程 ...

  4. angularjs表单验证checkbox

    angularjs中默认有表单验证的支持,见文末的refer 我想要验证至少要选择一个checkbox,否则就不能提交 但是checkbox貌似没有简单的方法,想来想去给出下面的解决方案 valida ...

  5. nginx配置301重定向

    1. 简介 301重定向可以传递权重,相比其他重定向,只有301是最正式的,不会被搜索引擎判断为作弊 2. 栗子 savokiss.com 301到 savokiss.me 3. nginx默认配置方 ...

  6. resin 安装配置

    resin (下载免费版 4) 前提:已经安装了Java运行环境,resin的安装需要jdk的支持   一.安装 1.cd /usr/local/src wget http://www.caucho. ...

  7. PHP 面向对象

    封装与不封装的区别:   未封装 时 外部随意更改数据   数据 不需要判定 就可以执行    外部直接操作数据 封装:  外部同样可以对数据更改,但需要 调用  类里面的  函数  外部间接操作数据 ...

  8. python习题 (1):login

    #!/uer/bin/env python # _*_ coding: utf-8 _*_ import sys retry_limit = 3 retry_count = 0 account_fil ...

  9. xcode 消除警告

    项目中引用大量的第三方代码时,这些代码很复杂,不要轻易去改动它,如果编译产生很多警告,该如何消除呢? 1. 最直接.最一劳永逸.最安全的方式,直接找到警告的那段代码,改为不警告.这个方式最安全. 可是 ...

  10. Android笔记:异步消息处理

    1. Message Message 是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间交换数据.上一小节中我们使用到了Message 的what 字段,除此之外还可以使用arg1 ...