MCPcopy Create free account
hub / github.com/gioui/gio / createColorPrograms

Function createColorPrograms

gpu/gpu.go:569–670  ·  view source on GitHub ↗
(b driver.Device, vsSrc shader.Sources, fsSrc [3]shader.Sources, uniforms [3]any)

Source from the content-addressed store, hash-verified

567}
568
569func createColorPrograms(b driver.Device, vsSrc shader.Sources, fsSrc [3]shader.Sources, uniforms [3]any) (pipelines [2][3]*pipeline, err error) {
570 defer func() {
571 if err != nil {
572 for _, p := range pipelines {
573 for _, p := range p {
574 if p != nil {
575 p.Release()
576 }
577 }
578 }
579 }
580 }()
581 blend := driver.BlendDesc{
582 Enable: true,
583 SrcFactor: driver.BlendFactorOne,
584 DstFactor: driver.BlendFactorOneMinusSrcAlpha,
585 }
586 layout := driver.VertexLayout{
587 Inputs: []driver.InputDesc{
588 {Type: shader.DataTypeFloat, Size: 2, Offset: 0},
589 {Type: shader.DataTypeFloat, Size: 2, Offset: 4 * 2},
590 },
591 Stride: 4 * 4,
592 }
593 vsh, err := b.NewVertexShader(vsSrc)
594 if err != nil {
595 return pipelines, err
596 }
597 defer vsh.Release()
598 for i, format := range []driver.TextureFormat{driver.TextureFormatOutput, driver.TextureFormatSRGBA} {
599 {
600 fsh, err := b.NewFragmentShader(fsSrc[materialTexture])
601 if err != nil {
602 return pipelines, err
603 }
604 defer fsh.Release()
605 pipe, err := b.NewPipeline(driver.PipelineDesc{
606 VertexShader: vsh,
607 FragmentShader: fsh,
608 BlendDesc: blend,
609 VertexLayout: layout,
610 PixelFormat: format,
611 Topology: driver.TopologyTriangleStrip,
612 })
613 if err != nil {
614 return pipelines, err
615 }
616 var vertBuffer *uniformBuffer
617 if u := uniforms[materialTexture]; u != nil {
618 vertBuffer = newUniformBuffer(b, u)
619 }
620 pipelines[i][materialTexture] = &pipeline{pipe, vertBuffer}
621 }
622 {
623 var vertBuffer *uniformBuffer
624 fsh, err := b.NewFragmentShader(fsSrc[materialColor])
625 if err != nil {
626 return pipelines, err

Callers 2

newBlitterFunction · 0.85
newCovererFunction · 0.85

Calls 7

ReleaseMethod · 0.95
ReleaseMethod · 0.95
newUniformBufferFunction · 0.85
ReleaseMethod · 0.65
NewVertexShaderMethod · 0.65
NewFragmentShaderMethod · 0.65
NewPipelineMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…