---
title: Render Control接口
description: "**表1 Render Control接口**"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcps/boostcph/instrucstreamengine/kunpengcpsinstruction_17_0028.html
sourcePath: /source/zh/kunpengcps/boostcph/instrucstreamengine/kunpengcpsinstruction_17_0028.html
indexId: c34d50ce0e51c1576763ca44e7d7f8a5971f03a8bf0333e92b63b3aa5c19b97285
---
# Render Control接口


**表1 Render Control接口**

| 指令流对外Render Control接口原型 | Goldfish OpenGL调用此接口的Egl函数原型 |
| --- | --- |
| uint32\_t CreateVmiRenderControlEncoder(uint32\_t stream); | goldfish与指令流引擎建立连接时，调用此函数用于绑定两者的rc接口。 |
| void DeleteVmiRenderControlEncoder(uint32\_t handle); | goldfish与指令流引擎断开连接时，调用此函数用于将两者的rc接口解绑。 |
| GLint GetRendererVersion(uint32\_t handle); | EGLBoolean eglInitialize(EGLDisplay dpy, EGLint \*major, EGLint \*minor) |
| EGLint GetEGLVersion(uint32\_t handle, EGLint \*major, EGLint \*minor); | EGLBoolean eglInitialize(EGLDisplay dpy, EGLint \*major, EGLint \*minor) |
| EGLint QueryEGLString(uint32\_t handle, EGLenum name, void \*buffer, EGLint bufferSize); | const char\* eglQueryString(EGLDisplay dpy, EGLint name) |
| EGLint GetGLString(uint32\_t handle, EGLenum name, void \*buffer, EGLint bufferSize); | EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx) |
| EGLint GetNumConfigs(uint32\_t handle, uint32\_t \*numAttribs); | EGLBoolean eglInitialize(EGLDisplay dpy, EGLint \*major, EGLint \*minor) |
| EGLint GetConfigs(uint32\_t handle, uint32\_t bufSize, GLuint \*buffer); | EGLBoolean eglInitialize(EGLDisplay dpy, EGLint \*major, EGLint \*minor) |
| EGLint ChooseConfig(uint32\_t handle, EGLint \*attribs, uint32\_t attribSize, uint32\_t \*configs, uint32\_t configSize); | EGLBoolean eglChooseConfig(EGLDisplay dpy, const EGLint \*attrib\_list, EGLConfig \*configs, EGLint config\_size, EGLint \*num\_config) |
| EGLint GetFBParam(uint32\_t handle, EGLint param); | static int gralloc\_device\_open(const hw\_module\_t\* module, const char\* name, hw\_device\_t\*\* device) |
| uint32\_t CreateContext(uint32\_t handle, uint32\_t config, uint32\_t share, uint32\_t glVersion, const EGLint \*attribList); | EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share\_context, const EGLint \*attrib\_list) |
| void DestroyContext(uint32\_t handle, uint32\_t context); | EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx) |
| uint32\_t CreateWindowSurface(uint32\_t handle, uint32\_t config, uint32\_t width, uint32\_t height, void \*window, int32\_t type); | EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint \*attrib\_list) |
| uint32\_t CreateWindowSurface(uint32\_t handle, uint32\_t config, uint32\_t width, uint32\_t height, void \*window, int32\_t type); | EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint \*attrib\_list) |
| uint32\_t CreateColorBuffer(uint32\_t handle, uint32\_t width, uint32\_t height, GLenum internalFormat, GLenum internalType, int32\_t pixelFormat); | EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint \*attrib\_list) |
| void DestroyWindowSurface(uint32\_t handle, uint32\_t windowSurface); | EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface eglSurface) |
| void OpenColorBuffer(uint32\_t handle, uint32\_t colorBuffer); | static int gralloc\_register\_buffer(gralloc\_module\_t const\* module, buffer\_handle\_t handle) |
| EGLint MakeCurrent(uint32\_t handle, uint32\_t context, uint32\_t drawSurf, uint32\_t readSurf); | EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx) |
| void FBSetSwapInterval(uint32\_t handle, EGLint interval); | EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval) |
| void FBSetSwapInterval(uint32\_t handle, EGLint interval); | static int fb\_setSwapInterval(struct framebuffer\_device\_t\* dev, int interval) |
| EGLint ColorBufferCacheFlush(uint32\_t handle, uint32\_t colorBuffer, EGLint postCount, int forRead); | static int gralloc\_lock(gralloc\_module\_t const\* module, buffer\_handle\_t handle, int usage, int l, int t, int w, int h, void\*\* vaddr) |
| uint32\_t CreateClientImage(uint32\_t handle, uint32\_t context, EGLenum target, GLuint buffer); | EGLImageKHR eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint \*attrib\_list) |
| int DestroyClientImage(uint32\_t handle, uint32\_t image); | EGLBoolean eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR img) |
| void SelectChecksumHelper(uint32\_t handle, uint32\_t newProtocol, uint32\_t reserved); | void SelectChecksumHelper(uint32\_t newProtocol, uint32\_t reserved) |
| void CreateSyncKHR(uint32\_t handle, EGLenum type, EGLint \*attribs, uint32\_t numAttribs, int destroyWhenSignaled, uint64\_t \*glsyncOut, uint64\_t \*syncThreadOut); | EGLSyncKHR eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint \*attrib\_list) |
| int DestroySyncKHR(uint32\_t handle, uint64\_t sync); | EGLBoolean eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR eglsync) |
| void WaitSyncKHR(uint32\_t handle, uint64\_t sync, EGLint flags); | EGLint eglWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR eglsync, EGLint flags) |
| EGLint ClientWaitSyncKHR(uint32\_t handle, uint64\_t sync, EGLint flags, uint64\_t timeout); | EGLint eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR eglsync, EGLint flags, EGLTimeKHR timeout) |
| void SetGLESMaxVersion(uint32\_t handle, GLESMaxVersion ver); | Goldfish OpenGL与指令流引擎建立连接时，用于设定GLES版本号。 |
| GLESMaxVersion GetGLESMaxVersion(uint32\_t handle); | EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share\_context, const EGLint \*attrib\_list) |
| void SetSyncImpl(uint32\_t handle, SyncImpl syncImpl); | Goldfish OpenGL与指令流引擎建立连接时，设定Sync的版本。 |
| bool HasNativeSync(uint32\_t handle); | EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface eglSurface) |
| bool HasNativeSync(uint32\_t handle); | EGLBoolean eglSwapBuffersWithDamageKHR(EGLDisplay dpy, EGLSurface eglSurface, EGLint \*rects, EGLint n\_rects) |
| bool HasNativeSync(uint32\_t handle); | EGLSyncKHR eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint \*attrib\_list) |
| bool HasNativeSync(uint32\_t handle); | EGLBoolean eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR eglsync) |
| bool HasNativeSync(uint32\_t handle); | EGLint eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR eglsync, EGLint flags, EGLTimeKHR timeout) |
| bool HasNativeSyncV3(uint32\_t handle); | EGLint eglWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR eglsync, EGLint flags) |


**表2 Render Control接口**

| 指令流对外Render Control接口原型 | Goldfish OpenGL调用此接口的Egl函数原型 |
| --- | --- |
| void CloseColorBuffer(uint32\_t handle, uint32\_t colorBuffer, uint32\_t order); | static int gralloc\_unregister\_buffer(gralloc\_module\_t const\* module, buffer\_handle\_t handle) |
| void SetWindowColorBuffer(uint32\_t handle, uint32\_t windowSurface, uint32\_t colorBuffer, uint32\_t order); | EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint \*attrib\_list) |
| void SetWindowColorBuffer(uint32\_t handle, uint32\_t windowSurface, uint32\_t colorBuffer, uint32\_t order); | EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint \*attrib\_list) |
| void SetWindowColorBuffer(uint32\_t handle, uint32\_t windowSurface, uint32\_t colorBuffer, uint32\_t order); | EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface eglSurface) |
| void SetWindowColorBuffer(uint32\_t handle, uint32\_t windowSurface, uint32\_t colorBuffer, uint32\_t order); | EGLBoolean eglSwapBuffersWithDamageKHR(EGLDisplay dpy, EGLSurface eglSurface, EGLint \*rects, EGLint n\_rects) |
| int FlushWindowColorBuffer(uint32\_t handle, uint32\_t windowSurface, uint32\_t colorBuffer, uint32\_t order, EGLint \*rects, EGLint rectsNum); | EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface eglSurface) |
| int FlushWindowColorBuffer(uint32\_t handle, uint32\_t windowSurface, uint32\_t colorBuffer, uint32\_t order, EGLint \*rects, EGLint rectsNum); | EGLBoolean eglSwapBuffersWithDamageKHR(EGLDisplay dpy, EGLSurface eglSurface, EGLint \*rects, EGLint n\_rects) |
| void FBPost(uint32\_t handle, uint32\_t colorBuffer, uint32\_t order); | static int fb\_post(struct framebuffer\_device\_t\* dev, buffer\_handle\_t buffer) |
| void BindTexture(uint32\_t handle, uint32\_t colorBuffer, uint32\_t order, uint32\_t isPost); | EGLBoolean eglBindTexImage(EGLDisplay dpy, EGLSurface eglSurface, EGLint buffer) |
| void BindTexture(uint32\_t handle, uint32\_t colorBuffer, uint32\_t order, uint32\_t isPost); | void glEGLImageTargetTexture2DOES(void \* self, GLenum target, GLeglImageOES img) |
| void BindRenderbuffer(uint32\_t handle, uint32\_t colorBuffer, uint32\_t order); | void glEGLImageTargetRenderbufferStorageOES(void \*self, GLenum target, GLeglImageOES img) |
| void ReadColorBuffer(uint32\_t handle, uint32\_t colorBuffer, uint32\_t order, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void \*pixels); | static int gralloc\_lock(gralloc\_module\_t const\* module, buffer\_handle\_t handle, int usage, int l, int t, int w, int h, void\*\* vaddr) |
| int OpenColorBuffer2(uint32\_t handle, uint32\_t colorBuffer, uint32\_t order); | static int gralloc\_register\_buffer(gralloc\_module\_t const\* module, buffer\_handle\_t handle) |
| int UpdateColorBuffer(uint32\_t handle, uint32\_t colorBuffer, uint32\_t order, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void \*pixels); | static int gralloc\_unlock(gralloc\_module\_t const\* module, buffer\_handle\_t handle) |
| void FlushWindowColorBufferAsync(uint32\_t handle, uint32\_t windowSurface, uint32\_t colorbuffer, uint32\_t order, EGLint \*rects, EGLint rectsNum); | EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface eglSurface) |
| void FlushWindowColorBufferAsync(uint32\_t handle, uint32\_t windowSurface, uint32\_t colorbuffer, uint32\_t order, EGLint \*rects, EGLint rectsNum); | EGLBoolean eglSwapBuffersWithDamageKHR(EGLDisplay dpy, EGLSurface eglSurface, EGLint \*rects, EGLint n\_rects) |
