1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package h3d.impl;
- import h3d.impl.Driver;
- #if (hlsdl && heaps_vulkan)
- class VulkanDriver extends Driver {
- var ctx : sdl.Vulkan.VKContext;
- var cur : hxsl.RuntimeShader;
- public function new() {
- ctx = @:privateAccess hxd.Window.getInstance().window.vkctx;
- if( !ctx.beginFrame() ) throw "assert";
- }
- override function hasFeature( f : Feature ) {
- return true;
- }
- override function isSupportedFormat( fmt : h3d.mat.Data.TextureFormat ) {
- return true;
- }
- override function logImpl(str:String) {
- #if sys
- Sys.println(str);
- #else
- trace(str);
- #end
- }
- override function isDisposed() {
- return false;
- }
- override function getDriverName( details : Bool ) {
- return "Vulkan";
- }
- override function present() {
- ctx.endFrame();
- if( !ctx.beginFrame() ) {
- var win = hxd.Window.getInstance();
- ctx.initSwapchain(win.width, win.height);
- if( !ctx.beginFrame() )
- throw "assert";
- }
- }
- override function init( onCreate : Bool -> Void, forceSoftware = false ) {
- onCreate(false);
- }
- override function selectShader( shader : hxsl.RuntimeShader ) {
- if( cur == shader ) return false;
- cur = shader;
- return true;
- }
- override function getShaderInputNames() : InputNames {
- var names = [];
- for( v in cur.vertex.data.vars )
- if( v.kind == Input )
- names.push(v.name);
- return InputNames.get(names);
- }
- override function begin(frame:Int) {
- sdl.Vulkan.clearColorImage(0, Math.random(), 0, 1);
- }
- override function allocTexture( t : h3d.mat.Texture ) : Texture {
- return cast {};
- }
- override function allocIndexes( count : Int, is32 : Bool ) : IndexBuffer {
- return cast {};
- }
- override function allocVertexes( m : ManagedBuffer ) : VertexBuffer {
- return cast {};
- }
- }
- #end
|