func fixFloat()

in gl/work_windows.go [109:410]


func fixFloat(x0, x1, x2, x3 uintptr)

func (ctx *context) doWork(c call) (ret uintptr) {
	if runtime.GOARCH == "amd64" {
		fixFloat(c.args.a0, c.args.a1, c.args.a2, c.args.a3)
	}

	switch c.args.fn {
	case glfnActiveTexture:
		syscall.Syscall(glActiveTexture.Addr(), 1, c.args.a0, 0, 0)
	case glfnAttachShader:
		syscall.Syscall(glAttachShader.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnBindAttribLocation:
		syscall.Syscall(glBindAttribLocation.Addr(), 3, c.args.a0, c.args.a1, c.args.a2)
	case glfnBindBuffer:
		syscall.Syscall(glBindBuffer.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnBindFramebuffer:
		syscall.Syscall(glBindFramebuffer.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnBindRenderbuffer:
		syscall.Syscall(glBindRenderbuffer.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnBindTexture:
		syscall.Syscall(glBindTexture.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnBindVertexArray:
		syscall.Syscall(glBindVertexArray.Addr(), 1, c.args.a0, 0, 0)
	case glfnBlendColor:
		syscall.Syscall6(glBlendColor.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, 0, 0)
	case glfnBlendEquation:
		syscall.Syscall(glBlendEquation.Addr(), 1, c.args.a0, 0, 0)
	case glfnBlendEquationSeparate:
		syscall.Syscall(glBlendEquationSeparate.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnBlendFunc:
		syscall.Syscall(glBlendFunc.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnBlendFuncSeparate:
		syscall.Syscall6(glBlendFuncSeparate.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, 0, 0)
	case glfnBufferData:
		syscall.Syscall6(glBufferData.Addr(), 4, c.args.a0, c.args.a1, uintptr(c.parg), c.args.a2, 0, 0)
	case glfnBufferSubData:
		syscall.Syscall6(glBufferSubData.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, uintptr(c.parg), 0, 0)
	case glfnCheckFramebufferStatus:
		ret, _, _ = syscall.Syscall(glCheckFramebufferStatus.Addr(), 1, c.args.a0, 0, 0)
	case glfnClear:
		syscall.Syscall(glClear.Addr(), 1, c.args.a0, 0, 0)
	case glfnClearColor:
		syscall.Syscall6(glClearColor.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, 0, 0)
	case glfnClearDepthf:
		syscall.Syscall6(glClearDepthf.Addr(), 1, c.args.a0, 0, 0, 0, 0, 0)
	case glfnClearStencil:
		syscall.Syscall(glClearStencil.Addr(), 1, c.args.a0, 0, 0)
	case glfnColorMask:
		syscall.Syscall6(glColorMask.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, 0, 0)
	case glfnCompileShader:
		syscall.Syscall(glCompileShader.Addr(), 1, c.args.a0, 0, 0)
	case glfnCompressedTexImage2D:
		syscall.Syscall9(glCompressedTexImage2D.Addr(), 8, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5, c.args.a6, uintptr(c.parg), 0)
	case glfnCompressedTexSubImage2D:
		syscall.Syscall9(glCompressedTexSubImage2D.Addr(), 9, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5, c.args.a6, c.args.a7, uintptr(c.parg))
	case glfnCopyTexImage2D:
		syscall.Syscall9(glCopyTexImage2D.Addr(), 8, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5, c.args.a6, c.args.a7, 0)
	case glfnCopyTexSubImage2D:
		syscall.Syscall9(glCopyTexSubImage2D.Addr(), 8, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5, c.args.a6, c.args.a7, 0)
	case glfnCreateProgram:
		ret, _, _ = syscall.Syscall(glCreateProgram.Addr(), 0, 0, 0, 0)
	case glfnCreateShader:
		ret, _, _ = syscall.Syscall(glCreateShader.Addr(), 1, c.args.a0, 0, 0)
	case glfnCullFace:
		syscall.Syscall(glCullFace.Addr(), 1, c.args.a0, 0, 0)
	case glfnDeleteBuffer:
		syscall.Syscall(glDeleteBuffers.Addr(), 2, 1, uintptr(unsafe.Pointer(&c.args.a0)), 0)
	case glfnDeleteFramebuffer:
		syscall.Syscall(glDeleteFramebuffers.Addr(), 2, 1, uintptr(unsafe.Pointer(&c.args.a0)), 0)
	case glfnDeleteProgram:
		syscall.Syscall(glDeleteProgram.Addr(), 1, c.args.a0, 0, 0)
	case glfnDeleteRenderbuffer:
		syscall.Syscall(glDeleteRenderbuffers.Addr(), 2, 1, uintptr(unsafe.Pointer(&c.args.a0)), 0)
	case glfnDeleteShader:
		syscall.Syscall(glDeleteShader.Addr(), 1, c.args.a0, 0, 0)
	case glfnDeleteVertexArray:
		syscall.Syscall(glDeleteVertexArrays.Addr(), 2, 1, uintptr(unsafe.Pointer(&c.args.a0)), 0)
	case glfnDeleteTexture:
		syscall.Syscall(glDeleteTextures.Addr(), 2, 1, uintptr(unsafe.Pointer(&c.args.a0)), 0)
	case glfnDepthFunc:
		syscall.Syscall(glDepthFunc.Addr(), 1, c.args.a0, 0, 0)
	case glfnDepthRangef:
		syscall.Syscall6(glDepthRangef.Addr(), 2, c.args.a0, c.args.a1, 0, 0, 0, 0)
	case glfnDepthMask:
		syscall.Syscall(glDepthMask.Addr(), 1, c.args.a0, 0, 0)
	case glfnDetachShader:
		syscall.Syscall(glDetachShader.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnDisable:
		syscall.Syscall(glDisable.Addr(), 1, c.args.a0, 0, 0)
	case glfnDisableVertexAttribArray:
		syscall.Syscall(glDisableVertexAttribArray.Addr(), 1, c.args.a0, 0, 0)
	case glfnDrawArrays:
		syscall.Syscall(glDrawArrays.Addr(), 3, c.args.a0, c.args.a1, c.args.a2)
	case glfnDrawElements:
		syscall.Syscall6(glDrawElements.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, 0, 0)
	case glfnEnable:
		syscall.Syscall(glEnable.Addr(), 1, c.args.a0, 0, 0)
	case glfnEnableVertexAttribArray:
		syscall.Syscall(glEnableVertexAttribArray.Addr(), 1, c.args.a0, 0, 0)
	case glfnFinish:
		syscall.Syscall(glFinish.Addr(), 0, 0, 0, 0)
	case glfnFlush:
		syscall.Syscall(glFlush.Addr(), 0, 0, 0, 0)
	case glfnFramebufferRenderbuffer:
		syscall.Syscall6(glFramebufferRenderbuffer.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, 0, 0)
	case glfnFramebufferTexture2D:
		syscall.Syscall6(glFramebufferTexture2D.Addr(), 5, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, 0)
	case glfnFrontFace:
		syscall.Syscall(glFrontFace.Addr(), 1, c.args.a0, 0, 0)
	case glfnGenBuffer:
		syscall.Syscall(glGenBuffers.Addr(), 2, 1, uintptr(unsafe.Pointer(&ret)), 0)
	case glfnGenFramebuffer:
		syscall.Syscall(glGenFramebuffers.Addr(), 2, 1, uintptr(unsafe.Pointer(&ret)), 0)
	case glfnGenRenderbuffer:
		syscall.Syscall(glGenRenderbuffers.Addr(), 2, 1, uintptr(unsafe.Pointer(&ret)), 0)
	case glfnGenVertexArray:
		syscall.Syscall(glGenVertexArrays.Addr(), 2, 1, uintptr(unsafe.Pointer(&ret)), 0)
	case glfnGenTexture:
		syscall.Syscall(glGenTextures.Addr(), 2, 1, uintptr(unsafe.Pointer(&ret)), 0)
	case glfnGenerateMipmap:
		syscall.Syscall(glGenerateMipmap.Addr(), 1, c.args.a0, 0, 0)
	case glfnGetActiveAttrib:
		syscall.Syscall9(glGetActiveAttrib.Addr(), 7, c.args.a0, c.args.a1, c.args.a2, 0, uintptr(unsafe.Pointer(&ret)), c.args.a3, uintptr(c.parg), 0, 0)
	case glfnGetActiveUniform:
		syscall.Syscall9(glGetActiveUniform.Addr(), 7, c.args.a0, c.args.a1, c.args.a2, 0, uintptr(unsafe.Pointer(&ret)), c.args.a3, uintptr(c.parg), 0, 0)
	case glfnGetAttachedShaders:
		syscall.Syscall6(glGetAttachedShaders.Addr(), 4, c.args.a0, c.args.a1, uintptr(unsafe.Pointer(&ret)), uintptr(c.parg), 0, 0)
	case glfnGetAttribLocation:
		ret, _, _ = syscall.Syscall(glGetAttribLocation.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnGetBooleanv:
		syscall.Syscall(glGetBooleanv.Addr(), 2, c.args.a0, uintptr(c.parg), 0)
	case glfnGetBufferParameteri:
		syscall.Syscall(glGetBufferParameteri.Addr(), 3, c.args.a0, c.args.a1, uintptr(unsafe.Pointer(&ret)))
	case glfnGetError:
		ret, _, _ = syscall.Syscall(glGetError.Addr(), 0, 0, 0, 0)
	case glfnGetFloatv:
		syscall.Syscall(glGetFloatv.Addr(), 2, c.args.a0, uintptr(c.parg), 0)
	case glfnGetFramebufferAttachmentParameteriv:
		syscall.Syscall6(glGetFramebufferAttachmentParameteriv.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, uintptr(unsafe.Pointer(&ret)), 0, 0)
	case glfnGetIntegerv:
		syscall.Syscall(glGetIntegerv.Addr(), 2, c.args.a0, uintptr(c.parg), 0)
	case glfnGetProgramInfoLog:
		syscall.Syscall6(glGetProgramInfoLog.Addr(), 4, c.args.a0, c.args.a1, 0, uintptr(c.parg), 0, 0)
	case glfnGetProgramiv:
		syscall.Syscall(glGetProgramiv.Addr(), 3, c.args.a0, c.args.a1, uintptr(unsafe.Pointer(&ret)))
	case glfnGetRenderbufferParameteriv:
		syscall.Syscall(glGetRenderbufferParameteriv.Addr(), 3, c.args.a0, c.args.a1, uintptr(unsafe.Pointer(&ret)))
	case glfnGetShaderInfoLog:
		syscall.Syscall6(glGetShaderInfoLog.Addr(), 4, c.args.a0, c.args.a1, 0, uintptr(c.parg), 0, 0)
	case glfnGetShaderPrecisionFormat:
		// c.parg is a [3]int32. The first [2]int32 of the array is one
		// parameter, the final *int32 is another parameter.
		syscall.Syscall6(glGetShaderPrecisionFormat.Addr(), 4, c.args.a0, c.args.a1, uintptr(c.parg), uintptr(c.parg)+2*unsafe.Sizeof(uintptr(0)), 0, 0)
	case glfnGetShaderSource:
		syscall.Syscall6(glGetShaderSource.Addr(), 4, c.args.a0, c.args.a1, 0, uintptr(c.parg), 0, 0)
	case glfnGetShaderiv:
		syscall.Syscall(glGetShaderiv.Addr(), 3, c.args.a0, c.args.a1, uintptr(unsafe.Pointer(&ret)))
	case glfnGetString:
		ret, _, _ = syscall.Syscall(glGetString.Addr(), 1, c.args.a0, 0, 0)
	case glfnGetTexParameterfv:
		syscall.Syscall(glGetTexParameterfv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnGetTexParameteriv:
		syscall.Syscall(glGetTexParameteriv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnGetUniformLocation:
		ret, _, _ = syscall.Syscall(glGetUniformLocation.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnGetUniformfv:
		syscall.Syscall(glGetUniformfv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnGetUniformiv:
		syscall.Syscall(glGetUniformiv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnGetVertexAttribfv:
		syscall.Syscall(glGetVertexAttribfv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnGetVertexAttribiv:
		syscall.Syscall(glGetVertexAttribiv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnHint:
		syscall.Syscall(glHint.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnIsBuffer:
		syscall.Syscall(glIsBuffer.Addr(), 1, c.args.a0, 0, 0)
	case glfnIsEnabled:
		syscall.Syscall(glIsEnabled.Addr(), 1, c.args.a0, 0, 0)
	case glfnIsFramebuffer:
		syscall.Syscall(glIsFramebuffer.Addr(), 1, c.args.a0, 0, 0)
	case glfnIsProgram:
		ret, _, _ = syscall.Syscall(glIsProgram.Addr(), 1, c.args.a0, 0, 0)
	case glfnIsRenderbuffer:
		syscall.Syscall(glIsRenderbuffer.Addr(), 1, c.args.a0, 0, 0)
	case glfnIsShader:
		syscall.Syscall(glIsShader.Addr(), 1, c.args.a0, 0, 0)
	case glfnIsTexture:
		syscall.Syscall(glIsTexture.Addr(), 1, c.args.a0, 0, 0)
	case glfnLineWidth:
		syscall.Syscall(glLineWidth.Addr(), 1, c.args.a0, 0, 0)
	case glfnLinkProgram:
		syscall.Syscall(glLinkProgram.Addr(), 1, c.args.a0, 0, 0)
	case glfnPixelStorei:
		syscall.Syscall(glPixelStorei.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnPolygonOffset:
		syscall.Syscall6(glPolygonOffset.Addr(), 2, c.args.a0, c.args.a1, 0, 0, 0, 0)
	case glfnReadPixels:
		syscall.Syscall9(glReadPixels.Addr(), 7, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5, uintptr(c.parg), 0, 0)
	case glfnReleaseShaderCompiler:
		syscall.Syscall(glReleaseShaderCompiler.Addr(), 0, 0, 0, 0)
	case glfnRenderbufferStorage:
		syscall.Syscall6(glRenderbufferStorage.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, 0, 0)
	case glfnSampleCoverage:
		syscall.Syscall6(glSampleCoverage.Addr(), 1, c.args.a0, 0, 0, 0, 0, 0)
	case glfnScissor:
		syscall.Syscall6(glScissor.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, 0, 0)
	case glfnShaderSource:
		syscall.Syscall6(glShaderSource.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, 0, 0, 0)
	case glfnStencilFunc:
		syscall.Syscall(glStencilFunc.Addr(), 3, c.args.a0, c.args.a1, c.args.a2)
	case glfnStencilFuncSeparate:
		syscall.Syscall6(glStencilFuncSeparate.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, 0, 0)
	case glfnStencilMask:
		syscall.Syscall(glStencilMask.Addr(), 1, c.args.a0, 0, 0)
	case glfnStencilMaskSeparate:
		syscall.Syscall(glStencilMaskSeparate.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnStencilOp:
		syscall.Syscall(glStencilOp.Addr(), 3, c.args.a0, c.args.a1, c.args.a2)
	case glfnStencilOpSeparate:
		syscall.Syscall6(glStencilOpSeparate.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, 0, 0)
	case glfnTexImage2D:
		syscall.Syscall9(glTexImage2D.Addr(), 9, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, 0, c.args.a5, c.args.a6, uintptr(c.parg))
	case glfnTexParameterf:
		syscall.Syscall6(glTexParameterf.Addr(), 3, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5)
	case glfnTexParameterfv:
		syscall.Syscall(glTexParameterfv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnTexParameteri:
		syscall.Syscall(glTexParameteri.Addr(), 3, c.args.a0, c.args.a1, c.args.a2)
	case glfnTexParameteriv:
		syscall.Syscall(glTexParameteriv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnTexSubImage2D:
		syscall.Syscall9(glTexSubImage2D.Addr(), 9, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5, c.args.a6, c.args.a7, uintptr(c.parg))
	case glfnUniform1f:
		syscall.Syscall6(glUniform1f.Addr(), 2, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5)
	case glfnUniform1fv:
		syscall.Syscall(glUniform1fv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnUniform1i:
		syscall.Syscall(glUniform1i.Addr(), 2, c.args.a0, c.args.a1, 0)
	case glfnUniform1iv:
		syscall.Syscall(glUniform1iv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnUniform2f:
		syscall.Syscall6(glUniform2f.Addr(), 3, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5)
	case glfnUniform2fv:
		syscall.Syscall(glUniform2fv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnUniform2i:
		syscall.Syscall(glUniform2i.Addr(), 3, c.args.a0, c.args.a1, c.args.a2)
	case glfnUniform2iv:
		syscall.Syscall(glUniform2iv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnUniform3f:
		syscall.Syscall6(glUniform3f.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5)
	case glfnUniform3fv:
		syscall.Syscall(glUniform3fv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnUniform3i:
		syscall.Syscall6(glUniform3i.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, 0, 0)
	case glfnUniform3iv:
		syscall.Syscall(glUniform3iv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnUniform4f:
		syscall.Syscall6(glUniform4f.Addr(), 5, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5)
	case glfnUniform4fv:
		syscall.Syscall(glUniform4fv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnUniform4i:
		syscall.Syscall6(glUniform4i.Addr(), 5, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, 0)
	case glfnUniform4iv:
		syscall.Syscall(glUniform4iv.Addr(), 3, c.args.a0, c.args.a1, uintptr(c.parg))
	case glfnUniformMatrix2fv:
		syscall.Syscall6(glUniformMatrix2fv.Addr(), 4, c.args.a0, c.args.a1, 0, uintptr(c.parg), 0, 0)
	case glfnUniformMatrix3fv:
		syscall.Syscall6(glUniformMatrix3fv.Addr(), 4, c.args.a0, c.args.a1, 0, uintptr(c.parg), 0, 0)
	case glfnUniformMatrix4fv:
		syscall.Syscall6(glUniformMatrix4fv.Addr(), 4, c.args.a0, c.args.a1, 0, uintptr(c.parg), 0, 0)
	case glfnUseProgram:
		syscall.Syscall(glUseProgram.Addr(), 1, c.args.a0, 0, 0)
	case glfnValidateProgram:
		syscall.Syscall(glValidateProgram.Addr(), 1, c.args.a0, 0, 0)
	case glfnVertexAttrib1f:
		syscall.Syscall6(glVertexAttrib1f.Addr(), 2, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5)
	case glfnVertexAttrib1fv:
		syscall.Syscall(glVertexAttrib1fv.Addr(), 2, c.args.a0, uintptr(c.parg), 0)
	case glfnVertexAttrib2f:
		syscall.Syscall6(glVertexAttrib2f.Addr(), 3, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5)
	case glfnVertexAttrib2fv:
		syscall.Syscall(glVertexAttrib2fv.Addr(), 2, c.args.a0, uintptr(c.parg), 0)
	case glfnVertexAttrib3f:
		syscall.Syscall6(glVertexAttrib3f.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5)
	case glfnVertexAttrib3fv:
		syscall.Syscall(glVertexAttrib3fv.Addr(), 2, c.args.a0, uintptr(c.parg), 0)
	case glfnVertexAttrib4f:
		syscall.Syscall6(glVertexAttrib4f.Addr(), 5, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5)
	case glfnVertexAttrib4fv:
		syscall.Syscall(glVertexAttrib4fv.Addr(), 2, c.args.a0, uintptr(c.parg), 0)
	case glfnVertexAttribPointer:
		syscall.Syscall6(glVertexAttribPointer.Addr(), 6, c.args.a0, c.args.a1, c.args.a2, c.args.a3, c.args.a4, c.args.a5)
	case glfnViewport:
		syscall.Syscall6(glViewport.Addr(), 4, c.args.a0, c.args.a1, c.args.a2, c.args.a3, 0, 0)
	default:
		panic("unknown GL function")
	}

	return ret
}