mode

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2023 License: BSD-1-Clause Imports: 5 Imported by: 0

Documentation

Overview

Port of modeset.c example to Go Source: https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset.c

Index

Constants

View Source
const (
	DisplayInfoLen   = 32
	ConnectorNameLen = 32
	DisplayModeLen   = 32
	PropNameLen      = 32

	Connected         = 1
	Disconnected      = 2
	UnknownConnection = 3
)

Variables

View Source
var (
	// DRM_IOWR(0xA0, struct drm_mode_card_res)
	IOCTLModeResources = ioctl.NewCode(ioctl.Read|ioctl.Write,
		uint16(unsafe.Sizeof(sysResources{})), drm.IOCTLBase, 0xA0)

	// DRM_IOWR(0xA1, struct drm_mode_crtc)
	IOCTLModeGetCrtc = ioctl.NewCode(ioctl.Read|ioctl.Write,
		uint16(unsafe.Sizeof(sysCrtc{})), drm.IOCTLBase, 0xA1)

	// DRM_IOWR(0xA2, struct drm_mode_crtc)
	IOCTLModeSetCrtc = ioctl.NewCode(ioctl.Read|ioctl.Write,
		uint16(unsafe.Sizeof(sysCrtc{})), drm.IOCTLBase, 0xA2)

	// DRM_IOWR(0xA6, struct drm_mode_get_encoder)
	IOCTLModeGetEncoder = ioctl.NewCode(ioctl.Read|ioctl.Write,
		uint16(unsafe.Sizeof(sysGetEncoder{})), drm.IOCTLBase, 0xA6)

	// DRM_IOWR(0xA7, struct drm_mode_get_connector)
	IOCTLModeGetConnector = ioctl.NewCode(ioctl.Read|ioctl.Write,
		uint16(unsafe.Sizeof(sysGetConnector{})), drm.IOCTLBase, 0xA7)

	// DRM_IOWR(0xAE, struct drm_mode_fb_cmd)
	IOCTLModeAddFB = ioctl.NewCode(ioctl.Read|ioctl.Write,
		uint16(unsafe.Sizeof(sysFBCmd{})), drm.IOCTLBase, 0xAE)

	// DRM_IOWR(0xAF, unsigned int)
	IOCTLModeRmFB = ioctl.NewCode(ioctl.Read|ioctl.Write,
		uint16(unsafe.Sizeof(uint32(0))), drm.IOCTLBase, 0xAF)

	// DRM_IOWR(0xB2, struct drm_mode_create_dumb)
	IOCTLModeCreateDumb = ioctl.NewCode(ioctl.Read|ioctl.Write,
		uint16(unsafe.Sizeof(sysCreateDumb{})), drm.IOCTLBase, 0xB2)

	// DRM_IOWR(0xB3, struct drm_mode_map_dumb)
	IOCTLModeMapDumb = ioctl.NewCode(ioctl.Read|ioctl.Write,
		uint16(unsafe.Sizeof(sysMapDumb{})), drm.IOCTLBase, 0xB3)

	// DRM_IOWR(0xB4, struct drm_mode_destroy_dumb)
	IOCTLModeDestroyDumb = ioctl.NewCode(ioctl.Read|ioctl.Write,
		uint16(unsafe.Sizeof(sysDestroyDumb{})), drm.IOCTLBase, 0xB4)
)

Functions

func AddFB

func AddFB(file *os.File, width, height uint16,
	depth, bpp uint8, pitch, boHandle uint32) (uint32, error)

func DestroyDumb

func DestroyDumb(file *os.File, handle uint32) error

func MapDumb

func MapDumb(file *os.File, boHandle uint32) (uint64, error)

func RmFB

func RmFB(file *os.File, bufferid uint32) error

func SetCrtc

func SetCrtc(file *os.File, crtcid, bufferid, x, y uint32, connectors *uint32, count int, mode *Info) error

Types

type Connector

type Connector struct {
	ID            uint32
	EncoderID     uint32
	Type          uint32
	TypeID        uint32
	Connection    uint8
	Width, Height uint32
	Subpixel      uint8

	Modes []Info

	Props      []uint32
	PropValues []uint64

	Encoders []uint32
	// contains filtered or unexported fields
}

func GetConnector

func GetConnector(file *os.File, connid uint32) (*Connector, error)

type Crtc

type Crtc struct {
	ID       uint32
	BufferID uint32 // FB id to connect to 0 = disconnect

	X, Y          uint32 // Position on the framebuffer
	Width, Height uint32
	ModeValid     int
	Mode          Info

	GammaSize int // Number of gamma stops
}

func GetCrtc

func GetCrtc(file *os.File, id uint32) (*Crtc, error)

type Encoder

type Encoder struct {
	ID   uint32
	Type uint32

	CrtcID uint32

	PossibleCrtcs  uint32
	PossibleClones uint32
}

func GetEncoder

func GetEncoder(file *os.File, id uint32) (*Encoder, error)

type FB

type FB struct {
	Height, Width, BPP, Flags uint32
	Handle                    uint32
	Pitch                     uint32
	Size                      uint64
}

func CreateFB

func CreateFB(file *os.File, width, height uint16, bpp uint32) (*FB, error)

type Info

type Info struct {
	Clock                                         uint32
	Hdisplay, HsyncStart, HsyncEnd, Htotal, Hskew uint16
	Vdisplay, VsyncStart, VsyncEnd, Vtotal, Vscan uint16

	Vrefresh uint32

	Flags uint32
	Type  uint32
	Name  [DisplayModeLen]uint8
}

type Modeset

type Modeset struct {
	Width, Height uint16

	Mode Info
	Conn uint32
	Crtc uint32
}

type Resources

type Resources struct {
	Fbs        []uint32
	Crtcs      []uint32
	Connectors []uint32
	Encoders   []uint32
	// contains filtered or unexported fields
}

func GetResources

func GetResources(file *os.File) (*Resources, error)

type SimpleModeset

type SimpleModeset struct {
	Modesets []Modeset
	// contains filtered or unexported fields
}

func NewSimpleModeset

func NewSimpleModeset(file *os.File) (*SimpleModeset, error)

func (*SimpleModeset) SetCrtc

func (mset *SimpleModeset) SetCrtc(dev *Modeset, savedCrtc *Crtc) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL