headless_windows.go raw

   1  // SPDX-License-Identifier: Unlicense OR MIT
   2  
   3  package headless
   4  
   5  import (
   6  	"unsafe"
   7  
   8  	"github.com/p9c/p9/pkg/gel/gio/gpu"
   9  	"github.com/p9c/p9/pkg/gel/gio/internal/d3d11"
  10  )
  11  
  12  type d3d11Context struct {
  13  	dev *d3d11.Device
  14  }
  15  
  16  func newContext() (context, error) {
  17  	dev, ctx, _, err := d3d11.CreateDevice(
  18  		d3d11.DRIVER_TYPE_HARDWARE,
  19  		0,
  20  	)
  21  	if err != nil {
  22  		return nil, err
  23  	}
  24  	// Don't need it.
  25  	d3d11.IUnknownRelease(unsafe.Pointer(ctx), ctx.Vtbl.Release)
  26  	return &d3d11Context{dev: dev}, nil
  27  }
  28  
  29  func (c *d3d11Context) API() gpu.API {
  30  	return gpu.Direct3D11{Device: unsafe.Pointer(c.dev)}
  31  }
  32  
  33  func (c *d3d11Context) MakeCurrent() error {
  34  	return nil
  35  }
  36  
  37  func (c *d3d11Context) ReleaseCurrent() {
  38  }
  39  
  40  func (c *d3d11Context) Release() {
  41  	d3d11.IUnknownRelease(unsafe.Pointer(c.dev), c.dev.Vtbl.Release)
  42  	c.dev = nil
  43  }
  44