中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

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)

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)

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)

EGLBoolean eglSwapBuffersWithDamageKHR(EGLDisplay dpy, EGLSurface eglSurface, EGLint *rects, EGLint n_rects)

EGLSyncKHR eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)

EGLBoolean eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR eglsync)

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)

EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)

EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface eglSurface)

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)

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 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)

EGLBoolean eglSwapBuffersWithDamageKHR(EGLDisplay dpy, EGLSurface eglSurface, EGLint *rects, EGLint n_rects)