////////////////////////////////////////////////////////////////////////////////
// Do not modify!
// Generated by codergen
////////////////////////////////////////////////////////////////////////////////

package service

import (
	"android.googlesource.com/platform/tools/gpu/binary"
	"android.googlesource.com/platform/tools/gpu/service/path"
)

// Call Follow
type callFollow struct {
	binary.Generate
	p path.Path
}

// Result Follow
type resultFollow struct {
	binary.Generate
	value path.Path
}

// Call Get
type callGet struct {
	binary.Generate
	p path.Path
}

// Result Get
type resultGet struct {
	binary.Generate
	value interface{}
}

// Call GetCaptures
type callGetCaptures struct {
	binary.Generate
}

// Result GetCaptures
type resultGetCaptures struct {
	binary.Generate
	value []*path.Capture
}

// Call GetDevices
type callGetDevices struct {
	binary.Generate
}

// Result GetDevices
type resultGetDevices struct {
	binary.Generate
	value []*path.Device
}

// Call GetFramebufferColor
type callGetFramebufferColor struct {
	binary.Generate
	device   *path.Device
	after    *path.Atom
	settings RenderSettings
}

// Result GetFramebufferColor
type resultGetFramebufferColor struct {
	binary.Generate
	value *path.ImageInfo
}

// Call GetFramebufferDepth
type callGetFramebufferDepth struct {
	binary.Generate
	device *path.Device
	after  *path.Atom
}

// Result GetFramebufferDepth
type resultGetFramebufferDepth struct {
	binary.Generate
	value *path.ImageInfo
}

// Call GetSchema
type callGetSchema struct {
	binary.Generate
}

// Result GetSchema
type resultGetSchema struct {
	binary.Generate
	value Schema
}

// Call GetTimingInfo
type callGetTimingInfo struct {
	binary.Generate
	device  *path.Device
	capture *path.Capture
	flags   TimingFlags
}

// Result GetTimingInfo
type resultGetTimingInfo struct {
	binary.Generate
	value *path.TimingInfo
}

// Call Import
type callImport struct {
	binary.Generate
	name string
	Data []uint8
}

// Result Import
type resultImport struct {
	binary.Generate
	value *path.Capture
}

// Call PrerenderFramebuffers
type callPrerenderFramebuffers struct {
	binary.Generate
	device  *path.Device
	capture *path.Capture
	api     ApiID
	width   uint32
	height  uint32
	atomIDs []uint64
}

// Result PrerenderFramebuffers
type resultPrerenderFramebuffers struct {
	binary.Generate
}

// Call Set
type callSet struct {
	binary.Generate
	p path.Path
	v interface{}
}

// Result Set
type resultSet struct {
	binary.Generate
	value path.Path
}
