code: func (d Device) MakeRenderPipelineState(rpd RenderPipelineDescriptor) (RenderPipelineState, error) {
  	blendingEnabled := C.BOOL(0)
  	if rpd.ColorAttachments[0].BlendingEnabled {
  		blendingEnabled = C.BOOL(1)
  	}
  	c := &rpd.ColorAttachments[0]
  	descriptor := C.struct_RenderPipelineDescriptor{
  		VertexFunction:                              rpd.VertexFunction.function,
  		FragmentFunction:                            rpd.FragmentFunction.function,
  		ColorAttachment0PixelFormat:                 C.uint16_t(c.PixelFormat),
  		ColorAttachment0BlendingEnabled:             C.BOOL(blendingEnabled),
  		ColorAttachment0DestinationAlphaBlendFactor: C.uint8_t(c.DestinationAlphaBlendFactor),
  		ColorAttachment0DestinationRGBBlendFactor:   C.uint8_t(c.DestinationRGBBlendFactor),
  		ColorAttachment0SourceAlphaBlendFactor:      C.uint8_t(c.SourceAlphaBlendFactor),
  		ColorAttachment0SourceRGBBlendFactor:        C.uint8_t(c.SourceRGBBlendFactor),
  	}
  	rps := C.Device_MakeRenderPipelineState(d.device, descriptor)
  	if rps.RenderPipelineState == nil {
  		return RenderPipelineState{}, errors.New(C.GoString(rps.Error))
  	}
  
  	return RenderPipelineState{rps.RenderPipelineState}, nil
  }
docs: // MakeRenderPipelineState creates a render pipeline state object.
  //
  // Reference: https://developer.apple.com/documentation/metal/mtldevice/1433369-makerenderpipelinestate.