diff options
Diffstat (limited to 'system')
67 files changed, 4565 insertions, 2070 deletions
diff --git a/system/GLESv1/CMakeLists.txt b/system/GLESv1/CMakeLists.txt index 5436e5f6..8143b9ac 100644 --- a/system/GLESv1/CMakeLists.txt +++ b/system/GLESv1/CMakeLists.txt @@ -4,7 +4,7 @@ android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/GLESv1/Android.mk" "e095cb082e3791719749cfc80b90560afd7348eb0d7895449d2509aa129bea75") set(GLESv1_CM_emulation_src gl.cpp) android_add_library(TARGET GLESv1_CM_emulation SHARED LICENSE Apache-2.0 SRC gl.cpp) -target_include_directories(GLESv1_CM_emulation PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) -target_compile_definitions(GLESv1_CM_emulation PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGOLDFISH_VULKAN" "-DLOG_TAG=\"GLES_emulation\"") +target_include_directories(GLESv1_CM_emulation PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) +target_compile_definitions(GLESv1_CM_emulation PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM" "-DLOG_TAG=\"GLES_emulation\"") target_compile_options(GLESv1_CM_emulation PRIVATE "-fvisibility=default" "-Wno-unused-parameter") -target_link_libraries(GLESv1_CM_emulation PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc gui androidemu cutils utils log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file +target_link_libraries(GLESv1_CM_emulation PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc gui log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host cutils utils androidemu PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file diff --git a/system/GLESv1_enc/CMakeLists.txt b/system/GLESv1_enc/CMakeLists.txt index 0a9bc52b..2fb5b033 100644 --- a/system/GLESv1_enc/CMakeLists.txt +++ b/system/GLESv1_enc/CMakeLists.txt @@ -4,7 +4,7 @@ android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc/Android.mk" "953e6b7371d10eed63a4be555f8f1fb6f347338484a78102fa8f55dff96f5d3b") set(GLESv1_enc_src GLEncoder.cpp GLEncoderUtils.cpp gl_client_context.cpp gl_enc.cpp gl_entry.cpp) android_add_library(TARGET GLESv1_enc SHARED LICENSE Apache-2.0 SRC GLEncoder.cpp GLEncoderUtils.cpp gl_client_context.cpp gl_enc.cpp gl_entry.cpp) -target_include_directories(GLESv1_enc PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) -target_compile_definitions(GLESv1_enc PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGOLDFISH_VULKAN" "-DLOG_TAG=\"emuglGLESv1_enc\"") +target_include_directories(GLESv1_enc PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) +target_compile_definitions(GLESv1_enc PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM" "-DLOG_TAG=\"emuglGLESv1_enc\"") target_compile_options(GLESv1_enc PRIVATE "-fvisibility=default" "-Wno-unused-parameter") -target_link_libraries(GLESv1_enc PRIVATE OpenglCodecCommon_host cutils utils log android-emu-shared PRIVATE qemupipe_host)
\ No newline at end of file +target_link_libraries(GLESv1_enc PRIVATE OpenglCodecCommon_host cutils utils log androidemu android-emu-shared PRIVATE qemupipe_host)
\ No newline at end of file diff --git a/system/GLESv1_enc/GLEncoder.cpp b/system/GLESv1_enc/GLEncoder.cpp index 20f2c020..1ab13e37 100644 --- a/system/GLESv1_enc/GLEncoder.cpp +++ b/system/GLESv1_enc/GLEncoder.cpp @@ -989,7 +989,7 @@ void GLEncoder::s_glFramebufferTexture2DOES(void*self, GLEncoder* ctx = (GLEncoder*)self; GLClientState* state = ctx->m_state; - state->attachTextureObject(target, attachment, texture); + state->attachTextureObject(target, attachment, texture, level, 0); ctx->m_glFramebufferTexture2DOES_enc(self, target, attachment, textarget, texture, level); } @@ -1000,7 +1000,7 @@ void GLEncoder::s_glFramebufferTexture2DMultisampleIMG(void* self, GLEncoder* ctx = (GLEncoder*)self; GLClientState* state = ctx->m_state; - state->attachTextureObject(target, attachment, texture); + state->attachTextureObject(target, attachment, texture, level, 0); ctx->m_glFramebufferTexture2DMultisampleIMG_enc(self, target, attachment, textarget, texture, level, samples); } diff --git a/system/GLESv1_enc/gl_enc.cpp b/system/GLESv1_enc/gl_enc.cpp index 4e672c68..a536b869 100644 --- a/system/GLESv1_enc/gl_enc.cpp +++ b/system/GLESv1_enc/gl_enc.cpp @@ -12,6 +12,7 @@ #include <stdio.h> +#include "android/base/Tracing.h" namespace { void enc_unsupported() @@ -21,6 +22,7 @@ void enc_unsupported() void glAlphaFunc_enc(void *self , GLenum func, GLclampf ref) { + AEMU_SCOPED_TRACE("glAlphaFunc encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -47,6 +49,7 @@ void glAlphaFunc_enc(void *self , GLenum func, GLclampf ref) void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { + AEMU_SCOPED_TRACE("glClearColor encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -75,6 +78,7 @@ void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, void glClearDepthf_enc(void *self , GLclampf depth) { + AEMU_SCOPED_TRACE("glClearDepthf encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -100,6 +104,7 @@ void glClearDepthf_enc(void *self , GLclampf depth) void glClipPlanef_enc(void *self , GLenum plane, const GLfloat* equation) { + AEMU_SCOPED_TRACE("glClipPlanef encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -128,6 +133,7 @@ void glClipPlanef_enc(void *self , GLenum plane, const GLfloat* equation) void glColor4f_enc(void *self , GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { + AEMU_SCOPED_TRACE("glColor4f encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -156,6 +162,7 @@ void glColor4f_enc(void *self , GLfloat red, GLfloat green, GLfloat blue, GLfloa void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar) { + AEMU_SCOPED_TRACE("glDepthRangef encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -182,6 +189,7 @@ void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar) void glFogf_enc(void *self , GLenum pname, GLfloat param) { + AEMU_SCOPED_TRACE("glFogf encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -208,6 +216,7 @@ void glFogf_enc(void *self , GLenum pname, GLfloat param) void glFogfv_enc(void *self , GLenum pname, const GLfloat* params) { + AEMU_SCOPED_TRACE("glFogfv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -236,6 +245,7 @@ void glFogfv_enc(void *self , GLenum pname, const GLfloat* params) void glFrustumf_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) { + AEMU_SCOPED_TRACE("glFrustumf encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -266,6 +276,7 @@ void glFrustumf_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GL void glGetClipPlanef_enc(void *self , GLenum pname, GLfloat* eqn) { + AEMU_SCOPED_TRACE("glGetClipPlanef encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -305,6 +316,7 @@ void glGetClipPlanef_enc(void *self , GLenum pname, GLfloat* eqn) void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetFloatv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -344,6 +356,7 @@ void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params) void glGetLightfv_enc(void *self , GLenum light, GLenum pname, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetLightfv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -384,6 +397,7 @@ void glGetLightfv_enc(void *self , GLenum light, GLenum pname, GLfloat* params) void glGetMaterialfv_enc(void *self , GLenum face, GLenum pname, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetMaterialfv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -424,6 +438,7 @@ void glGetMaterialfv_enc(void *self , GLenum face, GLenum pname, GLfloat* params void glGetTexEnvfv_enc(void *self , GLenum env, GLenum pname, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetTexEnvfv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -464,6 +479,7 @@ void glGetTexEnvfv_enc(void *self , GLenum env, GLenum pname, GLfloat* params) void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetTexParameterfv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -504,6 +520,7 @@ void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* void glLightModelf_enc(void *self , GLenum pname, GLfloat param) { + AEMU_SCOPED_TRACE("glLightModelf encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -530,6 +547,7 @@ void glLightModelf_enc(void *self , GLenum pname, GLfloat param) void glLightModelfv_enc(void *self , GLenum pname, const GLfloat* params) { + AEMU_SCOPED_TRACE("glLightModelfv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -558,6 +576,7 @@ void glLightModelfv_enc(void *self , GLenum pname, const GLfloat* params) void glLightf_enc(void *self , GLenum light, GLenum pname, GLfloat param) { + AEMU_SCOPED_TRACE("glLightf encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -585,6 +604,7 @@ void glLightf_enc(void *self , GLenum light, GLenum pname, GLfloat param) void glLightfv_enc(void *self , GLenum light, GLenum pname, const GLfloat* params) { + AEMU_SCOPED_TRACE("glLightfv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -614,6 +634,7 @@ void glLightfv_enc(void *self , GLenum light, GLenum pname, const GLfloat* param void glLineWidth_enc(void *self , GLfloat width) { + AEMU_SCOPED_TRACE("glLineWidth encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -639,6 +660,7 @@ void glLineWidth_enc(void *self , GLfloat width) void glLoadMatrixf_enc(void *self , const GLfloat* m) { + AEMU_SCOPED_TRACE("glLoadMatrixf encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -666,6 +688,7 @@ void glLoadMatrixf_enc(void *self , const GLfloat* m) void glMaterialf_enc(void *self , GLenum face, GLenum pname, GLfloat param) { + AEMU_SCOPED_TRACE("glMaterialf encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -693,6 +716,7 @@ void glMaterialf_enc(void *self , GLenum face, GLenum pname, GLfloat param) void glMaterialfv_enc(void *self , GLenum face, GLenum pname, const GLfloat* params) { + AEMU_SCOPED_TRACE("glMaterialfv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -722,6 +746,7 @@ void glMaterialfv_enc(void *self , GLenum face, GLenum pname, const GLfloat* par void glMultMatrixf_enc(void *self , const GLfloat* m) { + AEMU_SCOPED_TRACE("glMultMatrixf encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -749,6 +774,7 @@ void glMultMatrixf_enc(void *self , const GLfloat* m) void glMultiTexCoord4f_enc(void *self , GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) { + AEMU_SCOPED_TRACE("glMultiTexCoord4f encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -778,6 +804,7 @@ void glMultiTexCoord4f_enc(void *self , GLenum target, GLfloat s, GLfloat t, GLf void glNormal3f_enc(void *self , GLfloat nx, GLfloat ny, GLfloat nz) { + AEMU_SCOPED_TRACE("glNormal3f encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -805,6 +832,7 @@ void glNormal3f_enc(void *self , GLfloat nx, GLfloat ny, GLfloat nz) void glOrthof_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) { + AEMU_SCOPED_TRACE("glOrthof encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -835,6 +863,7 @@ void glOrthof_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfl void glPointParameterf_enc(void *self , GLenum pname, GLfloat param) { + AEMU_SCOPED_TRACE("glPointParameterf encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -861,6 +890,7 @@ void glPointParameterf_enc(void *self , GLenum pname, GLfloat param) void glPointParameterfv_enc(void *self , GLenum pname, const GLfloat* params) { + AEMU_SCOPED_TRACE("glPointParameterfv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -889,6 +919,7 @@ void glPointParameterfv_enc(void *self , GLenum pname, const GLfloat* params) void glPointSize_enc(void *self , GLfloat size) { + AEMU_SCOPED_TRACE("glPointSize encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -914,6 +945,7 @@ void glPointSize_enc(void *self , GLfloat size) void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units) { + AEMU_SCOPED_TRACE("glPolygonOffset encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -940,6 +972,7 @@ void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units) void glRotatef_enc(void *self , GLfloat angle, GLfloat x, GLfloat y, GLfloat z) { + AEMU_SCOPED_TRACE("glRotatef encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -968,6 +1001,7 @@ void glRotatef_enc(void *self , GLfloat angle, GLfloat x, GLfloat y, GLfloat z) void glScalef_enc(void *self , GLfloat x, GLfloat y, GLfloat z) { + AEMU_SCOPED_TRACE("glScalef encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -995,6 +1029,7 @@ void glScalef_enc(void *self , GLfloat x, GLfloat y, GLfloat z) void glTexEnvf_enc(void *self , GLenum target, GLenum pname, GLfloat param) { + AEMU_SCOPED_TRACE("glTexEnvf encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1022,6 +1057,7 @@ void glTexEnvf_enc(void *self , GLenum target, GLenum pname, GLfloat param) void glTexEnvfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params) { + AEMU_SCOPED_TRACE("glTexEnvfv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1051,6 +1087,7 @@ void glTexEnvfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* par void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param) { + AEMU_SCOPED_TRACE("glTexParameterf encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1078,6 +1115,7 @@ void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params) { + AEMU_SCOPED_TRACE("glTexParameterfv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1107,6 +1145,7 @@ void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloa void glTranslatef_enc(void *self , GLfloat x, GLfloat y, GLfloat z) { + AEMU_SCOPED_TRACE("glTranslatef encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1134,6 +1173,7 @@ void glTranslatef_enc(void *self , GLfloat x, GLfloat y, GLfloat z) void glActiveTexture_enc(void *self , GLenum texture) { + AEMU_SCOPED_TRACE("glActiveTexture encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1159,6 +1199,7 @@ void glActiveTexture_enc(void *self , GLenum texture) void glAlphaFuncx_enc(void *self , GLenum func, GLclampx ref) { + AEMU_SCOPED_TRACE("glAlphaFuncx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1185,6 +1226,7 @@ void glAlphaFuncx_enc(void *self , GLenum func, GLclampx ref) void glBindBuffer_enc(void *self , GLenum target, GLuint buffer) { + AEMU_SCOPED_TRACE("glBindBuffer encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1211,6 +1253,7 @@ void glBindBuffer_enc(void *self , GLenum target, GLuint buffer) void glBindTexture_enc(void *self , GLenum target, GLuint texture) { + AEMU_SCOPED_TRACE("glBindTexture encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1237,6 +1280,7 @@ void glBindTexture_enc(void *self , GLenum target, GLuint texture) void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor) { + AEMU_SCOPED_TRACE("glBlendFunc encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1263,6 +1307,7 @@ void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor) void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage) { + AEMU_SCOPED_TRACE("glBufferData encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1293,6 +1338,7 @@ void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data) { + AEMU_SCOPED_TRACE("glBufferSubData encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1323,6 +1369,7 @@ void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr void glClear_enc(void *self , GLbitfield mask) { + AEMU_SCOPED_TRACE("glClear encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1348,6 +1395,7 @@ void glClear_enc(void *self , GLbitfield mask) void glClearColorx_enc(void *self , GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) { + AEMU_SCOPED_TRACE("glClearColorx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1376,6 +1424,7 @@ void glClearColorx_enc(void *self , GLclampx red, GLclampx green, GLclampx blue, void glClearDepthx_enc(void *self , GLclampx depth) { + AEMU_SCOPED_TRACE("glClearDepthx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1401,6 +1450,7 @@ void glClearDepthx_enc(void *self , GLclampx depth) void glClearStencil_enc(void *self , GLint s) { + AEMU_SCOPED_TRACE("glClearStencil encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1426,6 +1476,7 @@ void glClearStencil_enc(void *self , GLint s) void glClientActiveTexture_enc(void *self , GLenum texture) { + AEMU_SCOPED_TRACE("glClientActiveTexture encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1451,6 +1502,7 @@ void glClientActiveTexture_enc(void *self , GLenum texture) void glColor4ub_enc(void *self , GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) { + AEMU_SCOPED_TRACE("glColor4ub encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1479,6 +1531,7 @@ void glColor4ub_enc(void *self , GLubyte red, GLubyte green, GLubyte blue, GLuby void glColor4x_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) { + AEMU_SCOPED_TRACE("glColor4x encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1507,6 +1560,7 @@ void glColor4x_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLfixe void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) { + AEMU_SCOPED_TRACE("glColorMask encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1535,6 +1589,7 @@ void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data) { + AEMU_SCOPED_TRACE("glCompressedTexImage2D encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1569,6 +1624,7 @@ void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data) { + AEMU_SCOPED_TRACE("glCompressedTexSubImage2D encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1604,6 +1660,7 @@ void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLin void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { + AEMU_SCOPED_TRACE("glCopyTexImage2D encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1636,6 +1693,7 @@ void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum intern void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glCopyTexSubImage2D encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1668,6 +1726,7 @@ void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoff void glCullFace_enc(void *self , GLenum mode) { + AEMU_SCOPED_TRACE("glCullFace encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1693,6 +1752,7 @@ void glCullFace_enc(void *self , GLenum mode) void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers) { + AEMU_SCOPED_TRACE("glDeleteBuffers encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1721,6 +1781,7 @@ void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers) void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures) { + AEMU_SCOPED_TRACE("glDeleteTextures encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1749,6 +1810,7 @@ void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures) void glDepthFunc_enc(void *self , GLenum func) { + AEMU_SCOPED_TRACE("glDepthFunc encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1774,6 +1836,7 @@ void glDepthFunc_enc(void *self , GLenum func) void glDepthMask_enc(void *self , GLboolean flag) { + AEMU_SCOPED_TRACE("glDepthMask encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1799,6 +1862,7 @@ void glDepthMask_enc(void *self , GLboolean flag) void glDepthRangex_enc(void *self , GLclampx zNear, GLclampx zFar) { + AEMU_SCOPED_TRACE("glDepthRangex encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1825,6 +1889,7 @@ void glDepthRangex_enc(void *self , GLclampx zNear, GLclampx zFar) void glDisable_enc(void *self , GLenum cap) { + AEMU_SCOPED_TRACE("glDisable encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1850,6 +1915,7 @@ void glDisable_enc(void *self , GLenum cap) void glDisableClientState_enc(void *self , GLenum array) { + AEMU_SCOPED_TRACE("glDisableClientState encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1875,6 +1941,7 @@ void glDisableClientState_enc(void *self , GLenum array) void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count) { + AEMU_SCOPED_TRACE("glDrawArrays encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1902,6 +1969,7 @@ void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count) void glEnable_enc(void *self , GLenum cap) { + AEMU_SCOPED_TRACE("glEnable encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1927,6 +1995,7 @@ void glEnable_enc(void *self , GLenum cap) void glEnableClientState_enc(void *self , GLenum array) { + AEMU_SCOPED_TRACE("glEnableClientState encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1952,6 +2021,7 @@ void glEnableClientState_enc(void *self , GLenum array) void glFinish_enc(void *self ) { + AEMU_SCOPED_TRACE("glFinish encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1976,6 +2046,7 @@ void glFinish_enc(void *self ) void glFlush_enc(void *self ) { + AEMU_SCOPED_TRACE("glFlush encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2000,6 +2071,7 @@ void glFlush_enc(void *self ) void glFogx_enc(void *self , GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glFogx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2026,6 +2098,7 @@ void glFogx_enc(void *self , GLenum pname, GLfixed param) void glFogxv_enc(void *self , GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glFogxv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2054,6 +2127,7 @@ void glFogxv_enc(void *self , GLenum pname, const GLfixed* params) void glFrontFace_enc(void *self , GLenum mode) { + AEMU_SCOPED_TRACE("glFrontFace encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2079,6 +2153,7 @@ void glFrontFace_enc(void *self , GLenum mode) void glFrustumx_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) { + AEMU_SCOPED_TRACE("glFrustumx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2109,6 +2184,7 @@ void glFrustumx_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GL void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params) { + AEMU_SCOPED_TRACE("glGetBooleanv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2148,6 +2224,7 @@ void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params) void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetBufferParameteriv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2188,6 +2265,7 @@ void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* void glClipPlanex_enc(void *self , GLenum pname, const GLfixed* eqn) { + AEMU_SCOPED_TRACE("glClipPlanex encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2216,6 +2294,7 @@ void glClipPlanex_enc(void *self , GLenum pname, const GLfixed* eqn) void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers) { + AEMU_SCOPED_TRACE("glGenBuffers encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2255,6 +2334,7 @@ void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers) void glGenTextures_enc(void *self , GLsizei n, GLuint* textures) { + AEMU_SCOPED_TRACE("glGenTextures encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2294,6 +2374,7 @@ void glGenTextures_enc(void *self , GLsizei n, GLuint* textures) GLenum glGetError_enc(void *self ) { + AEMU_SCOPED_TRACE("glGetError encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2333,6 +2414,7 @@ GLenum glGetError_enc(void *self ) void glGetFixedv_enc(void *self , GLenum pname, GLfixed* params) { + AEMU_SCOPED_TRACE("glGetFixedv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2372,6 +2454,7 @@ void glGetFixedv_enc(void *self , GLenum pname, GLfixed* params) void glGetIntegerv_enc(void *self , GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetIntegerv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2411,6 +2494,7 @@ void glGetIntegerv_enc(void *self , GLenum pname, GLint* params) void glGetLightxv_enc(void *self , GLenum light, GLenum pname, GLfixed* params) { + AEMU_SCOPED_TRACE("glGetLightxv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2451,6 +2535,7 @@ void glGetLightxv_enc(void *self , GLenum light, GLenum pname, GLfixed* params) void glGetMaterialxv_enc(void *self , GLenum face, GLenum pname, GLfixed* params) { + AEMU_SCOPED_TRACE("glGetMaterialxv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2491,6 +2576,7 @@ void glGetMaterialxv_enc(void *self , GLenum face, GLenum pname, GLfixed* params void glGetTexEnviv_enc(void *self , GLenum env, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetTexEnviv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2531,6 +2617,7 @@ void glGetTexEnviv_enc(void *self , GLenum env, GLenum pname, GLint* params) void glGetTexEnvxv_enc(void *self , GLenum env, GLenum pname, GLfixed* params) { + AEMU_SCOPED_TRACE("glGetTexEnvxv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2571,6 +2658,7 @@ void glGetTexEnvxv_enc(void *self , GLenum env, GLenum pname, GLfixed* params) void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetTexParameteriv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2611,6 +2699,7 @@ void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* pa void glGetTexParameterxv_enc(void *self , GLenum target, GLenum pname, GLfixed* params) { + AEMU_SCOPED_TRACE("glGetTexParameterxv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2651,6 +2740,7 @@ void glGetTexParameterxv_enc(void *self , GLenum target, GLenum pname, GLfixed* void glHint_enc(void *self , GLenum target, GLenum mode) { + AEMU_SCOPED_TRACE("glHint encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2677,6 +2767,7 @@ void glHint_enc(void *self , GLenum target, GLenum mode) GLboolean glIsBuffer_enc(void *self , GLuint buffer) { + AEMU_SCOPED_TRACE("glIsBuffer encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2717,6 +2808,7 @@ GLboolean glIsBuffer_enc(void *self , GLuint buffer) GLboolean glIsEnabled_enc(void *self , GLenum cap) { + AEMU_SCOPED_TRACE("glIsEnabled encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2757,6 +2849,7 @@ GLboolean glIsEnabled_enc(void *self , GLenum cap) GLboolean glIsTexture_enc(void *self , GLuint texture) { + AEMU_SCOPED_TRACE("glIsTexture encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2797,6 +2890,7 @@ GLboolean glIsTexture_enc(void *self , GLuint texture) void glLightModelx_enc(void *self , GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glLightModelx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2823,6 +2917,7 @@ void glLightModelx_enc(void *self , GLenum pname, GLfixed param) void glLightModelxv_enc(void *self , GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glLightModelxv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2851,6 +2946,7 @@ void glLightModelxv_enc(void *self , GLenum pname, const GLfixed* params) void glLightx_enc(void *self , GLenum light, GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glLightx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2878,6 +2974,7 @@ void glLightx_enc(void *self , GLenum light, GLenum pname, GLfixed param) void glLightxv_enc(void *self , GLenum light, GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glLightxv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2907,6 +3004,7 @@ void glLightxv_enc(void *self , GLenum light, GLenum pname, const GLfixed* param void glLineWidthx_enc(void *self , GLfixed width) { + AEMU_SCOPED_TRACE("glLineWidthx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2932,6 +3030,7 @@ void glLineWidthx_enc(void *self , GLfixed width) void glLoadIdentity_enc(void *self ) { + AEMU_SCOPED_TRACE("glLoadIdentity encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2956,6 +3055,7 @@ void glLoadIdentity_enc(void *self ) void glLoadMatrixx_enc(void *self , const GLfixed* m) { + AEMU_SCOPED_TRACE("glLoadMatrixx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2983,6 +3083,7 @@ void glLoadMatrixx_enc(void *self , const GLfixed* m) void glLogicOp_enc(void *self , GLenum opcode) { + AEMU_SCOPED_TRACE("glLogicOp encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3008,6 +3109,7 @@ void glLogicOp_enc(void *self , GLenum opcode) void glMaterialx_enc(void *self , GLenum face, GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glMaterialx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3035,6 +3137,7 @@ void glMaterialx_enc(void *self , GLenum face, GLenum pname, GLfixed param) void glMaterialxv_enc(void *self , GLenum face, GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glMaterialxv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3064,6 +3167,7 @@ void glMaterialxv_enc(void *self , GLenum face, GLenum pname, const GLfixed* par void glMatrixMode_enc(void *self , GLenum mode) { + AEMU_SCOPED_TRACE("glMatrixMode encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3089,6 +3193,7 @@ void glMatrixMode_enc(void *self , GLenum mode) void glMultMatrixx_enc(void *self , const GLfixed* m) { + AEMU_SCOPED_TRACE("glMultMatrixx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3116,6 +3221,7 @@ void glMultMatrixx_enc(void *self , const GLfixed* m) void glMultiTexCoord4x_enc(void *self , GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) { + AEMU_SCOPED_TRACE("glMultiTexCoord4x encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3145,6 +3251,7 @@ void glMultiTexCoord4x_enc(void *self , GLenum target, GLfixed s, GLfixed t, GLf void glNormal3x_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz) { + AEMU_SCOPED_TRACE("glNormal3x encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3172,6 +3279,7 @@ void glNormal3x_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz) void glOrthox_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) { + AEMU_SCOPED_TRACE("glOrthox encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3202,6 +3310,7 @@ void glOrthox_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfi void glPixelStorei_enc(void *self , GLenum pname, GLint param) { + AEMU_SCOPED_TRACE("glPixelStorei encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3228,6 +3337,7 @@ void glPixelStorei_enc(void *self , GLenum pname, GLint param) void glPointParameterx_enc(void *self , GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glPointParameterx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3254,6 +3364,7 @@ void glPointParameterx_enc(void *self , GLenum pname, GLfixed param) void glPointParameterxv_enc(void *self , GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glPointParameterxv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3282,6 +3393,7 @@ void glPointParameterxv_enc(void *self , GLenum pname, const GLfixed* params) void glPointSizex_enc(void *self , GLfixed size) { + AEMU_SCOPED_TRACE("glPointSizex encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3307,6 +3419,7 @@ void glPointSizex_enc(void *self , GLfixed size) void glPolygonOffsetx_enc(void *self , GLfixed factor, GLfixed units) { + AEMU_SCOPED_TRACE("glPolygonOffsetx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3333,6 +3446,7 @@ void glPolygonOffsetx_enc(void *self , GLfixed factor, GLfixed units) void glPopMatrix_enc(void *self ) { + AEMU_SCOPED_TRACE("glPopMatrix encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3357,6 +3471,7 @@ void glPopMatrix_enc(void *self ) void glPushMatrix_enc(void *self ) { + AEMU_SCOPED_TRACE("glPushMatrix encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3381,6 +3496,7 @@ void glPushMatrix_enc(void *self ) void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels) { + AEMU_SCOPED_TRACE("glReadPixels encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3425,6 +3541,7 @@ void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei heig void glRotatex_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed z) { + AEMU_SCOPED_TRACE("glRotatex encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3453,6 +3570,7 @@ void glRotatex_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed z) void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert) { + AEMU_SCOPED_TRACE("glSampleCoverage encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3479,6 +3597,7 @@ void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert) void glSampleCoveragex_enc(void *self , GLclampx value, GLboolean invert) { + AEMU_SCOPED_TRACE("glSampleCoveragex encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3505,6 +3624,7 @@ void glSampleCoveragex_enc(void *self , GLclampx value, GLboolean invert) void glScalex_enc(void *self , GLfixed x, GLfixed y, GLfixed z) { + AEMU_SCOPED_TRACE("glScalex encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3532,6 +3652,7 @@ void glScalex_enc(void *self , GLfixed x, GLfixed y, GLfixed z) void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glScissor encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3560,6 +3681,7 @@ void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height) void glShadeModel_enc(void *self , GLenum mode) { + AEMU_SCOPED_TRACE("glShadeModel encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3585,6 +3707,7 @@ void glShadeModel_enc(void *self , GLenum mode) void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask) { + AEMU_SCOPED_TRACE("glStencilFunc encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3612,6 +3735,7 @@ void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask) void glStencilMask_enc(void *self , GLuint mask) { + AEMU_SCOPED_TRACE("glStencilMask encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3637,6 +3761,7 @@ void glStencilMask_enc(void *self , GLuint mask) void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass) { + AEMU_SCOPED_TRACE("glStencilOp encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3664,6 +3789,7 @@ void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass) void glTexEnvi_enc(void *self , GLenum target, GLenum pname, GLint param) { + AEMU_SCOPED_TRACE("glTexEnvi encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3691,6 +3817,7 @@ void glTexEnvi_enc(void *self , GLenum target, GLenum pname, GLint param) void glTexEnvx_enc(void *self , GLenum target, GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glTexEnvx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3718,6 +3845,7 @@ void glTexEnvx_enc(void *self , GLenum target, GLenum pname, GLfixed param) void glTexEnviv_enc(void *self , GLenum target, GLenum pname, const GLint* params) { + AEMU_SCOPED_TRACE("glTexEnviv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3747,6 +3875,7 @@ void glTexEnviv_enc(void *self , GLenum target, GLenum pname, const GLint* param void glTexEnvxv_enc(void *self , GLenum target, GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glTexEnvxv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3776,6 +3905,7 @@ void glTexEnvxv_enc(void *self , GLenum target, GLenum pname, const GLfixed* par void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels) { + AEMU_SCOPED_TRACE("glTexImage2D encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3817,6 +3947,7 @@ void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalfor void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param) { + AEMU_SCOPED_TRACE("glTexParameteri encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3844,6 +3975,7 @@ void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param) void glTexParameterx_enc(void *self , GLenum target, GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glTexParameterx encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3871,6 +4003,7 @@ void glTexParameterx_enc(void *self , GLenum target, GLenum pname, GLfixed param void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params) { + AEMU_SCOPED_TRACE("glTexParameteriv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3900,6 +4033,7 @@ void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* void glTexParameterxv_enc(void *self , GLenum target, GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glTexParameterxv encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3929,6 +4063,7 @@ void glTexParameterxv_enc(void *self , GLenum target, GLenum pname, const GLfixe void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels) { + AEMU_SCOPED_TRACE("glTexSubImage2D encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3970,6 +4105,7 @@ void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, void glTranslatex_enc(void *self , GLfixed x, GLfixed y, GLfixed z) { + AEMU_SCOPED_TRACE("glTranslatex encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3997,6 +4133,7 @@ void glTranslatex_enc(void *self , GLfixed x, GLfixed y, GLfixed z) void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glViewport encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4025,6 +4162,7 @@ void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height void glVertexPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset) { + AEMU_SCOPED_TRACE("glVertexPointerOffset encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4053,6 +4191,7 @@ void glVertexPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei str void glColorPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset) { + AEMU_SCOPED_TRACE("glColorPointerOffset encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4081,6 +4220,7 @@ void glColorPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stri void glNormalPointerOffset_enc(void *self , GLenum type, GLsizei stride, GLuint offset) { + AEMU_SCOPED_TRACE("glNormalPointerOffset encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4108,6 +4248,7 @@ void glNormalPointerOffset_enc(void *self , GLenum type, GLsizei stride, GLuint void glPointSizePointerOffset_enc(void *self , GLenum type, GLsizei stride, GLuint offset) { + AEMU_SCOPED_TRACE("glPointSizePointerOffset encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4135,6 +4276,7 @@ void glPointSizePointerOffset_enc(void *self , GLenum type, GLsizei stride, GLui void glTexCoordPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset) { + AEMU_SCOPED_TRACE("glTexCoordPointerOffset encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4163,6 +4305,7 @@ void glTexCoordPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei s void glWeightPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset) { + AEMU_SCOPED_TRACE("glWeightPointerOffset encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4191,6 +4334,7 @@ void glWeightPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei str void glMatrixIndexPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset) { + AEMU_SCOPED_TRACE("glMatrixIndexPointerOffset encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4219,6 +4363,7 @@ void glMatrixIndexPointerOffset_enc(void *self , GLint size, GLenum type, GLsize void glVertexPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen) { + AEMU_SCOPED_TRACE("glVertexPointerData encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4250,6 +4395,7 @@ void glVertexPointerData_enc(void *self , GLint size, GLenum type, GLsizei strid void glColorPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen) { + AEMU_SCOPED_TRACE("glColorPointerData encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4281,6 +4427,7 @@ void glColorPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride void glNormalPointerData_enc(void *self , GLenum type, GLsizei stride, void* data, GLuint datalen) { + AEMU_SCOPED_TRACE("glNormalPointerData encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4311,6 +4458,7 @@ void glNormalPointerData_enc(void *self , GLenum type, GLsizei stride, void* dat void glTexCoordPointerData_enc(void *self , GLint unit, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen) { + AEMU_SCOPED_TRACE("glTexCoordPointerData encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4343,6 +4491,7 @@ void glTexCoordPointerData_enc(void *self , GLint unit, GLint size, GLenum type, void glPointSizePointerData_enc(void *self , GLenum type, GLsizei stride, void* data, GLuint datalen) { + AEMU_SCOPED_TRACE("glPointSizePointerData encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4373,6 +4522,7 @@ void glPointSizePointerData_enc(void *self , GLenum type, GLsizei stride, void* void glWeightPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen) { + AEMU_SCOPED_TRACE("glWeightPointerData encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4404,6 +4554,7 @@ void glWeightPointerData_enc(void *self , GLint size, GLenum type, GLsizei strid void glMatrixIndexPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen) { + AEMU_SCOPED_TRACE("glMatrixIndexPointerData encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4435,6 +4586,7 @@ void glMatrixIndexPointerData_enc(void *self , GLint size, GLenum type, GLsizei void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset) { + AEMU_SCOPED_TRACE("glDrawElementsOffset encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4463,6 +4615,7 @@ void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum ty void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen) { + AEMU_SCOPED_TRACE("glDrawElementsData encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4494,6 +4647,7 @@ void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats) { + AEMU_SCOPED_TRACE("glGetCompressedTextureFormats encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4533,6 +4687,7 @@ void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats) int glFinishRoundTrip_enc(void *self ) { + AEMU_SCOPED_TRACE("glFinishRoundTrip encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4572,6 +4727,7 @@ int glFinishRoundTrip_enc(void *self ) void glBlendEquationSeparateOES_enc(void *self , GLenum modeRGB, GLenum modeAlpha) { + AEMU_SCOPED_TRACE("glBlendEquationSeparateOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4598,6 +4754,7 @@ void glBlendEquationSeparateOES_enc(void *self , GLenum modeRGB, GLenum modeAlph void glBlendFuncSeparateOES_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { + AEMU_SCOPED_TRACE("glBlendFuncSeparateOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4626,6 +4783,7 @@ void glBlendFuncSeparateOES_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenu void glBlendEquationOES_enc(void *self , GLenum mode) { + AEMU_SCOPED_TRACE("glBlendEquationOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4651,6 +4809,7 @@ void glBlendEquationOES_enc(void *self , GLenum mode) void glDrawTexsOES_enc(void *self , GLshort x, GLshort y, GLshort z, GLshort width, GLshort height) { + AEMU_SCOPED_TRACE("glDrawTexsOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4680,6 +4839,7 @@ void glDrawTexsOES_enc(void *self , GLshort x, GLshort y, GLshort z, GLshort wid void glDrawTexiOES_enc(void *self , GLint x, GLint y, GLint z, GLint width, GLint height) { + AEMU_SCOPED_TRACE("glDrawTexiOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4709,6 +4869,7 @@ void glDrawTexiOES_enc(void *self , GLint x, GLint y, GLint z, GLint width, GLin void glDrawTexxOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height) { + AEMU_SCOPED_TRACE("glDrawTexxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4738,6 +4899,7 @@ void glDrawTexxOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z, GLfixed wid void glDrawTexsvOES_enc(void *self , const GLshort* coords) { + AEMU_SCOPED_TRACE("glDrawTexsvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4765,6 +4927,7 @@ void glDrawTexsvOES_enc(void *self , const GLshort* coords) void glDrawTexivOES_enc(void *self , const GLint* coords) { + AEMU_SCOPED_TRACE("glDrawTexivOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4792,6 +4955,7 @@ void glDrawTexivOES_enc(void *self , const GLint* coords) void glDrawTexxvOES_enc(void *self , const GLfixed* coords) { + AEMU_SCOPED_TRACE("glDrawTexxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4819,6 +4983,7 @@ void glDrawTexxvOES_enc(void *self , const GLfixed* coords) void glDrawTexfOES_enc(void *self , GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) { + AEMU_SCOPED_TRACE("glDrawTexfOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4848,6 +5013,7 @@ void glDrawTexfOES_enc(void *self , GLfloat x, GLfloat y, GLfloat z, GLfloat wid void glDrawTexfvOES_enc(void *self , const GLfloat* coords) { + AEMU_SCOPED_TRACE("glDrawTexfvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4875,6 +5041,7 @@ void glDrawTexfvOES_enc(void *self , const GLfloat* coords) void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image) { + AEMU_SCOPED_TRACE("glEGLImageTargetTexture2DOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4901,6 +5068,7 @@ void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image) { + AEMU_SCOPED_TRACE("glEGLImageTargetRenderbufferStorageOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4927,6 +5095,7 @@ void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeg void glAlphaFuncxOES_enc(void *self , GLenum func, GLclampx ref) { + AEMU_SCOPED_TRACE("glAlphaFuncxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4953,6 +5122,7 @@ void glAlphaFuncxOES_enc(void *self , GLenum func, GLclampx ref) void glClearColorxOES_enc(void *self , GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) { + AEMU_SCOPED_TRACE("glClearColorxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4981,6 +5151,7 @@ void glClearColorxOES_enc(void *self , GLclampx red, GLclampx green, GLclampx bl void glClearDepthxOES_enc(void *self , GLclampx depth) { + AEMU_SCOPED_TRACE("glClearDepthxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5006,6 +5177,7 @@ void glClearDepthxOES_enc(void *self , GLclampx depth) void glClipPlanexOES_enc(void *self , GLenum plane, const GLfixed* equation) { + AEMU_SCOPED_TRACE("glClipPlanexOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5034,6 +5206,7 @@ void glClipPlanexOES_enc(void *self , GLenum plane, const GLfixed* equation) void glClipPlanexIMG_enc(void *self , GLenum plane, const GLfixed* equation) { + AEMU_SCOPED_TRACE("glClipPlanexIMG encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5062,6 +5235,7 @@ void glClipPlanexIMG_enc(void *self , GLenum plane, const GLfixed* equation) void glColor4xOES_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) { + AEMU_SCOPED_TRACE("glColor4xOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5090,6 +5264,7 @@ void glColor4xOES_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLf void glDepthRangexOES_enc(void *self , GLclampx zNear, GLclampx zFar) { + AEMU_SCOPED_TRACE("glDepthRangexOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5116,6 +5291,7 @@ void glDepthRangexOES_enc(void *self , GLclampx zNear, GLclampx zFar) void glFogxOES_enc(void *self , GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glFogxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5142,6 +5318,7 @@ void glFogxOES_enc(void *self , GLenum pname, GLfixed param) void glFogxvOES_enc(void *self , GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glFogxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5170,6 +5347,7 @@ void glFogxvOES_enc(void *self , GLenum pname, const GLfixed* params) void glFrustumxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) { + AEMU_SCOPED_TRACE("glFrustumxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5200,6 +5378,7 @@ void glFrustumxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, void glGetClipPlanexOES_enc(void *self , GLenum pname, GLfixed* eqn) { + AEMU_SCOPED_TRACE("glGetClipPlanexOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5239,6 +5418,7 @@ void glGetClipPlanexOES_enc(void *self , GLenum pname, GLfixed* eqn) void glGetClipPlanex_enc(void *self , GLenum pname, GLfixed* eqn) { + AEMU_SCOPED_TRACE("glGetClipPlanex encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5278,6 +5458,7 @@ void glGetClipPlanex_enc(void *self , GLenum pname, GLfixed* eqn) void glGetFixedvOES_enc(void *self , GLenum pname, GLfixed* params) { + AEMU_SCOPED_TRACE("glGetFixedvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5317,6 +5498,7 @@ void glGetFixedvOES_enc(void *self , GLenum pname, GLfixed* params) void glGetLightxvOES_enc(void *self , GLenum light, GLenum pname, GLfixed* params) { + AEMU_SCOPED_TRACE("glGetLightxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5357,6 +5539,7 @@ void glGetLightxvOES_enc(void *self , GLenum light, GLenum pname, GLfixed* param void glGetMaterialxvOES_enc(void *self , GLenum face, GLenum pname, GLfixed* params) { + AEMU_SCOPED_TRACE("glGetMaterialxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5397,6 +5580,7 @@ void glGetMaterialxvOES_enc(void *self , GLenum face, GLenum pname, GLfixed* par void glGetTexEnvxvOES_enc(void *self , GLenum env, GLenum pname, GLfixed* params) { + AEMU_SCOPED_TRACE("glGetTexEnvxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5437,6 +5621,7 @@ void glGetTexEnvxvOES_enc(void *self , GLenum env, GLenum pname, GLfixed* params void glGetTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, GLfixed* params) { + AEMU_SCOPED_TRACE("glGetTexParameterxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5477,6 +5662,7 @@ void glGetTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, GLfixe void glLightModelxOES_enc(void *self , GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glLightModelxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5503,6 +5689,7 @@ void glLightModelxOES_enc(void *self , GLenum pname, GLfixed param) void glLightModelxvOES_enc(void *self , GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glLightModelxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5531,6 +5718,7 @@ void glLightModelxvOES_enc(void *self , GLenum pname, const GLfixed* params) void glLightxOES_enc(void *self , GLenum light, GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glLightxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5558,6 +5746,7 @@ void glLightxOES_enc(void *self , GLenum light, GLenum pname, GLfixed param) void glLightxvOES_enc(void *self , GLenum light, GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glLightxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5587,6 +5776,7 @@ void glLightxvOES_enc(void *self , GLenum light, GLenum pname, const GLfixed* pa void glLineWidthxOES_enc(void *self , GLfixed width) { + AEMU_SCOPED_TRACE("glLineWidthxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5612,6 +5802,7 @@ void glLineWidthxOES_enc(void *self , GLfixed width) void glLoadMatrixxOES_enc(void *self , const GLfixed* m) { + AEMU_SCOPED_TRACE("glLoadMatrixxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5639,6 +5830,7 @@ void glLoadMatrixxOES_enc(void *self , const GLfixed* m) void glMaterialxOES_enc(void *self , GLenum face, GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glMaterialxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5666,6 +5858,7 @@ void glMaterialxOES_enc(void *self , GLenum face, GLenum pname, GLfixed param) void glMaterialxvOES_enc(void *self , GLenum face, GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glMaterialxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5695,6 +5888,7 @@ void glMaterialxvOES_enc(void *self , GLenum face, GLenum pname, const GLfixed* void glMultMatrixxOES_enc(void *self , const GLfixed* m) { + AEMU_SCOPED_TRACE("glMultMatrixxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5722,6 +5916,7 @@ void glMultMatrixxOES_enc(void *self , const GLfixed* m) void glMultiTexCoord4xOES_enc(void *self , GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) { + AEMU_SCOPED_TRACE("glMultiTexCoord4xOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5751,6 +5946,7 @@ void glMultiTexCoord4xOES_enc(void *self , GLenum target, GLfixed s, GLfixed t, void glNormal3xOES_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz) { + AEMU_SCOPED_TRACE("glNormal3xOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5778,6 +5974,7 @@ void glNormal3xOES_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz) void glOrthoxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) { + AEMU_SCOPED_TRACE("glOrthoxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5808,6 +6005,7 @@ void glOrthoxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, G void glPointParameterxOES_enc(void *self , GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glPointParameterxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5834,6 +6032,7 @@ void glPointParameterxOES_enc(void *self , GLenum pname, GLfixed param) void glPointParameterxvOES_enc(void *self , GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glPointParameterxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5862,6 +6061,7 @@ void glPointParameterxvOES_enc(void *self , GLenum pname, const GLfixed* params) void glPointSizexOES_enc(void *self , GLfixed size) { + AEMU_SCOPED_TRACE("glPointSizexOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5887,6 +6087,7 @@ void glPointSizexOES_enc(void *self , GLfixed size) void glPolygonOffsetxOES_enc(void *self , GLfixed factor, GLfixed units) { + AEMU_SCOPED_TRACE("glPolygonOffsetxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5913,6 +6114,7 @@ void glPolygonOffsetxOES_enc(void *self , GLfixed factor, GLfixed units) void glRotatexOES_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed z) { + AEMU_SCOPED_TRACE("glRotatexOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5941,6 +6143,7 @@ void glRotatexOES_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed void glSampleCoveragexOES_enc(void *self , GLclampx value, GLboolean invert) { + AEMU_SCOPED_TRACE("glSampleCoveragexOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5967,6 +6170,7 @@ void glSampleCoveragexOES_enc(void *self , GLclampx value, GLboolean invert) void glScalexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z) { + AEMU_SCOPED_TRACE("glScalexOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5994,6 +6198,7 @@ void glScalexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z) void glTexEnvxOES_enc(void *self , GLenum target, GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glTexEnvxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6021,6 +6226,7 @@ void glTexEnvxOES_enc(void *self , GLenum target, GLenum pname, GLfixed param) void glTexEnvxvOES_enc(void *self , GLenum target, GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glTexEnvxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6050,6 +6256,7 @@ void glTexEnvxvOES_enc(void *self , GLenum target, GLenum pname, const GLfixed* void glTexParameterxOES_enc(void *self , GLenum target, GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glTexParameterxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6077,6 +6284,7 @@ void glTexParameterxOES_enc(void *self , GLenum target, GLenum pname, GLfixed pa void glTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glTexParameterxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6106,6 +6314,7 @@ void glTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, const GLf void glTranslatexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z) { + AEMU_SCOPED_TRACE("glTranslatexOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6133,6 +6342,7 @@ void glTranslatexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z) GLboolean glIsRenderbufferOES_enc(void *self , GLuint renderbuffer) { + AEMU_SCOPED_TRACE("glIsRenderbufferOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6173,6 +6383,7 @@ GLboolean glIsRenderbufferOES_enc(void *self , GLuint renderbuffer) void glBindRenderbufferOES_enc(void *self , GLenum target, GLuint renderbuffer) { + AEMU_SCOPED_TRACE("glBindRenderbufferOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6199,6 +6410,7 @@ void glBindRenderbufferOES_enc(void *self , GLenum target, GLuint renderbuffer) void glDeleteRenderbuffersOES_enc(void *self , GLsizei n, const GLuint* renderbuffers) { + AEMU_SCOPED_TRACE("glDeleteRenderbuffersOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6227,6 +6439,7 @@ void glDeleteRenderbuffersOES_enc(void *self , GLsizei n, const GLuint* renderbu void glGenRenderbuffersOES_enc(void *self , GLsizei n, GLuint* renderbuffers) { + AEMU_SCOPED_TRACE("glGenRenderbuffersOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6266,6 +6479,7 @@ void glGenRenderbuffersOES_enc(void *self , GLsizei n, GLuint* renderbuffers) void glRenderbufferStorageOES_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glRenderbufferStorageOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6294,6 +6508,7 @@ void glRenderbufferStorageOES_enc(void *self , GLenum target, GLenum internalfor void glGetRenderbufferParameterivOES_enc(void *self , GLenum target, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetRenderbufferParameterivOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6334,6 +6549,7 @@ void glGetRenderbufferParameterivOES_enc(void *self , GLenum target, GLenum pnam GLboolean glIsFramebufferOES_enc(void *self , GLuint framebuffer) { + AEMU_SCOPED_TRACE("glIsFramebufferOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6374,6 +6590,7 @@ GLboolean glIsFramebufferOES_enc(void *self , GLuint framebuffer) void glBindFramebufferOES_enc(void *self , GLenum target, GLuint framebuffer) { + AEMU_SCOPED_TRACE("glBindFramebufferOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6400,6 +6617,7 @@ void glBindFramebufferOES_enc(void *self , GLenum target, GLuint framebuffer) void glDeleteFramebuffersOES_enc(void *self , GLsizei n, const GLuint* framebuffers) { + AEMU_SCOPED_TRACE("glDeleteFramebuffersOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6428,6 +6646,7 @@ void glDeleteFramebuffersOES_enc(void *self , GLsizei n, const GLuint* framebuff void glGenFramebuffersOES_enc(void *self , GLsizei n, GLuint* framebuffers) { + AEMU_SCOPED_TRACE("glGenFramebuffersOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6467,6 +6686,7 @@ void glGenFramebuffersOES_enc(void *self , GLsizei n, GLuint* framebuffers) GLenum glCheckFramebufferStatusOES_enc(void *self , GLenum target) { + AEMU_SCOPED_TRACE("glCheckFramebufferStatusOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6507,6 +6727,7 @@ GLenum glCheckFramebufferStatusOES_enc(void *self , GLenum target) void glFramebufferRenderbufferOES_enc(void *self , GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { + AEMU_SCOPED_TRACE("glFramebufferRenderbufferOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6535,6 +6756,7 @@ void glFramebufferRenderbufferOES_enc(void *self , GLenum target, GLenum attachm void glFramebufferTexture2DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { + AEMU_SCOPED_TRACE("glFramebufferTexture2DOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6564,6 +6786,7 @@ void glFramebufferTexture2DOES_enc(void *self , GLenum target, GLenum attachment void glGetFramebufferAttachmentParameterivOES_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetFramebufferAttachmentParameterivOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6605,6 +6828,7 @@ void glGetFramebufferAttachmentParameterivOES_enc(void *self , GLenum target, GL void glGenerateMipmapOES_enc(void *self , GLenum target) { + AEMU_SCOPED_TRACE("glGenerateMipmapOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6630,6 +6854,7 @@ void glGenerateMipmapOES_enc(void *self , GLenum target) GLboolean glUnmapBufferOES_enc(void *self , GLenum target) { + AEMU_SCOPED_TRACE("glUnmapBufferOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6670,6 +6895,7 @@ GLboolean glUnmapBufferOES_enc(void *self , GLenum target) void glCurrentPaletteMatrixOES_enc(void *self , GLuint matrixpaletteindex) { + AEMU_SCOPED_TRACE("glCurrentPaletteMatrixOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6695,6 +6921,7 @@ void glCurrentPaletteMatrixOES_enc(void *self , GLuint matrixpaletteindex) void glLoadPaletteFromModelViewMatrixOES_enc(void *self ) { + AEMU_SCOPED_TRACE("glLoadPaletteFromModelViewMatrixOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6719,6 +6946,7 @@ void glLoadPaletteFromModelViewMatrixOES_enc(void *self ) GLbitfield glQueryMatrixxOES_enc(void *self , GLfixed* mantissa, GLint* exponent) { + AEMU_SCOPED_TRACE("glQueryMatrixxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6766,6 +6994,7 @@ GLbitfield glQueryMatrixxOES_enc(void *self , GLfixed* mantissa, GLint* exponent void glDepthRangefOES_enc(void *self , GLclampf zNear, GLclampf zFar) { + AEMU_SCOPED_TRACE("glDepthRangefOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6792,6 +7021,7 @@ void glDepthRangefOES_enc(void *self , GLclampf zNear, GLclampf zFar) void glFrustumfOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) { + AEMU_SCOPED_TRACE("glFrustumfOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6822,6 +7052,7 @@ void glFrustumfOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, void glOrthofOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) { + AEMU_SCOPED_TRACE("glOrthofOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6852,6 +7083,7 @@ void glOrthofOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, G void glClipPlanefOES_enc(void *self , GLenum plane, const GLfloat* equation) { + AEMU_SCOPED_TRACE("glClipPlanefOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6880,6 +7112,7 @@ void glClipPlanefOES_enc(void *self , GLenum plane, const GLfloat* equation) void glClipPlanefIMG_enc(void *self , GLenum plane, const GLfloat* equation) { + AEMU_SCOPED_TRACE("glClipPlanefIMG encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6908,6 +7141,7 @@ void glClipPlanefIMG_enc(void *self , GLenum plane, const GLfloat* equation) void glGetClipPlanefOES_enc(void *self , GLenum pname, GLfloat* eqn) { + AEMU_SCOPED_TRACE("glGetClipPlanefOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6947,6 +7181,7 @@ void glGetClipPlanefOES_enc(void *self , GLenum pname, GLfloat* eqn) void glClearDepthfOES_enc(void *self , GLclampf depth) { + AEMU_SCOPED_TRACE("glClearDepthfOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6972,6 +7207,7 @@ void glClearDepthfOES_enc(void *self , GLclampf depth) void glTexGenfOES_enc(void *self , GLenum coord, GLenum pname, GLfloat param) { + AEMU_SCOPED_TRACE("glTexGenfOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6999,6 +7235,7 @@ void glTexGenfOES_enc(void *self , GLenum coord, GLenum pname, GLfloat param) void glTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, const GLfloat* params) { + AEMU_SCOPED_TRACE("glTexGenfvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7028,6 +7265,7 @@ void glTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, const GLfloat* p void glTexGeniOES_enc(void *self , GLenum coord, GLenum pname, GLint param) { + AEMU_SCOPED_TRACE("glTexGeniOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7055,6 +7293,7 @@ void glTexGeniOES_enc(void *self , GLenum coord, GLenum pname, GLint param) void glTexGenivOES_enc(void *self , GLenum coord, GLenum pname, const GLint* params) { + AEMU_SCOPED_TRACE("glTexGenivOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7084,6 +7323,7 @@ void glTexGenivOES_enc(void *self , GLenum coord, GLenum pname, const GLint* par void glTexGenxOES_enc(void *self , GLenum coord, GLenum pname, GLfixed param) { + AEMU_SCOPED_TRACE("glTexGenxOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7111,6 +7351,7 @@ void glTexGenxOES_enc(void *self , GLenum coord, GLenum pname, GLfixed param) void glTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, const GLfixed* params) { + AEMU_SCOPED_TRACE("glTexGenxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7140,6 +7381,7 @@ void glTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, const GLfixed* p void glGetTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetTexGenfvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7169,6 +7411,7 @@ void glGetTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, GLfloat* para void glGetTexGenivOES_enc(void *self , GLenum coord, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetTexGenivOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7198,6 +7441,7 @@ void glGetTexGenivOES_enc(void *self , GLenum coord, GLenum pname, GLint* params void glGetTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, GLfixed* params) { + AEMU_SCOPED_TRACE("glGetTexGenxvOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7227,6 +7471,7 @@ void glGetTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, GLfixed* para void glBindVertexArrayOES_enc(void *self , GLuint array) { + AEMU_SCOPED_TRACE("glBindVertexArrayOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7252,6 +7497,7 @@ void glBindVertexArrayOES_enc(void *self , GLuint array) void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays) { + AEMU_SCOPED_TRACE("glDeleteVertexArraysOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7280,6 +7526,7 @@ void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays) void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays) { + AEMU_SCOPED_TRACE("glGenVertexArraysOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7319,6 +7566,7 @@ void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays) GLboolean glIsVertexArrayOES_enc(void *self , GLuint array) { + AEMU_SCOPED_TRACE("glIsVertexArrayOES encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7359,6 +7607,7 @@ GLboolean glIsVertexArrayOES_enc(void *self , GLuint array) void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments) { + AEMU_SCOPED_TRACE("glDiscardFramebufferEXT encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7388,6 +7637,7 @@ void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachme void glRenderbufferStorageMultisampleIMG_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glRenderbufferStorageMultisampleIMG encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7417,6 +7667,7 @@ void glRenderbufferStorageMultisampleIMG_enc(void *self , GLenum target, GLsizei void glFramebufferTexture2DMultisampleIMG_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) { + AEMU_SCOPED_TRACE("glFramebufferTexture2DMultisampleIMG encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7447,6 +7698,7 @@ void glFramebufferTexture2DMultisampleIMG_enc(void *self , GLenum target, GLenum void glDeleteFencesNV_enc(void *self , GLsizei n, const GLuint* fences) { + AEMU_SCOPED_TRACE("glDeleteFencesNV encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7475,6 +7727,7 @@ void glDeleteFencesNV_enc(void *self , GLsizei n, const GLuint* fences) void glGenFencesNV_enc(void *self , GLsizei n, GLuint* fences) { + AEMU_SCOPED_TRACE("glGenFencesNV encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7503,6 +7756,7 @@ void glGenFencesNV_enc(void *self , GLsizei n, GLuint* fences) GLboolean glIsFenceNV_enc(void *self , GLuint fence) { + AEMU_SCOPED_TRACE("glIsFenceNV encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7543,6 +7797,7 @@ GLboolean glIsFenceNV_enc(void *self , GLuint fence) GLboolean glTestFenceNV_enc(void *self , GLuint fence) { + AEMU_SCOPED_TRACE("glTestFenceNV encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7583,6 +7838,7 @@ GLboolean glTestFenceNV_enc(void *self , GLuint fence) void glGetFenceivNV_enc(void *self , GLuint fence, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetFenceivNV encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7623,6 +7879,7 @@ void glGetFenceivNV_enc(void *self , GLuint fence, GLenum pname, GLint* params) void glFinishFenceNV_enc(void *self , GLuint fence) { + AEMU_SCOPED_TRACE("glFinishFenceNV encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7648,6 +7905,7 @@ void glFinishFenceNV_enc(void *self , GLuint fence) void glSetFenceNV_enc(void *self , GLuint fence, GLenum condition) { + AEMU_SCOPED_TRACE("glSetFenceNV encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7674,6 +7932,7 @@ void glSetFenceNV_enc(void *self , GLuint fence, GLenum condition) void glGetDriverControlsQCOM_enc(void *self , GLint* num, GLsizei size, GLuint* driverControls) { + AEMU_SCOPED_TRACE("glGetDriverControlsQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7717,6 +7976,7 @@ void glGetDriverControlsQCOM_enc(void *self , GLint* num, GLsizei size, GLuint* void glGetDriverControlStringQCOM_enc(void *self , GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar* driverControlString) { + AEMU_SCOPED_TRACE("glGetDriverControlStringQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7761,6 +8021,7 @@ void glGetDriverControlStringQCOM_enc(void *self , GLuint driverControl, GLsizei void glEnableDriverControlQCOM_enc(void *self , GLuint driverControl) { + AEMU_SCOPED_TRACE("glEnableDriverControlQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7786,6 +8047,7 @@ void glEnableDriverControlQCOM_enc(void *self , GLuint driverControl) void glDisableDriverControlQCOM_enc(void *self , GLuint driverControl) { + AEMU_SCOPED_TRACE("glDisableDriverControlQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7811,6 +8073,7 @@ void glDisableDriverControlQCOM_enc(void *self , GLuint driverControl) void glExtGetTexturesQCOM_enc(void *self , GLuint* textures, GLint maxTextures, GLint* numTextures) { + AEMU_SCOPED_TRACE("glExtGetTexturesQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7854,6 +8117,7 @@ void glExtGetTexturesQCOM_enc(void *self , GLuint* textures, GLint maxTextures, void glExtGetBuffersQCOM_enc(void *self , GLuint* buffers, GLint maxBuffers, GLint* numBuffers) { + AEMU_SCOPED_TRACE("glExtGetBuffersQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7897,6 +8161,7 @@ void glExtGetBuffersQCOM_enc(void *self , GLuint* buffers, GLint maxBuffers, GLi void glExtGetRenderbuffersQCOM_enc(void *self , GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers) { + AEMU_SCOPED_TRACE("glExtGetRenderbuffersQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7940,6 +8205,7 @@ void glExtGetRenderbuffersQCOM_enc(void *self , GLuint* renderbuffers, GLint max void glExtGetFramebuffersQCOM_enc(void *self , GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers) { + AEMU_SCOPED_TRACE("glExtGetFramebuffersQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7983,6 +8249,7 @@ void glExtGetFramebuffersQCOM_enc(void *self , GLuint* framebuffers, GLint maxFr void glExtGetTexLevelParameterivQCOM_enc(void *self , GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glExtGetTexLevelParameterivQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8025,6 +8292,7 @@ void glExtGetTexLevelParameterivQCOM_enc(void *self , GLuint texture, GLenum fac void glExtTexObjectStateOverrideiQCOM_enc(void *self , GLenum target, GLenum pname, GLint param) { + AEMU_SCOPED_TRACE("glExtTexObjectStateOverrideiQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8052,6 +8320,7 @@ void glExtTexObjectStateOverrideiQCOM_enc(void *self , GLenum target, GLenum pna void glExtGetTexSubImageQCOM_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid* texels) { + AEMU_SCOPED_TRACE("glExtGetTexSubImageQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8100,6 +8369,7 @@ void glExtGetTexSubImageQCOM_enc(void *self , GLenum target, GLint level, GLint void glExtGetShadersQCOM_enc(void *self , GLuint* shaders, GLint maxShaders, GLint* numShaders) { + AEMU_SCOPED_TRACE("glExtGetShadersQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8143,6 +8413,7 @@ void glExtGetShadersQCOM_enc(void *self , GLuint* shaders, GLint maxShaders, GLi void glExtGetProgramsQCOM_enc(void *self , GLuint* programs, GLint maxPrograms, GLint* numPrograms) { + AEMU_SCOPED_TRACE("glExtGetProgramsQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8186,6 +8457,7 @@ void glExtGetProgramsQCOM_enc(void *self , GLuint* programs, GLint maxPrograms, GLboolean glExtIsProgramBinaryQCOM_enc(void *self , GLuint program) { + AEMU_SCOPED_TRACE("glExtIsProgramBinaryQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8226,6 +8498,7 @@ GLboolean glExtIsProgramBinaryQCOM_enc(void *self , GLuint program) void glStartTilingQCOM_enc(void *self , GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask) { + AEMU_SCOPED_TRACE("glStartTilingQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8255,6 +8528,7 @@ void glStartTilingQCOM_enc(void *self , GLuint x, GLuint y, GLuint width, GLuint void glEndTilingQCOM_enc(void *self , GLbitfield preserveMask) { + AEMU_SCOPED_TRACE("glEndTilingQCOM encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8280,6 +8554,7 @@ void glEndTilingQCOM_enc(void *self , GLbitfield preserveMask) GLenum glGetGraphicsResetStatusEXT_enc(void *self ) { + AEMU_SCOPED_TRACE("glGetGraphicsResetStatusEXT encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8319,6 +8594,7 @@ GLenum glGetGraphicsResetStatusEXT_enc(void *self ) void glReadnPixelsEXT_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid* data) { + AEMU_SCOPED_TRACE("glReadnPixelsEXT encode"); gl_encoder_context_t *ctx = (gl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; diff --git a/system/GLESv2/CMakeLists.txt b/system/GLESv2/CMakeLists.txt index d90502a0..b04a4bb5 100644 --- a/system/GLESv2/CMakeLists.txt +++ b/system/GLESv2/CMakeLists.txt @@ -4,7 +4,7 @@ android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/GLESv2/Android.mk" "d8f9dda69ec57ad8b7a65f02c3335b16a4724f612dec1d1a2cd793c28c0a10f9") set(GLESv2_emulation_src gl2.cpp) android_add_library(TARGET GLESv2_emulation SHARED LICENSE Apache-2.0 SRC gl2.cpp) -target_include_directories(GLESv2_emulation PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) -target_compile_definitions(GLESv2_emulation PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGOLDFISH_VULKAN" "-DLOG_TAG=\"GLESv2_emulation\"") +target_include_directories(GLESv2_emulation PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) +target_compile_definitions(GLESv2_emulation PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM" "-DLOG_TAG=\"GLESv2_emulation\"") target_compile_options(GLESv2_emulation PRIVATE "-fvisibility=default" "-Wno-unused-parameter") -target_link_libraries(GLESv2_emulation PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc gui androidemu cutils utils log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file +target_link_libraries(GLESv2_emulation PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc gui log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host cutils utils androidemu PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file diff --git a/system/GLESv2/gl2.cpp b/system/GLESv2/gl2.cpp index a36bdd38..1c5ece7d 100644 --- a/system/GLESv2/gl2.cpp +++ b/system/GLESv2/gl2.cpp @@ -101,6 +101,7 @@ void glEGLImageTargetRenderbufferStorageOES(void *self, GLenum target, GLeglImag DBG("glEGLImageTargetRenderbufferStorageOES v2 image=%p\n", img); //TODO: check error - we don't have a way to set gl error EGLImage_t *image = (EGLImage_t*)img; + GLeglImageOES hostImage = reinterpret_cast<GLeglImageOES>((intptr_t)image->host_egl_image); if (image->target == EGL_NATIVE_BUFFER_ANDROID) { android_native_buffer_t* native_buffer = ((EGLImage_t*)image)->native_buffer; @@ -114,6 +115,8 @@ void glEGLImageTargetRenderbufferStorageOES(void *self, GLenum target, GLeglImag } DEFINE_AND_VALIDATE_HOST_CONNECTION(); + GET_CONTEXT; + ctx->associateEGLImage(target, hostImage); rcEnc->rcBindRenderbuffer(rcEnc, grallocHelper->getHostHandle(native_buffer->handle)); } else { diff --git a/system/GLESv2_enc/CMakeLists.txt b/system/GLESv2_enc/CMakeLists.txt index 39a479fc..5d0f049d 100644 --- a/system/GLESv2_enc/CMakeLists.txt +++ b/system/GLESv2_enc/CMakeLists.txt @@ -4,7 +4,7 @@ android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc/Android.mk" "df543672d1f36e43fb783b08200aa85dbf3a2e7167f8ecd7e4c01c80e6fd1650") set(GLESv2_enc_src GL2EncoderUtils.cpp GL2Encoder.cpp GLESv2Validation.cpp gl2_client_context.cpp gl2_enc.cpp gl2_entry.cpp IOStream2.cpp) android_add_library(TARGET GLESv2_enc SHARED LICENSE Apache-2.0 SRC GL2EncoderUtils.cpp GL2Encoder.cpp GLESv2Validation.cpp gl2_client_context.cpp gl2_enc.cpp gl2_entry.cpp IOStream2.cpp) -target_include_directories(GLESv2_enc PRIVATE ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) -target_compile_definitions(GLESv2_enc PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGOLDFISH_VULKAN" "-DLOG_TAG=\"emuglGLESv2_enc\"") +target_include_directories(GLESv2_enc PRIVATE ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) +target_compile_definitions(GLESv2_enc PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM" "-DLOG_TAG=\"emuglGLESv2_enc\"") target_compile_options(GLESv2_enc PRIVATE "-fvisibility=default" "-Wno-unused-parameter" "-Wno-unused-private-field") -target_link_libraries(GLESv2_enc PRIVATE OpenglCodecCommon_host cutils utils log android-emu-shared PRIVATE qemupipe_host)
\ No newline at end of file +target_link_libraries(GLESv2_enc PRIVATE OpenglCodecCommon_host cutils utils log androidemu android-emu-shared PRIVATE qemupipe_host)
\ No newline at end of file diff --git a/system/GLESv2_enc/GL2Encoder.cpp b/system/GLESv2_enc/GL2Encoder.cpp index bafd1b6a..cca18a98 100755 --- a/system/GLESv2_enc/GL2Encoder.cpp +++ b/system/GLESv2_enc/GL2Encoder.cpp @@ -16,6 +16,7 @@ #include "GL2Encoder.h" #include "GLESv2Validation.h" +#include "GLESTextureUtils.h" #include <string> #include <map> @@ -81,6 +82,7 @@ GL2Encoder::GL2Encoder(IOStream *stream, ChecksumCalculator *protocol) m_num_compressedTextureFormats = 0; m_max_combinedTextureImageUnits = 0; m_max_vertexTextureImageUnits = 0; + m_max_array_texture_layers = 0; m_max_textureImageUnits = 0; m_max_cubeMapTextureSize = 0; m_max_renderBufferSize = 0; @@ -296,6 +298,7 @@ GL2Encoder::GL2Encoder(IOStream *stream, ChecksumCalculator *protocol) OVERRIDE(glGenerateMipmap); OVERRIDE(glBindSampler); + OVERRIDE(glDeleteSamplers); OVERRIDE_CUSTOM(glFenceSync); OVERRIDE_CUSTOM(glClientWaitSync); @@ -375,6 +378,81 @@ GL2Encoder::GL2Encoder(IOStream *stream, ChecksumCalculator *protocol) OVERRIDE(glInvalidateFramebuffer); OVERRIDE(glInvalidateSubFramebuffer); + + OVERRIDE(glDispatchCompute); + OVERRIDE(glDispatchComputeIndirect); + + OVERRIDE(glGenTransformFeedbacks); + OVERRIDE(glDeleteTransformFeedbacks); + OVERRIDE(glGenSamplers); + OVERRIDE(glGenQueries); + OVERRIDE(glDeleteQueries); + + OVERRIDE(glBindTransformFeedback); + OVERRIDE(glBeginQuery); + OVERRIDE(glEndQuery); + + OVERRIDE(glClear); + OVERRIDE(glClearBufferfi); + OVERRIDE(glCopyTexSubImage2D); + OVERRIDE(glCopyTexSubImage3D); + OVERRIDE(glCompileShader); + OVERRIDE(glValidateProgram); + OVERRIDE(glProgramBinary); + + OVERRIDE(glGetSamplerParameterfv); + OVERRIDE(glGetSamplerParameteriv); + OVERRIDE(glSamplerParameterf); + OVERRIDE(glSamplerParameteri); + OVERRIDE(glSamplerParameterfv); + OVERRIDE(glSamplerParameteriv); + + OVERRIDE(glGetAttribLocation); + + OVERRIDE(glBindAttribLocation); + OVERRIDE(glUniformBlockBinding); + OVERRIDE(glGetTransformFeedbackVarying); + OVERRIDE(glScissor); + OVERRIDE(glDepthFunc); + OVERRIDE(glViewport); + OVERRIDE(glStencilFunc); + OVERRIDE(glStencilFuncSeparate); + OVERRIDE(glStencilOp); + OVERRIDE(glStencilOpSeparate); + OVERRIDE(glStencilMaskSeparate); + OVERRIDE(glBlendEquation); + OVERRIDE(glBlendEquationSeparate); + OVERRIDE(glBlendFunc); + OVERRIDE(glBlendFuncSeparate); + OVERRIDE(glCullFace); + OVERRIDE(glFrontFace); + OVERRIDE(glLineWidth); + OVERRIDE(glVertexAttrib1f); + OVERRIDE(glVertexAttrib2f); + OVERRIDE(glVertexAttrib3f); + OVERRIDE(glVertexAttrib4f); + OVERRIDE(glVertexAttrib1fv); + OVERRIDE(glVertexAttrib2fv); + OVERRIDE(glVertexAttrib3fv); + OVERRIDE(glVertexAttrib4fv); + OVERRIDE(glVertexAttribI4i); + OVERRIDE(glVertexAttribI4ui); + OVERRIDE(glVertexAttribI4iv); + OVERRIDE(glVertexAttribI4uiv); + + OVERRIDE(glGetShaderPrecisionFormat); + OVERRIDE(glGetProgramiv); + OVERRIDE(glGetActiveUniform); + OVERRIDE(glGetActiveUniformsiv); + OVERRIDE(glGetActiveUniformBlockName); + OVERRIDE(glGetActiveAttrib); + OVERRIDE(glGetRenderbufferParameteriv); + OVERRIDE(glGetQueryiv); + OVERRIDE(glGetQueryObjectuiv); + OVERRIDE(glIsEnabled); + OVERRIDE(glHint); + + OVERRIDE(glGetFragDataLocation); } GL2Encoder::~GL2Encoder() @@ -387,7 +465,9 @@ GLenum GL2Encoder::s_glGetError(void * self) GL2Encoder *ctx = (GL2Encoder *)self; GLenum err = ctx->getError(); if(err != GL_NO_ERROR) { - ctx->m_glGetError_enc(ctx); // also clear host error + if (!ctx->m_noHostError) { + ctx->m_glGetError_enc(ctx); // also clear host error + } ctx->setError(GL_NO_ERROR); return err; } @@ -405,6 +485,9 @@ public: mCtx(ctx), guest_error(ctx->getError()), host_error(ctx->m_glGetError_enc(ctx)) { + if (ctx->m_noHostError) { + host_error = GL_NO_ERROR; + } // Preserve any existing GL error in the guest: // OpenGL ES 3.0.5 spec: // The command enum GetError( void ); is used to obtain error information. @@ -577,6 +660,7 @@ void GL2Encoder::s_glBufferData(void * self, GLenum target, GLsizeiptr size, con GLuint bufferId = ctx->m_state->getBuffer(target); SET_ERROR_IF(bufferId==0, GL_INVALID_OPERATION); SET_ERROR_IF(size<0, GL_INVALID_VALUE); + SET_ERROR_IF(!GLESv2Validation::bufferUsage(ctx, usage), GL_INVALID_ENUM); ctx->m_shared->updateBufferData(bufferId, size, data); ctx->m_shared->setBufferUsage(bufferId, usage); @@ -620,18 +704,8 @@ void GL2Encoder::s_glDeleteBuffers(void * self, GLsizei n, const GLuint * buffer } } -static bool isValidVertexAttribIndex(void *self, GLuint indx) -{ - GL2Encoder *ctx = (GL2Encoder *)self; - GLint maxIndex; - ctx->glGetIntegerv(self, GL_MAX_VERTEX_ATTRIBS, &maxIndex); - return indx < maxIndex; -} - #define VALIDATE_VERTEX_ATTRIB_INDEX(index) \ - SET_ERROR_WITH_MESSAGE_IF( \ - !isValidVertexAttribIndex(self, index), GL_INVALID_VALUE, \ - GLESv2Validation::vertexAttribIndexRangeErrorMsg, (ctx, index)); \ + SET_ERROR_IF(index >= CODEC_MAX_VERTEX_ATTRIBUTES, GL_INVALID_VALUE); \ void GL2Encoder::s_glVertexAttribPointer(void *self, GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * ptr) { @@ -719,6 +793,14 @@ void GL2Encoder::s_glGetIntegerv(void *self, GLenum param, GLint *ptr) ctx->m_max_vertexTextureImageUnits = *ptr; } break; + case GL_MAX_ARRAY_TEXTURE_LAYERS: + if (ctx->m_max_array_texture_layers != 0) { + *ptr = ctx->m_max_array_texture_layers; + } else { + ctx->safe_glGetIntegerv(param, ptr); + ctx->m_max_array_texture_layers = *ptr; + } + break; case GL_MAX_TEXTURE_IMAGE_UNITS: if (ctx->m_max_textureImageUnits != 0) { *ptr = ctx->m_max_textureImageUnits; @@ -738,10 +820,7 @@ void GL2Encoder::s_glGetIntegerv(void *self, GLenum param, GLint *ptr) case GL_MAX_VERTEX_ATTRIBS: SET_ERROR_IF(!state, GL_INVALID_OPERATION); - if (!state->getClientStateParameter<GLint>(param, ptr)) { - ctx->safe_glGetIntegerv(param, ptr); - state->setMaxVertexAttribs(*ptr); - } + *ptr = CODEC_MAX_VERTEX_ATTRIBUTES; break; case GL_MAX_VERTEX_ATTRIB_STRIDE: if (ctx->m_max_vertexAttribStride != 0) { @@ -773,6 +852,13 @@ void GL2Encoder::s_glGetIntegerv(void *self, GLenum param, GLint *ptr) } else { ctx->safe_glGetIntegerv(param, ptr); ctx->m_max_textureSize = *ptr; + if (ctx->m_max_textureSize > 0) { + uint32_t current = 1; + while (current < ctx->m_max_textureSize) { + ++ctx->m_log2MaxTextureSize; + current = current << 1; + } + } } break; case GL_MAX_3D_TEXTURE_SIZE: @@ -1046,10 +1132,8 @@ void GL2Encoder::s_glDisableVertexAttribArray(void *self, GLuint index) void GL2Encoder::s_glGetVertexAttribiv(void *self, GLuint index, GLenum pname, GLint *params) { GL2Encoder *ctx = (GL2Encoder *)self; - assert(ctx->m_state); - GLint maxIndex; - ctx->glGetIntegerv(self, GL_MAX_VERTEX_ATTRIBS, &maxIndex); - SET_ERROR_IF(!(index < maxIndex), GL_INVALID_VALUE); + VALIDATE_VERTEX_ATTRIB_INDEX(index); + SET_ERROR_IF(!GLESv2Validation::allowedGetVertexAttrib(pname), GL_INVALID_ENUM); if (!ctx->m_state->getVertexAttribParameter<GLint>(index, pname, params)) { ctx->m_glGetVertexAttribiv_enc(self, index, pname, params); @@ -1059,10 +1143,8 @@ void GL2Encoder::s_glGetVertexAttribiv(void *self, GLuint index, GLenum pname, G void GL2Encoder::s_glGetVertexAttribfv(void *self, GLuint index, GLenum pname, GLfloat *params) { GL2Encoder *ctx = (GL2Encoder *)self; - assert(ctx->m_state); - GLint maxIndex; - ctx->glGetIntegerv(self, GL_MAX_VERTEX_ATTRIBS, &maxIndex); - SET_ERROR_IF(!(index < maxIndex), GL_INVALID_VALUE); + VALIDATE_VERTEX_ATTRIB_INDEX(index); + SET_ERROR_IF(!GLESv2Validation::allowedGetVertexAttrib(pname), GL_INVALID_ENUM); if (!ctx->m_state->getVertexAttribParameter<GLfloat>(index, pname, params)) { ctx->m_glGetVertexAttribfv_enc(self, index, pname, params); @@ -1073,9 +1155,7 @@ void GL2Encoder::s_glGetVertexAttribPointerv(void *self, GLuint index, GLenum pn { GL2Encoder *ctx = (GL2Encoder *)self; if (ctx->m_state == NULL) return; - GLint maxIndex; - ctx->glGetIntegerv(self, GL_MAX_VERTEX_ATTRIBS, &maxIndex); - SET_ERROR_IF(!(index < maxIndex), GL_INVALID_VALUE); + VALIDATE_VERTEX_ATTRIB_INDEX(index); SET_ERROR_IF(pname != GL_VERTEX_ATTRIB_ARRAY_POINTER, GL_INVALID_ENUM); (void)pname; @@ -1239,20 +1319,24 @@ void GL2Encoder::sendVertexAttributes(GLint first, GLsizei count, bool hasClient } if (state.elementSize == 0) { // The vertex attribute array is uninitialized. Abandon it. - ALOGE("a vertex attribute array is uninitialized. Skipping corresponding vertex attribute."); this->m_glDisableVertexAttribArray_enc(this, i); continue; } m_glEnableVertexAttribArray_enc(this, i); if (datalen && (!offset || !((unsigned char*)offset + firstIndex))) { - ALOGD("%s: bad offset / len!!!!!", __FUNCTION__); continue; } + + unsigned char* data = (unsigned char*)offset + firstIndex; + if (!m_state->isAttribIndexUsedByProgram(i)) { + continue; + } + if (state.isInt) { - this->glVertexAttribIPointerDataAEMU(this, i, state.size, state.type, stride, (unsigned char *)offset + firstIndex, datalen); + this->glVertexAttribIPointerDataAEMU(this, i, state.size, state.type, stride, data, datalen); } else { - this->glVertexAttribPointerData(this, i, state.size, state.type, state.normalized, stride, (unsigned char *)offset + firstIndex, datalen); + this->glVertexAttribPointerData(this, i, state.size, state.type, state.normalized, stride, data, datalen); } } else { const BufferData* buf = m_shared->getBufferData(bufferObject); @@ -1267,20 +1351,24 @@ void GL2Encoder::sendVertexAttributes(GLint first, GLsizei count, bool hasClient if (buf && firstIndex >= 0 && firstIndex + bufLen <= buf->m_size) { if (hasClientArrays) { m_glEnableVertexAttribArray_enc(this, i); - if (state.isInt) { - this->glVertexAttribIPointerOffsetAEMU(this, i, state.size, state.type, stride, offset + firstIndex); - } else { - this->glVertexAttribPointerOffset(this, i, state.size, state.type, state.normalized, stride, offset + firstIndex); + if (firstIndex) { + if (state.isInt) { + this->glVertexAttribIPointerOffsetAEMU(this, i, state.size, state.type, stride, offset + firstIndex); + } else { + this->glVertexAttribPointerOffset(this, i, state.size, state.type, state.normalized, stride, offset + firstIndex); + } } } } else { - ALOGE("a vertex attribute index out of boundary is detected. Skipping corresponding vertex attribute. buf=%p", buf); - if (buf) { - ALOGE("Out of bounds vertex attribute info: " - "clientArray? %d attribute %d vbo %u allocedBufferSize %u bufferDataSpecified? %d wantedStart %u wantedEnd %u", - hasClientArrays, i, bufferObject, (unsigned int)buf->m_size, buf != NULL, firstIndex, firstIndex + bufLen); + if (m_state->isAttribIndexUsedByProgram(i)) { + ALOGE("a vertex attribute index out of boundary is detected. Skipping corresponding vertex attribute. buf=%p", buf); + if (buf) { + ALOGE("Out of bounds vertex attribute info: " + "clientArray? %d attribute %d vbo %u allocedBufferSize %u bufferDataSpecified? %d wantedStart %u wantedEnd %u", + hasClientArrays, i, bufferObject, (unsigned int)buf->m_size, buf != NULL, firstIndex, firstIndex + bufLen); + } + m_glDisableVertexAttribArray_enc(this, i); } - m_glDisableVertexAttribArray_enc(this, i); } } } else { @@ -1324,6 +1412,7 @@ void GL2Encoder::s_glDrawArrays(void *self, GLenum mode, GLint first, GLsizei co assert(ctx->m_state != NULL); SET_ERROR_IF(!isValidDrawMode(mode), GL_INVALID_ENUM); SET_ERROR_IF(count < 0, GL_INVALID_VALUE); + SET_ERROR_IF(ctx->m_state->checkFramebufferCompleteness(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, GL_INVALID_FRAMEBUFFER_OPERATION); bool has_client_vertex_arrays = false; bool has_indirect_arrays = false; @@ -1338,6 +1427,8 @@ void GL2Encoder::s_glDrawArrays(void *self, GLenum mode, GLint first, GLsizei co } else { ctx->m_glDrawArrays_enc(ctx, mode, first, count); } + + ctx->m_state->postDraw(); } @@ -1350,6 +1441,7 @@ void GL2Encoder::s_glDrawElements(void *self, GLenum mode, GLsizei count, GLenum SET_ERROR_IF(count < 0, GL_INVALID_VALUE); SET_ERROR_IF(!(type == GL_UNSIGNED_BYTE || type == GL_UNSIGNED_SHORT || type == GL_UNSIGNED_INT), GL_INVALID_ENUM); SET_ERROR_IF(ctx->m_state->getTransformFeedbackActiveUnpaused(), GL_INVALID_OPERATION); + SET_ERROR_IF(ctx->m_state->checkFramebufferCompleteness(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, GL_INVALID_FRAMEBUFFER_OPERATION); bool has_client_vertex_arrays = false; bool has_indirect_arrays = false; @@ -1428,6 +1520,8 @@ void GL2Encoder::s_glDrawElements(void *self, GLenum mode, GLsizei count, GLenum ALOGE("glDrawElements: direct index & direct buffer data - will be implemented in later versions;\n"); } } + + ctx->m_state->postDraw(); } void GL2Encoder::s_glDrawArraysNullAEMU(void *self, GLenum mode, GLint first, GLsizei count) @@ -1436,6 +1530,7 @@ void GL2Encoder::s_glDrawArraysNullAEMU(void *self, GLenum mode, GLint first, GL assert(ctx->m_state != NULL); SET_ERROR_IF(!isValidDrawMode(mode), GL_INVALID_ENUM); SET_ERROR_IF(count < 0, GL_INVALID_VALUE); + SET_ERROR_IF(ctx->m_state->checkFramebufferCompleteness(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, GL_INVALID_FRAMEBUFFER_OPERATION); bool has_client_vertex_arrays = false; bool has_indirect_arrays = false; @@ -1451,6 +1546,7 @@ void GL2Encoder::s_glDrawArraysNullAEMU(void *self, GLenum mode, GLint first, GL ctx->m_glDrawArraysNullAEMU_enc(ctx, mode, first, count); } ctx->flushDrawCall(); + ctx->m_state->postDraw(); } void GL2Encoder::s_glDrawElementsNullAEMU(void *self, GLenum mode, GLsizei count, GLenum type, const void *indices) @@ -1462,6 +1558,7 @@ void GL2Encoder::s_glDrawElementsNullAEMU(void *self, GLenum mode, GLsizei count SET_ERROR_IF(count < 0, GL_INVALID_VALUE); SET_ERROR_IF(!(type == GL_UNSIGNED_BYTE || type == GL_UNSIGNED_SHORT || type == GL_UNSIGNED_INT), GL_INVALID_ENUM); SET_ERROR_IF(ctx->m_state->getTransformFeedbackActiveUnpaused(), GL_INVALID_OPERATION); + SET_ERROR_IF(ctx->m_state->checkFramebufferCompleteness(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, GL_INVALID_FRAMEBUFFER_OPERATION); bool has_client_vertex_arrays = false; bool has_indirect_arrays = false; @@ -1544,6 +1641,7 @@ void GL2Encoder::s_glDrawElementsNullAEMU(void *self, GLenum mode, GLsizei count ALOGE("glDrawElementsNullAEMU: direct index & direct buffer data - will be implemented in later versions;\n"); } } + ctx->m_state->postDraw(); } GLint * GL2Encoder::getCompressedTextureFormats() @@ -1795,41 +1893,96 @@ void GL2Encoder::s_glLinkProgram(void * self, GLuint program) SET_ERROR_IF(!isProgram && !ctx->m_shared->isShader(program), GL_INVALID_VALUE); SET_ERROR_IF(!isProgram, GL_INVALID_OPERATION); + if (program == ctx->m_state->currentProgram() || + (!ctx->m_state->currentProgram() && + (program == ctx->m_state->currentShaderProgram()))) { + SET_ERROR_IF(ctx->m_state->getTransformFeedbackActive(), GL_INVALID_OPERATION); + } + ctx->m_glLinkProgram_enc(self, program); GLint linkStatus = 0; - ctx->glGetProgramiv(self, program, GL_LINK_STATUS, &linkStatus); + ctx->m_glGetProgramiv_enc(self, program, GL_LINK_STATUS, &linkStatus); + ctx->m_shared->setProgramLinkStatus(program, linkStatus); if (!linkStatus) { return; } - //get number of active uniforms in the program + // get number of active uniforms and attributes in the program GLint numUniforms=0; - ctx->glGetProgramiv(self, program, GL_ACTIVE_UNIFORMS, &numUniforms); - ctx->m_shared->initProgramData(program,numUniforms); + GLint numAttributes=0; + ctx->m_glGetProgramiv_enc(self, program, GL_ACTIVE_UNIFORMS, &numUniforms); + ctx->m_glGetProgramiv_enc(self, program, GL_ACTIVE_ATTRIBUTES, &numAttributes); + ctx->m_shared->initProgramData(program,numUniforms,numAttributes); //get the length of the longest uniform name GLint maxLength=0; - ctx->glGetProgramiv(self, program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &maxLength); + GLint maxAttribLength=0; + ctx->m_glGetProgramiv_enc(self, program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &maxLength); + ctx->m_glGetProgramiv_enc(self, program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &maxAttribLength); GLint size; GLenum type; - GLchar *name = new GLchar[maxLength+1]; + size_t bufLen = maxLength > maxAttribLength ? maxLength : maxAttribLength; + GLchar *name = new GLchar[bufLen + 1]; GLint location; //for each active uniform, get its size and starting location. for (GLint i=0 ; i<numUniforms ; ++i) { - ctx->glGetActiveUniform(self, program, i, maxLength, NULL, &size, &type, name); + ctx->m_glGetActiveUniform_enc(self, program, i, maxLength, NULL, &size, &type, name); location = ctx->m_glGetUniformLocation_enc(self, program, name); ctx->m_shared->setProgramIndexInfo(program, i, location, size, type, name); } + for (GLint i = 0; i < numAttributes; ++i) { + ctx->m_glGetActiveAttrib_enc(self, program, i, maxAttribLength, NULL, &size, &type, name); + location = ctx->m_glGetAttribLocation_enc(self, program, name); + ctx->m_shared->setProgramAttribInfo(program, i, location, size, type, name); + } + + if (ctx->majorVersion() > 2) { + GLint numBlocks; + ctx->m_glGetProgramiv_enc(ctx, program, GL_ACTIVE_UNIFORM_BLOCKS, &numBlocks); + ctx->m_shared->setActiveUniformBlockCountForProgram(program, numBlocks); + + GLint tfVaryingsCount; + ctx->m_glGetProgramiv_enc(ctx, program, GL_TRANSFORM_FEEDBACK_VARYINGS, &tfVaryingsCount); + ctx->m_shared->setTransformFeedbackVaryingsCountForProgram(program, tfVaryingsCount); + } + delete[] name; } +#define VALIDATE_PROGRAM_NAME(program) \ + bool isShaderOrProgramObject = \ + ctx->m_shared->isShaderOrProgramObject(program); \ + bool isProgram = \ + ctx->m_shared->isProgram(program); \ + SET_ERROR_IF(!isShaderOrProgramObject, GL_INVALID_VALUE); \ + SET_ERROR_IF(!isProgram, GL_INVALID_OPERATION); \ + +#define VALIDATE_PROGRAM_NAME_RET(program, ret) \ + bool isShaderOrProgramObject = \ + ctx->m_shared->isShaderOrProgramObject(program); \ + bool isProgram = \ + ctx->m_shared->isProgram(program); \ + RET_AND_SET_ERROR_IF(!isShaderOrProgramObject, GL_INVALID_VALUE, ret); \ + RET_AND_SET_ERROR_IF(!isProgram, GL_INVALID_OPERATION, ret); \ + +#define VALIDATE_SHADER_NAME(shader) \ + bool isShaderOrProgramObject = \ + ctx->m_shared->isShaderOrProgramObject(shader); \ + bool isShader = \ + ctx->m_shared->isShader(shader); \ + SET_ERROR_IF(!isShaderOrProgramObject, GL_INVALID_VALUE); \ + SET_ERROR_IF(!isShader, GL_INVALID_OPERATION); \ + void GL2Encoder::s_glDeleteProgram(void *self, GLuint program) { GL2Encoder *ctx = (GL2Encoder*)self; + + VALIDATE_PROGRAM_NAME(program); + ctx->m_glDeleteProgram_enc(self, program); ctx->m_shared->deleteProgramData(program); @@ -1841,9 +1994,9 @@ void GL2Encoder::s_glGetUniformiv(void *self, GLuint program, GLint location, GL SET_ERROR_IF(!ctx->m_shared->isShaderOrProgramObject(program), GL_INVALID_VALUE); SET_ERROR_IF(!ctx->m_shared->isProgram(program), GL_INVALID_OPERATION); SET_ERROR_IF(!ctx->m_shared->isProgramInitialized(program), GL_INVALID_OPERATION); - GLint hostLoc = location; - SET_ERROR_IF(ctx->m_shared->getProgramUniformType(program,hostLoc)==0, GL_INVALID_OPERATION); - ctx->m_glGetUniformiv_enc(self, program, hostLoc, params); + SET_ERROR_IF(ctx->m_shared->getProgramUniformType(program,location)==0, GL_INVALID_OPERATION); + SET_ERROR_IF(!ctx->m_shared->isProgramUniformLocationValid(program,location), GL_INVALID_OPERATION); + ctx->m_glGetUniformiv_enc(self, program, location, params); } void GL2Encoder::s_glGetUniformfv(void *self, GLuint program, GLint location, GLfloat* params) { @@ -1851,9 +2004,9 @@ void GL2Encoder::s_glGetUniformfv(void *self, GLuint program, GLint location, GL SET_ERROR_IF(!ctx->m_shared->isShaderOrProgramObject(program), GL_INVALID_VALUE); SET_ERROR_IF(!ctx->m_shared->isProgram(program), GL_INVALID_OPERATION); SET_ERROR_IF(!ctx->m_shared->isProgramInitialized(program), GL_INVALID_OPERATION); - GLint hostLoc = location; - SET_ERROR_IF(ctx->m_shared->getProgramUniformType(program,hostLoc)==0, GL_INVALID_OPERATION); - ctx->m_glGetUniformfv_enc(self, program, hostLoc, params); + SET_ERROR_IF(ctx->m_shared->getProgramUniformType(program,location)==0, GL_INVALID_OPERATION); + SET_ERROR_IF(!ctx->m_shared->isProgramUniformLocationValid(program,location), GL_INVALID_OPERATION); + ctx->m_glGetUniformfv_enc(self, program, location, params); } GLuint GL2Encoder::s_glCreateProgram(void * self) @@ -1871,7 +2024,7 @@ GLuint GL2Encoder::s_glCreateShader(void *self, GLenum shaderType) RET_AND_SET_ERROR_IF(!GLESv2Validation::shaderType(ctx, shaderType), GL_INVALID_ENUM, 0); GLuint shader = ctx->m_glCreateShader_enc(self, shaderType); if (shader != 0) { - if (!ctx->m_shared->addShaderData(shader)) { + if (!ctx->m_shared->addShaderData(shader, shaderType)) { ctx->m_glDeleteShader_enc(self, shader); return 0; } @@ -1883,6 +2036,7 @@ void GL2Encoder::s_glGetAttachedShaders(void *self, GLuint program, GLsizei maxC GLsizei* count, GLuint* shaders) { GL2Encoder *ctx = (GL2Encoder*)self; + VALIDATE_PROGRAM_NAME(program); SET_ERROR_IF(maxCount < 0, GL_INVALID_VALUE); ctx->m_glGetAttachedShaders_enc(self, program, maxCount, count, shaders); } @@ -1891,6 +2045,7 @@ void GL2Encoder::s_glGetShaderSource(void *self, GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source) { GL2Encoder *ctx = (GL2Encoder*)self; + VALIDATE_SHADER_NAME(shader); SET_ERROR_IF(bufsize < 0, GL_INVALID_VALUE); ctx->m_glGetShaderSource_enc(self, shader, bufsize, length, source); ShaderData* shaderData = ctx->m_shared->getShaderData(shader); @@ -1916,6 +2071,7 @@ void GL2Encoder::s_glGetShaderInfoLog(void *self, GLuint shader, GLsizei bufsize GLsizei* length, GLchar* infolog) { GL2Encoder *ctx = (GL2Encoder*)self; + VALIDATE_SHADER_NAME(shader); SET_ERROR_IF(bufsize < 0, GL_INVALID_VALUE); ctx->m_glGetShaderInfoLog_enc(self, shader, bufsize, length, infolog); } @@ -1924,6 +2080,7 @@ void GL2Encoder::s_glGetProgramInfoLog(void *self, GLuint program, GLsizei bufsi GLsizei* length, GLchar* infolog) { GL2Encoder *ctx = (GL2Encoder*)self; + VALIDATE_PROGRAM_NAME(program); SET_ERROR_IF(bufsize < 0, GL_INVALID_VALUE); ctx->m_glGetProgramInfoLog_enc(self, program, bufsize, length, infolog); } @@ -1931,6 +2088,15 @@ void GL2Encoder::s_glGetProgramInfoLog(void *self, GLuint program, GLsizei bufsi void GL2Encoder::s_glDeleteShader(void *self, GLenum shader) { GL2Encoder *ctx = (GL2Encoder*)self; + + bool isShaderOrProgramObject = + ctx->m_shared->isShaderOrProgramObject(shader); + bool isShader = + ctx->m_shared->isShader(shader); + + SET_ERROR_IF(isShaderOrProgramObject && !isShader, GL_INVALID_OPERATION); + SET_ERROR_IF(!isShaderOrProgramObject && !isShader, GL_INVALID_VALUE); + ctx->m_glDeleteShader_enc(self,shader); ctx->m_shared->unrefShaderData(shader); } @@ -1938,15 +2104,36 @@ void GL2Encoder::s_glDeleteShader(void *self, GLenum shader) void GL2Encoder::s_glAttachShader(void *self, GLuint program, GLuint shader) { GL2Encoder *ctx = (GL2Encoder*)self; + bool programIsShaderOrProgram = ctx->m_shared->isShaderOrProgramObject(program); + bool programIsProgram = ctx->m_shared->isProgram(program); + bool shaderIsShaderOrProgram = ctx->m_shared->isShaderOrProgramObject(shader); + bool shaderIsShader = ctx->m_shared->isShader(shader); + + SET_ERROR_IF(!programIsShaderOrProgram, GL_INVALID_VALUE); + SET_ERROR_IF(!shaderIsShaderOrProgram, GL_INVALID_VALUE); + SET_ERROR_IF(!programIsProgram, GL_INVALID_OPERATION); + SET_ERROR_IF(!shaderIsShader, GL_INVALID_OPERATION); + SET_ERROR_IF(!ctx->m_shared->attachShader(program, shader), GL_INVALID_OPERATION); + ctx->m_glAttachShader_enc(self, program, shader); - ctx->m_shared->attachShader(program, shader); } void GL2Encoder::s_glDetachShader(void *self, GLuint program, GLuint shader) { GL2Encoder *ctx = (GL2Encoder*)self; + + bool programIsShaderOrProgram = ctx->m_shared->isShaderOrProgramObject(program); + bool programIsProgram = ctx->m_shared->isProgram(program); + bool shaderIsShaderOrProgram = ctx->m_shared->isShaderOrProgramObject(shader); + bool shaderIsShader = ctx->m_shared->isShader(shader); + + SET_ERROR_IF(!programIsShaderOrProgram, GL_INVALID_VALUE); + SET_ERROR_IF(!shaderIsShaderOrProgram, GL_INVALID_VALUE); + SET_ERROR_IF(!programIsProgram, GL_INVALID_OPERATION); + SET_ERROR_IF(!shaderIsShader, GL_INVALID_OPERATION); + SET_ERROR_IF(!ctx->m_shared->detachShader(program, shader), GL_INVALID_OPERATION); + ctx->m_glDetachShader_enc(self, program, shader); - ctx->m_shared->detachShader(program, shader); } int sArrIndexOfUniformExpr(const char* name, int* err) { @@ -1966,6 +2153,16 @@ int GL2Encoder::s_glGetUniformLocation(void *self, GLuint program, const GLchar { if (!name) return -1; GL2Encoder *ctx = (GL2Encoder*)self; + + bool isShaderOrProgramObject = + ctx->m_shared->isShaderOrProgramObject(program); + bool isProgram = + ctx->m_shared->isProgram(program); + + RET_AND_SET_ERROR_IF(!isShaderOrProgramObject, GL_INVALID_VALUE, -1); + RET_AND_SET_ERROR_IF(!isProgram, GL_INVALID_OPERATION, -1); + RET_AND_SET_ERROR_IF(!ctx->m_shared->getProgramLinkStatus(program), GL_INVALID_OPERATION, -1); + return ctx->m_glGetUniformLocation_enc(self, program, name); } @@ -2026,26 +2223,35 @@ void GL2Encoder::s_glUseProgram(void *self, GLuint program) SET_ERROR_IF(program && !shared->isShaderOrProgramObject(program), GL_INVALID_VALUE); SET_ERROR_IF(program && !shared->isProgram(program), GL_INVALID_OPERATION); + SET_ERROR_IF(ctx->m_state->getTransformFeedbackActiveUnpaused(), GL_INVALID_OPERATION); ctx->m_glUseProgram_enc(self, program); + + GLuint currProgram = ctx->m_state->currentProgram(); + ctx->m_shared->onUseProgram(currProgram, program); + ctx->m_state->setCurrentProgram(program); ctx->m_state->setCurrentShaderProgram(program); - ctx->updateHostTexture2DBindingsFromProgramData(program); + + if (program) { + ctx->m_state->currentUniformValidationInfo = ctx->m_shared->getUniformValidationInfo(program); + ctx->m_state->currentAttribValidationInfo = ctx->m_shared->getAttribValidationInfo(program); + } } void GL2Encoder::s_glUniform1f(void *self , GLint location, GLfloat x) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform1f_enc(self, hostLoc, x); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 1 /* columns */, 1 /* rows */, location, 1 /* count */, ctx->getErrorPtr()); + ctx->m_glUniform1f_enc(self, location, x); } void GL2Encoder::s_glUniform1fv(void *self , GLint location, GLsizei count, const GLfloat* v) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform1fv_enc(self, hostLoc, count, v); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 1 /* columns */, 1 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniform1fv_enc(self, location, count, v); } void GL2Encoder::s_glUniform1i(void *self , GLint location, GLint x) @@ -2054,8 +2260,9 @@ void GL2Encoder::s_glUniform1i(void *self , GLint location, GLint x) GLClientState* state = ctx->m_state; GLSharedGroupPtr shared = ctx->m_shared; - GLint hostLoc = location; - ctx->m_glUniform1i_enc(self, hostLoc, x); + ctx->m_state->validateUniform(false /* is float? */, false /* is unsigned? */, 1 /* columns */, 1 /* rows */, location, 1 /* count */, ctx->getErrorPtr()); + + ctx->m_glUniform1i_enc(self, location, x); GLenum target; if (shared->setSamplerUniform(state->currentShaderProgram(), location, x, &target)) { @@ -2070,113 +2277,113 @@ void GL2Encoder::s_glUniform1i(void *self , GLint location, GLint x) void GL2Encoder::s_glUniform1iv(void *self , GLint location, GLsizei count, const GLint* v) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform1iv_enc(self, hostLoc, count, v); + ctx->m_state->validateUniform(false /* is float? */, false /* is unsigned? */, 1 /* columns */, 1 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniform1iv_enc(self, location, count, v); } void GL2Encoder::s_glUniform2f(void *self , GLint location, GLfloat x, GLfloat y) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform2f_enc(self, hostLoc, x, y); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 2 /* columns */, 1 /* rows */, location, 1 /* count */, ctx->getErrorPtr()); + ctx->m_glUniform2f_enc(self, location, x, y); } void GL2Encoder::s_glUniform2fv(void *self , GLint location, GLsizei count, const GLfloat* v) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform2fv_enc(self, hostLoc, count, v); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 2 /* columns */, 1 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniform2fv_enc(self, location, count, v); } void GL2Encoder::s_glUniform2i(void *self , GLint location, GLint x, GLint y) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform2i_enc(self, hostLoc, x, y); + ctx->m_state->validateUniform(false /* is float? */, false /* is unsigned? */, 2 /* columns */, 1 /* rows */, location, 1 /* count */, ctx->getErrorPtr()); + ctx->m_glUniform2i_enc(self, location, x, y); } void GL2Encoder::s_glUniform2iv(void *self , GLint location, GLsizei count, const GLint* v) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform2iv_enc(self, hostLoc, count, v); + ctx->m_state->validateUniform(false /* is float? */, false /* is unsigned? */, 2 /* columns */, 1 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniform2iv_enc(self, location, count, v); } void GL2Encoder::s_glUniform3f(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform3f_enc(self, hostLoc, x, y, z); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 3 /* columns */, 1 /* rows */, location, 1 /* count */, ctx->getErrorPtr()); + ctx->m_glUniform3f_enc(self, location, x, y, z); } void GL2Encoder::s_glUniform3fv(void *self , GLint location, GLsizei count, const GLfloat* v) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform3fv_enc(self, hostLoc, count, v); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 3 /* columns */, 1 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniform3fv_enc(self, location, count, v); } void GL2Encoder::s_glUniform3i(void *self , GLint location, GLint x, GLint y, GLint z) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform3i_enc(self, hostLoc, x, y, z); + ctx->m_state->validateUniform(false /* is float? */, false /* is unsigned? */, 3 /* columns */, 1 /* rows */, location, 1 /* count */, ctx->getErrorPtr()); + ctx->m_glUniform3i_enc(self, location, x, y, z); } void GL2Encoder::s_glUniform3iv(void *self , GLint location, GLsizei count, const GLint* v) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform3iv_enc(self, hostLoc, count, v); + ctx->m_state->validateUniform(false /* is float? */, false /* is unsigned? */, 3 /* columns */, 1 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniform3iv_enc(self, location, count, v); } void GL2Encoder::s_glUniform4f(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform4f_enc(self, hostLoc, x, y, z, w); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 4 /* columns */, 1 /* rows */, location, 1 /* count */, ctx->getErrorPtr()); + ctx->m_glUniform4f_enc(self, location, x, y, z, w); } void GL2Encoder::s_glUniform4fv(void *self , GLint location, GLsizei count, const GLfloat* v) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform4fv_enc(self, hostLoc, count, v); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 4 /* columns */, 1 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniform4fv_enc(self, location, count, v); } void GL2Encoder::s_glUniform4i(void *self , GLint location, GLint x, GLint y, GLint z, GLint w) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform4i_enc(self, hostLoc, x, y, z, w); + ctx->m_state->validateUniform(false /* is float? */, false /* is unsigned? */, 4 /* columns */, 1 /* rows */, location, 1 /* count */, ctx->getErrorPtr()); + ctx->m_glUniform4i_enc(self, location, x, y, z, w); } void GL2Encoder::s_glUniform4iv(void *self , GLint location, GLsizei count, const GLint* v) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform4iv_enc(self, hostLoc, count, v); + ctx->m_state->validateUniform(false /* is float? */, false /* is unsigned? */, 4 /* columns */, 1 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniform4iv_enc(self, location, count, v); } void GL2Encoder::s_glUniformMatrix2fv(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniformMatrix2fv_enc(self, hostLoc, count, transpose, value); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 2 /* columns */, 2 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniformMatrix2fv_enc(self, location, count, transpose, value); } void GL2Encoder::s_glUniformMatrix3fv(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniformMatrix3fv_enc(self, hostLoc, count, transpose, value); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 3 /* columns */, 3 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniformMatrix3fv_enc(self, location, count, transpose, value); } void GL2Encoder::s_glUniformMatrix4fv(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniformMatrix4fv_enc(self, hostLoc, count, transpose, value); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 4 /* columns */, 4 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniformMatrix4fv_enc(self, location, count, transpose, value); } void GL2Encoder::s_glActiveTexture(void* self, GLenum texture) @@ -2185,6 +2392,10 @@ void GL2Encoder::s_glActiveTexture(void* self, GLenum texture) GLClientState* state = ctx->m_state; GLenum err; + GLint maxCombinedUnits; + ctx->glGetIntegerv(ctx, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &maxCombinedUnits); + + SET_ERROR_IF(texture - GL_TEXTURE0 > maxCombinedUnits - 1, GL_INVALID_ENUM); SET_ERROR_IF((err = state->setActiveTextureUnit(texture)) != GL_NO_ERROR, err); ctx->m_glActiveTexture_enc(ctx, texture); @@ -2241,6 +2452,10 @@ void GL2Encoder::s_glGetTexParameterfv(void* self, { GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureParams(ctx, pname), GL_INVALID_ENUM); + if (!params) return; + if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) { ctx->override2DTextureTarget(target); ctx->m_glGetTexParameterfv_enc(ctx, GL_TEXTURE_2D, pname, params); @@ -2255,6 +2470,11 @@ void GL2Encoder::s_glGetTexParameteriv(void* self, { GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureParams(ctx, pname), GL_INVALID_ENUM); + + if (!params) return; + switch (pname) { case GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES: *params = 1; @@ -2296,6 +2516,9 @@ void GL2Encoder::s_glTexParameterf(void* self, SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES && !isValidTextureExternalParam(pname, (GLenum)param)), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureParams(ctx, pname), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureParamValue(ctx, pname, (GLint)param, param, (GLenum)param), GL_INVALID_ENUM); if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) { ctx->override2DTextureTarget(target); @@ -2314,6 +2537,11 @@ void GL2Encoder::s_glTexParameterfv(void* self, SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES && !isValidTextureExternalParam(pname, (GLenum)params[0])), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureParams(ctx, pname), GL_INVALID_ENUM); + SET_ERROR_IF(!params, GL_INVALID_VALUE); + GLfloat param = *params; + SET_ERROR_IF(!GLESv2Validation::textureParamValue(ctx, pname, (GLint)param, param, (GLenum)param), GL_INVALID_ENUM); if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) { ctx->override2DTextureTarget(target); @@ -2332,6 +2560,9 @@ void GL2Encoder::s_glTexParameteri(void* self, SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES && !isValidTextureExternalParam(pname, (GLenum)param)), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureParams(ctx, pname), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureParamValue(ctx, pname, param, (GLfloat)param, (GLenum)param), GL_INVALID_ENUM); if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) { ctx->override2DTextureTarget(target); @@ -2359,6 +2590,8 @@ void GL2Encoder::s_glTexImage2D(void* self, GLenum target, GLint level, SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, target), GL_INVALID_ENUM); SET_ERROR_IF(!GLESv2Validation::pixelType(ctx, type), GL_INVALID_ENUM); SET_ERROR_IF(!GLESv2Validation::pixelFormat(ctx, format), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::pixelFormat(ctx, internalformat) && !GLESv2Validation::pixelInternalFormat(internalformat), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::pixelSizedFormat(ctx, internalformat, format, type), GL_INVALID_OPERATION); // If unpack buffer is nonzero, verify unmapped state. SET_ERROR_IF(ctx->isBufferTargetMapped(GL_PIXEL_UNPACK_BUFFER), GL_INVALID_OPERATION); @@ -2375,6 +2608,7 @@ void GL2Encoder::s_glTexImage2D(void* self, GLenum target, GLint level, SET_ERROR_IF(height > max_texture_size, GL_INVALID_VALUE); SET_ERROR_IF(GLESv2Validation::isCubeMapTarget(target) && width > max_cube_map_texture_size, GL_INVALID_VALUE); SET_ERROR_IF(GLESv2Validation::isCubeMapTarget(target) && height > max_cube_map_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(GLESv2Validation::isCubeMapTarget(target) && (width != height), GL_INVALID_VALUE); SET_ERROR_IF(border != 0, GL_INVALID_VALUE); // If unpack buffer is nonzero, verify buffer data fits and is evenly divisible by the type. SET_ERROR_IF(ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER) && @@ -2405,7 +2639,8 @@ void GL2Encoder::s_glTexImage2D(void* self, GLenum target, GLint level, state->setBoundTextureInternalFormat(stateTarget, internalformat); state->setBoundTextureFormat(stateTarget, format); state->setBoundTextureType(stateTarget, type); - state->setBoundTextureDims(stateTarget, level, width, height, 1); + state->setBoundTextureDims(stateTarget, target, level, width, height, 1); + state->addTextureCubeMapImage(stateTarget, target); if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) { ctx->override2DTextureTarget(target); @@ -2466,14 +2701,15 @@ void GL2Encoder::s_glTexSubImage2D(void* self, GLenum target, GLint level, } // If unpack buffer is nonzero, verify buffer data fits and is evenly divisible by the type. + SET_ERROR_IF(ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER) && ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER) && - (state->pboNeededDataSize(width, height, 1, format, type, 0) > + (state->pboNeededDataSize(width, height, 1, format, type, 0) + (uintptr_t)pixels > ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER)->m_size), GL_INVALID_OPERATION); SET_ERROR_IF(ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER) && ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER) && - (ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER)->m_size % + ((uintptr_t)pixels % glSizeof(type)), GL_INVALID_OPERATION); SET_ERROR_IF(!ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER) && !pixels, GL_INVALID_OPERATION); @@ -2504,6 +2740,35 @@ void GL2Encoder::s_glCopyTexImage2D(void* self, GLenum target, GLint level, GL2Encoder* ctx = (GL2Encoder*)self; GLClientState* state = ctx->m_state; + SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::pixelFormat(ctx, internalformat) && !GLESv2Validation::pixelInternalFormat(internalformat), GL_INVALID_ENUM); + GLint max_texture_size; + GLint max_cube_map_texture_size; + ctx->glGetIntegerv(ctx, GL_MAX_TEXTURE_SIZE, &max_texture_size); + ctx->glGetIntegerv(ctx, GL_MAX_CUBE_MAP_TEXTURE_SIZE, &max_cube_map_texture_size); + SET_ERROR_IF(level < 0, GL_INVALID_VALUE); + SET_ERROR_IF(level > ilog2(max_texture_size), GL_INVALID_VALUE); + SET_ERROR_IF((target == GL_TEXTURE_CUBE_MAP) && + (level > ilog2(max_cube_map_texture_size)), GL_INVALID_VALUE); + SET_ERROR_IF(width < 0 || height < 0, GL_INVALID_VALUE); + SET_ERROR_IF(width > max_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(height > max_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(GLESv2Validation::isCubeMapTarget(target) && width > max_cube_map_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(GLESv2Validation::isCubeMapTarget(target) && height > max_cube_map_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(GLESv2Validation::isCubeMapTarget(target) && (width != height), GL_INVALID_VALUE); + SET_ERROR_IF(border != 0, GL_INVALID_VALUE); + + GLenum stateTarget = target; + if (target == GL_TEXTURE_CUBE_MAP_POSITIVE_X || + target == GL_TEXTURE_CUBE_MAP_POSITIVE_Y || + target == GL_TEXTURE_CUBE_MAP_POSITIVE_Z || + target == GL_TEXTURE_CUBE_MAP_NEGATIVE_X || + target == GL_TEXTURE_CUBE_MAP_NEGATIVE_Y || + target == GL_TEXTURE_CUBE_MAP_NEGATIVE_Z) + stateTarget = GL_TEXTURE_CUBE_MAP; + + SET_ERROR_IF(state->isBoundTextureImmutableFormat(target), GL_INVALID_OPERATION); + SET_ERROR_IF(ctx->glCheckFramebufferStatus(ctx, GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, GL_INVALID_FRAMEBUFFER_OPERATION); // This is needed to work around underlying OpenGL drivers @@ -2514,6 +2779,10 @@ void GL2Encoder::s_glCopyTexImage2D(void* self, GLenum target, GLint level, state->copyTexImageLuminanceCubeMapAMDWorkaround (target, level, internalformat); + state->setBoundTextureInternalFormat(stateTarget, internalformat); + state->setBoundTextureDims(stateTarget, target, level, width, height, 1); + state->addTextureCubeMapImage(stateTarget, target); + if (extraTarget) { ctx->m_glCopyTexImage2D_enc(ctx, extraTarget, level, internalformat, x, y, width, height, border); @@ -2521,9 +2790,6 @@ void GL2Encoder::s_glCopyTexImage2D(void* self, GLenum target, GLint level, ctx->m_glCopyTexImage2D_enc(ctx, target, level, internalformat, x, y, width, height, border); - - state->setBoundTextureInternalFormat(target, internalformat); - state->setBoundTextureDims(target, level, width, height, 1); } void GL2Encoder::s_glTexParameteriv(void* self, @@ -2534,6 +2800,11 @@ void GL2Encoder::s_glTexParameteriv(void* self, SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES && !isValidTextureExternalParam(pname, (GLenum)params[0])), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureParams(ctx, pname), GL_INVALID_ENUM); + SET_ERROR_IF(!params, GL_INVALID_VALUE); + GLint param = *params; + SET_ERROR_IF(!GLESv2Validation::textureParamValue(ctx, pname, param, (GLfloat)param, (GLenum)param), GL_INVALID_ENUM); if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) { ctx->override2DTextureTarget(target); @@ -2634,7 +2905,7 @@ void GL2Encoder::s_glDeleteRenderbuffers(void* self, for (int i = 0; i < n; i++) { state->detachRbo(renderbuffers[i]); } - // state->removeRenderbuffers(n, renderbuffers); + state->removeRenderbuffers(n, renderbuffers); } void GL2Encoder::s_glBindRenderbuffer(void* self, @@ -2660,8 +2931,14 @@ void GL2Encoder::s_glRenderbufferStorage(void* self, !GLESv2Validation::rboFormat(ctx, internalformat), GL_INVALID_ENUM); + SET_ERROR_IF(width < 0 || height < 0, GL_INVALID_VALUE); + GLint max_rb_size; + ctx->glGetIntegerv(ctx, GL_MAX_RENDERBUFFER_SIZE, &max_rb_size); + SET_ERROR_IF(width > max_rb_size || height > max_rb_size, GL_INVALID_VALUE); + state->setBoundRenderbufferFormat(internalformat); state->setBoundRenderbufferSamples(0); + state->setBoundRenderbufferDimensions(width, height); ctx->m_glRenderbufferStorage_enc(self, target, internalformat, width, height); @@ -2675,6 +2952,10 @@ void GL2Encoder::s_glFramebufferRenderbuffer(void* self, SET_ERROR_IF(!GLESv2Validation::framebufferTarget(ctx, target), GL_INVALID_ENUM); SET_ERROR_IF(!GLESv2Validation::framebufferAttachment(ctx, attachment), GL_INVALID_ENUM); + SET_ERROR_IF(GL_RENDERBUFFER != renderbuffertarget, GL_INVALID_ENUM); + SET_ERROR_IF(!state->getBoundFramebuffer(target), GL_INVALID_OPERATION); + SET_ERROR_IF(!state->isRenderbufferThatWasBound(renderbuffer), GL_INVALID_OPERATION); + state->attachRbo(target, attachment, renderbuffer); ctx->m_glFramebufferRenderbuffer_enc(self, target, attachment, renderbuffertarget, renderbuffer); @@ -2721,8 +3002,21 @@ void GL2Encoder::s_glFramebufferTexture2D(void* self, GLClientState* state = ctx->m_state; SET_ERROR_IF(!GLESv2Validation::framebufferTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, textarget), GL_INVALID_ENUM); SET_ERROR_IF(!GLESv2Validation::framebufferAttachment(ctx, attachment), GL_INVALID_ENUM); - state->attachTextureObject(target, attachment, texture); + SET_ERROR_IF(!state->getBoundFramebuffer(target), GL_INVALID_OPERATION); + SET_ERROR_IF(texture && !state->isTexture(texture), GL_INVALID_OPERATION); + SET_ERROR_IF(GLESv2Validation::isCubeMapTarget(textarget) && !state->isTextureCubeMap(texture), GL_INVALID_OPERATION); + SET_ERROR_IF(!GLESv2Validation::isCubeMapTarget(textarget) && state->isTextureCubeMap(texture), GL_INVALID_OPERATION); + SET_ERROR_IF((texture && (level < 0)), GL_INVALID_VALUE); + + if (target == GL_TEXTURE_2D) { + SET_ERROR_IF(level > ilog2(ctx->m_state->getMaxTextureSize()), GL_INVALID_VALUE); + } else { + SET_ERROR_IF(level > ilog2(ctx->m_state->getMaxTextureSizeCubeMap()), GL_INVALID_VALUE); + } + + state->attachTextureObject(target, attachment, texture, level, 0); ctx->m_glFramebufferTexture2D_enc(self, target, attachment, textarget, texture, level); } @@ -2733,7 +3027,7 @@ void GL2Encoder::s_glFramebufferTexture3DOES(void* self, GL2Encoder* ctx = (GL2Encoder*)self; GLClientState* state = ctx->m_state; - state->attachTextureObject(target, attachment, texture); + state->attachTextureObject(target, attachment, texture, level, zoffset); ctx->m_glFramebufferTexture3DOES_enc(self, target, attachment, textarget, texture, level, zoffset); } @@ -2743,6 +3037,12 @@ void GL2Encoder::s_glGetFramebufferAttachmentParameteriv(void* self, GL2Encoder* ctx = (GL2Encoder*)self; const GLClientState* state = ctx->m_state; SET_ERROR_IF(!GLESv2Validation::framebufferTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(!state->boundFramebuffer(target) && + attachment != GL_BACK && + attachment != GL_FRONT && + attachment != GL_DEPTH && + attachment != GL_STENCIL, + GL_INVALID_OPERATION); SET_ERROR_IF(pname != GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME && pname != GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE && !state->attachmentHasObject(target, attachment), @@ -2755,6 +3055,11 @@ void GL2Encoder::s_glGetFramebufferAttachmentParameteriv(void* self, FBO_ATTACHMENT_TEXTURE), !state->attachmentHasObject(target, attachment) ? GL_INVALID_OPERATION : GL_INVALID_ENUM); + SET_ERROR_IF( + (attachment == GL_FRONT || + attachment == GL_BACK) && + (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME), + GL_INVALID_ENUM); SET_ERROR_IF(attachment == GL_DEPTH_STENCIL_ATTACHMENT && pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME && (state->objectOfAttachment(target, GL_DEPTH_ATTACHMENT) != @@ -2762,129 +3067,23 @@ void GL2Encoder::s_glGetFramebufferAttachmentParameteriv(void* self, GL_INVALID_OPERATION); SET_ERROR_IF(state->boundFramebuffer(target) && (attachment == GL_BACK || - attachment == GL_FRONT), + attachment == GL_FRONT || + attachment == GL_DEPTH || + attachment == GL_STENCIL), GL_INVALID_OPERATION); ctx->m_glGetFramebufferAttachmentParameteriv_enc(self, target, attachment, pname, params); } -bool GL2Encoder::isCompleteFbo(GLenum target, const GLClientState* state, - GLenum attachment) const { - FboFormatInfo fbo_format_info; - state->getBoundFramebufferFormat(target, attachment, &fbo_format_info); - - bool res; - switch (fbo_format_info.type) { - case FBO_ATTACHMENT_RENDERBUFFER: - switch (fbo_format_info.rb_format) { - case GL_R16F: - case GL_RG16F: - case GL_RGBA16F: - case GL_R32F: - case GL_RG32F: - case GL_RGBA32F: - case GL_R11F_G11F_B10F: - res = majorVersion() >= 3 && hasExtension("GL_EXT_color_buffer_float"); - break; - case GL_RGB16F: - res = majorVersion() >= 3 && hasExtension("GL_EXT_color_buffer_half_float"); - break; - case GL_STENCIL_INDEX8: - if (attachment == GL_STENCIL_ATTACHMENT) { - res = true; - } else { - res = false; - } - break; - default: - res = true; - } - break; - case FBO_ATTACHMENT_TEXTURE: - switch (fbo_format_info.tex_internalformat) { - case GL_R16F: - case GL_RG16F: - case GL_RGBA16F: - case GL_R32F: - case GL_RG32F: - case GL_RGBA32F: - case GL_R11F_G11F_B10F: - res = majorVersion() >= 3 && hasExtension("GL_EXT_color_buffer_float"); - break; - case GL_RGB16F: - res = majorVersion() >= 3 && hasExtension("GL_EXT_color_buffer_half_float"); - break; - case GL_RED: - case GL_RG: - case GL_SRGB8: - case GL_RGB32UI: - case GL_RGB16UI: - case GL_RGB8UI: - case GL_RGB32I: - case GL_RGB16I: - case GL_RGB8I: - case GL_R8_SNORM: - case GL_RG8_SNORM: - case GL_RGB8_SNORM: - case GL_RGBA8_SNORM: - res = false; - break; - // No float/half-float formats allowed for RGB(A) - case GL_RGB: - case GL_RGBA: - switch (fbo_format_info.tex_type) { - case GL_FLOAT: - case GL_HALF_FLOAT_OES: - case GL_UNSIGNED_INT_10F_11F_11F_REV: - case GL_UNSIGNED_INT_2_10_10_10_REV: - res = false; - break; - default: - res = true; - } - break; - default: - res = true; - } - break; - case FBO_ATTACHMENT_NONE: - res = true; - break; - default: - res = true; - } - return res; -} - -bool GL2Encoder::checkFramebufferCompleteness(GLenum target, const GLClientState* state) const { - bool res = true; - - for (int i = 0; i < state->getMaxColorAttachments(); i++) { - res = res && isCompleteFbo(target, state, glUtilsColorAttachmentName(i)); - } - - res = res && isCompleteFbo(target, state, GL_DEPTH_ATTACHMENT); - res = res && isCompleteFbo(target, state, GL_STENCIL_ATTACHMENT); - - return res; -} - GLenum GL2Encoder::s_glCheckFramebufferStatus(void* self, GLenum target) { GL2Encoder* ctx = (GL2Encoder*)self; - GLClientState* state = ctx->m_state; - bool fboCompleteByCodec = - ctx->checkFramebufferCompleteness(target, state); + RET_AND_SET_ERROR_IF( + target != GL_DRAW_FRAMEBUFFER && target != GL_FRAMEBUFFER && target != GL_READ_FRAMEBUFFER, + GL_INVALID_ENUM, 0); - if (!fboCompleteByCodec) { - state->setCheckFramebufferStatus(target, GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT); - return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; - } else { - // double check with underlying opengl to avoid craziness. - GLenum host_checkstatus = ctx->m_glCheckFramebufferStatus_enc(self, target); - state->setCheckFramebufferStatus(target, host_checkstatus); - if (host_checkstatus == GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS) return GL_FRAMEBUFFER_COMPLETE; - return host_checkstatus; - } + GLClientState* state = ctx->m_state; + + return state->checkFramebufferCompleteness(target); } void GL2Encoder::s_glGenVertexArrays(void* self, GLsizei n, GLuint* arrays) { @@ -2950,11 +3149,17 @@ void* GL2Encoder::s_glMapBufferRangeAEMUImpl(GL2Encoder* ctx, GLenum target, ((access & GL_MAP_WRITE_BIT) && (!(access & GL_MAP_INVALIDATE_RANGE_BIT) && !(access & GL_MAP_INVALIDATE_BUFFER_BIT)))) { + + if (ctx->m_state->shouldSkipHostMapBuffer(target)) + return bits; + ctx->glMapBufferRangeAEMU( ctx, target, offset, length, access, bits); + + ctx->m_state->onHostMappedBuffer(target); } return bits; @@ -3139,6 +3344,7 @@ void GL2Encoder::s_glCompressedTexImage2D(void* self, GLenum target, GLint level GLClientState* state = ctx->m_state; SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(target == GL_TEXTURE_CUBE_MAP, GL_INVALID_ENUM); // Filter compressed formats support. SET_ERROR_IF(!GLESv2Validation::supportedCompressedFormat(ctx, internalformat), GL_INVALID_ENUM); // Verify level <= log2(GL_MAX_TEXTURE_SIZE). @@ -3155,14 +3361,13 @@ void GL2Encoder::s_glCompressedTexImage2D(void* self, GLenum target, GLint level // If unpack buffer is nonzero, verify unmapped state. SET_ERROR_IF(ctx->isBufferTargetMapped(GL_PIXEL_UNPACK_BUFFER), GL_INVALID_OPERATION); SET_ERROR_IF(width < 0 || height < 0, GL_INVALID_VALUE); + // If unpack buffer is nonzero, verify buffer data fits. SET_ERROR_IF(ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER) && ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER) && (imageSize > ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER)->m_size), GL_INVALID_OPERATION); - // TODO: Fix: - // If |imageSize| is inconsistent with compressed dimensions. - // SET_ERROR_IF(GLESv2Validation::compressedTexImageSize(internalformat, width, height, 1) != imageSize, GL_INVALID_VALUE); + SET_ERROR_IF(!ctx->m_state->compressedTexImageSizeCompatible(internalformat, width, height, 1, imageSize), GL_INVALID_VALUE); GLenum stateTarget = target; if (target == GL_TEXTURE_CUBE_MAP_POSITIVE_X || @@ -3173,7 +3378,7 @@ void GL2Encoder::s_glCompressedTexImage2D(void* self, GLenum target, GLint level target == GL_TEXTURE_CUBE_MAP_NEGATIVE_Z) stateTarget = GL_TEXTURE_CUBE_MAP; state->setBoundTextureInternalFormat(stateTarget, (GLint)internalformat); - state->setBoundTextureDims(stateTarget, level, width, height, 1); + state->setBoundTextureDims(stateTarget, target, level, width, height, 1); if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) { ctx->override2DTextureTarget(target); @@ -3200,13 +3405,28 @@ void GL2Encoder::s_glCompressedTexSubImage2D(void* self, GLenum target, GLint le GL2Encoder* ctx = (GL2Encoder*)self; SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(target == GL_TEXTURE_CUBE_MAP, GL_INVALID_ENUM); // If unpack buffer is nonzero, verify unmapped state. SET_ERROR_IF(ctx->isBufferTargetMapped(GL_PIXEL_UNPACK_BUFFER), GL_INVALID_OPERATION); + + GLenum stateTarget = target; + if (target == GL_TEXTURE_CUBE_MAP_POSITIVE_X || + target == GL_TEXTURE_CUBE_MAP_POSITIVE_Y || + target == GL_TEXTURE_CUBE_MAP_POSITIVE_Z || + target == GL_TEXTURE_CUBE_MAP_NEGATIVE_X || + target == GL_TEXTURE_CUBE_MAP_NEGATIVE_Y || + target == GL_TEXTURE_CUBE_MAP_NEGATIVE_Z) + stateTarget = GL_TEXTURE_CUBE_MAP; + GLuint tex = ctx->m_state->getBoundTexture(stateTarget); + + GLint internalFormat = ctx->m_state->queryTexInternalFormat(tex); + SET_ERROR_IF(internalFormat != format, GL_INVALID_OPERATION); + SET_ERROR_IF(level < 0, GL_INVALID_VALUE); + GLint max_texture_size; GLint max_cube_map_texture_size; ctx->glGetIntegerv(ctx, GL_MAX_TEXTURE_SIZE, &max_texture_size); ctx->glGetIntegerv(ctx, GL_MAX_CUBE_MAP_TEXTURE_SIZE, &max_cube_map_texture_size); - SET_ERROR_IF(level < 0, GL_INVALID_VALUE); SET_ERROR_IF(level > ilog2(max_texture_size), GL_INVALID_VALUE); SET_ERROR_IF(level > ilog2(max_cube_map_texture_size), GL_INVALID_VALUE); SET_ERROR_IF(width < 0 || height < 0, GL_INVALID_VALUE); @@ -3217,6 +3437,20 @@ void GL2Encoder::s_glCompressedTexSubImage2D(void* self, GLenum target, GLint le GL_INVALID_OPERATION); SET_ERROR_IF(xoffset < 0 || yoffset < 0, GL_INVALID_VALUE); + GLint totalWidth = ctx->m_state->queryTexWidth(level, tex); + GLint totalHeight = ctx->m_state->queryTexHeight(level, tex); + + if (GLESTextureUtils::isEtc2Format(internalFormat)) { + SET_ERROR_IF((width % 4) && (totalWidth != xoffset + width), GL_INVALID_OPERATION); + SET_ERROR_IF((height % 4) && (totalHeight != yoffset + height), GL_INVALID_OPERATION); + SET_ERROR_IF((xoffset % 4) || (yoffset % 4), GL_INVALID_OPERATION); + } + + SET_ERROR_IF(totalWidth < xoffset + width, GL_INVALID_VALUE); + SET_ERROR_IF(totalHeight < yoffset + height, GL_INVALID_VALUE); + + SET_ERROR_IF(!ctx->m_state->compressedTexImageSizeCompatible(internalFormat, width, height, 1, imageSize), GL_INVALID_VALUE); + if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) { ctx->override2DTextureTarget(target); } @@ -3345,22 +3579,33 @@ void GL2Encoder::s_glCopyBufferSubData(void *self , GLenum readtarget, GLenum wr writetarget == GL_DISPATCH_INDIRECT_BUFFER || writetarget == GL_DRAW_INDIRECT_BUFFER || writetarget == GL_SHADER_STORAGE_BUFFER), GL_INVALID_ENUM); - SET_ERROR_IF(!ctx->boundBuffer(readtarget), GL_INVALID_OPERATION); - SET_ERROR_IF(!ctx->boundBuffer(writetarget), GL_INVALID_OPERATION); + + GLuint readBufferId = ctx->boundBuffer(readtarget); + GLuint writeBufferId = ctx->boundBuffer(writetarget); + + SET_ERROR_IF(!readBufferId || !writeBufferId, GL_INVALID_OPERATION); + SET_ERROR_IF(ctx->isBufferTargetMapped(readtarget), GL_INVALID_OPERATION); SET_ERROR_IF(ctx->isBufferTargetMapped(writetarget), GL_INVALID_OPERATION); + SET_ERROR_IF(readoffset < 0, GL_INVALID_VALUE); SET_ERROR_IF(writeoffset < 0, GL_INVALID_VALUE); SET_ERROR_IF(size < 0, GL_INVALID_VALUE); + + BufferData* readBufferData = ctx->getBufferData(readtarget); + BufferData* writeBufferData = ctx->getBufferData(writetarget); + SET_ERROR_IF( - ctx->getBufferData(readtarget) && - (readoffset + size > ctx->getBufferData(readtarget)->m_size), + readBufferData && + (readoffset + size > readBufferData->m_size), GL_INVALID_VALUE); + SET_ERROR_IF( - ctx->getBufferData(writetarget) && - (writeoffset + size > ctx->getBufferData(writetarget)->m_size), + writeBufferData && + (writeoffset + size > writeBufferData->m_size), GL_INVALID_VALUE); - SET_ERROR_IF(readtarget == writetarget && + + SET_ERROR_IF(readBufferId == writeBufferId && !((writeoffset >= readoffset + size) || (readoffset >= writeoffset + size)), GL_INVALID_VALUE); @@ -3522,6 +3767,8 @@ static std::string packVarNames(GLsizei count, const char** names, GLint* err_ou void GL2Encoder::s_glGetUniformIndices(void* self, GLuint program, GLsizei uniformCount, const GLchar ** uniformNames, GLuint* uniformIndices) { GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_PROGRAM_NAME(program); + if (!uniformCount) return; GLint err = GL_NO_ERROR; @@ -3546,8 +3793,8 @@ void GL2Encoder::s_glUniform1ui(void* self, GLint location, GLuint v0) { GLClientState* state = ctx->m_state; GLSharedGroupPtr shared = ctx->m_shared; - GLint hostLoc = location; - ctx->m_glUniform1ui_enc(self, hostLoc, v0); + ctx->m_state->validateUniform(false /* is float? */, true /* is unsigned? */, 1 /* columns */, 1 /* rows */, location, 1 /* count */, ctx->getErrorPtr()); + ctx->m_glUniform1ui_enc(self, location, v0); GLenum target; if (shared->setSamplerUniform(state->currentShaderProgram(), location, v0, &target)) { @@ -3561,80 +3808,80 @@ void GL2Encoder::s_glUniform1ui(void* self, GLint location, GLuint v0) { void GL2Encoder::s_glUniform2ui(void* self, GLint location, GLuint v0, GLuint v1) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform2ui_enc(self, hostLoc, v0, v1); + ctx->m_state->validateUniform(false /* is float? */, true /* is unsigned? */, 2 /* columns */, 1 /* rows */, location, 1 /* count */, ctx->getErrorPtr()); + ctx->m_glUniform2ui_enc(self, location, v0, v1); } void GL2Encoder::s_glUniform3ui(void* self, GLint location, GLuint v0, GLuint v1, GLuint v2) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform3ui_enc(self, hostLoc, v0, v1, v2); + ctx->m_state->validateUniform(false /* is float? */, true /* is unsigned? */, 3 /* columns */, 1 /* rows */, location, 1 /* count */, ctx->getErrorPtr()); + ctx->m_glUniform3ui_enc(self, location, v0, v1, v2); } void GL2Encoder::s_glUniform4ui(void* self, GLint location, GLint v0, GLuint v1, GLuint v2, GLuint v3) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform4ui_enc(self, hostLoc, v0, v1, v2, v3); + ctx->m_state->validateUniform(false /* is float? */, true /* is unsigned? */, 4 /* columns */, 1 /* rows */, location, 1 /* count */, ctx->getErrorPtr()); + ctx->m_glUniform4ui_enc(self, location, v0, v1, v2, v3); } void GL2Encoder::s_glUniform1uiv(void* self, GLint location, GLsizei count, const GLuint *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform1uiv_enc(self, hostLoc, count, value); + ctx->m_state->validateUniform(false /* is float? */, true /* is unsigned? */, 1 /* columns */, 1 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniform1uiv_enc(self, location, count, value); } void GL2Encoder::s_glUniform2uiv(void* self, GLint location, GLsizei count, const GLuint *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform2uiv_enc(self, hostLoc, count, value); + ctx->m_state->validateUniform(false /* is float? */, true /* is unsigned? */, 2 /* columns */, 1 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniform2uiv_enc(self, location, count, value); } void GL2Encoder::s_glUniform3uiv(void* self, GLint location, GLsizei count, const GLuint *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform3uiv_enc(self, hostLoc, count, value); + ctx->m_state->validateUniform(false /* is float? */, true /* is unsigned? */, 3 /* columns */, 1 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniform3uiv_enc(self, location, count, value); } void GL2Encoder::s_glUniform4uiv(void* self, GLint location, GLsizei count, const GLuint *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniform4uiv_enc(self, hostLoc, count, value); + ctx->m_state->validateUniform(false /* is float? */, true /* is unsigned? */, 4 /* columns */, 1 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniform4uiv_enc(self, location, count, value); } void GL2Encoder::s_glUniformMatrix2x3fv(void* self, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniformMatrix2x3fv_enc(self, hostLoc, count, transpose, value); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 2 /* columns */, 3 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniformMatrix2x3fv_enc(self, location, count, transpose, value); } void GL2Encoder::s_glUniformMatrix3x2fv(void* self, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniformMatrix3x2fv_enc(self, hostLoc, count, transpose, value); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 3 /* columns */, 2 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniformMatrix3x2fv_enc(self, location, count, transpose, value); } void GL2Encoder::s_glUniformMatrix2x4fv(void* self, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniformMatrix2x4fv_enc(self, hostLoc, count, transpose, value); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 2 /* columns */, 4 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniformMatrix2x4fv_enc(self, location, count, transpose, value); } void GL2Encoder::s_glUniformMatrix4x2fv(void* self, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniformMatrix4x2fv_enc(self, hostLoc, count, transpose, value); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 4 /* columns */, 2 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniformMatrix4x2fv_enc(self, location, count, transpose, value); } void GL2Encoder::s_glUniformMatrix3x4fv(void* self, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniformMatrix3x4fv_enc(self, hostLoc, count, transpose, value); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 3 /* columns */, 4 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniformMatrix3x4fv_enc(self, location, count, transpose, value); } void GL2Encoder::s_glUniformMatrix4x3fv(void* self, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glUniformMatrix4x3fv_enc(self, hostLoc, count, transpose, value); + ctx->m_state->validateUniform(true /* is float? */, false /* is unsigned? */, 4 /* columns */, 3 /* rows */, location, count /* count */, ctx->getErrorPtr()); + ctx->m_glUniformMatrix4x3fv_enc(self, location, count, transpose, value); } void GL2Encoder::s_glGetUniformuiv(void* self, GLuint program, GLint location, GLuint* params) { @@ -3642,14 +3889,18 @@ void GL2Encoder::s_glGetUniformuiv(void* self, GLuint program, GLint location, G SET_ERROR_IF(!ctx->m_shared->isShaderOrProgramObject(program), GL_INVALID_VALUE); SET_ERROR_IF(!ctx->m_shared->isProgram(program), GL_INVALID_OPERATION); SET_ERROR_IF(!ctx->m_shared->isProgramInitialized(program), GL_INVALID_OPERATION); - GLint hostLoc = location; - SET_ERROR_IF(ctx->m_shared->getProgramUniformType(program,hostLoc)==0, GL_INVALID_OPERATION); - ctx->m_glGetUniformuiv_enc(self, program, hostLoc, params); + SET_ERROR_IF(ctx->m_shared->getProgramUniformType(program,location)==0, GL_INVALID_OPERATION); + SET_ERROR_IF(!ctx->m_shared->isProgramUniformLocationValid(program,location), GL_INVALID_OPERATION); + ctx->m_glGetUniformuiv_enc(self, program, location, params); } void GL2Encoder::s_glGetActiveUniformBlockiv(void* self, GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params) { GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_PROGRAM_NAME(program); + SET_ERROR_IF(!GLESv2Validation::allowedGetActiveUniformBlock(pname), GL_INVALID_ENUM); + SET_ERROR_IF(uniformBlockIndex >= ctx->m_shared->getActiveUniformBlockCount(program), GL_INVALID_VALUE); + // refresh client state's # active uniforms in this block if (pname == GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) { // TODO if worth it: cache uniform count and other params, @@ -3670,10 +3921,8 @@ void GL2Encoder::s_glGetActiveUniformBlockiv(void* self, GLuint program, GLuint void GL2Encoder::s_glGetVertexAttribIiv(void* self, GLuint index, GLenum pname, GLint* params) { GL2Encoder *ctx = (GL2Encoder *)self; - assert(ctx->m_state); - GLint maxIndex; - ctx->glGetIntegerv(self, GL_MAX_VERTEX_ATTRIBS, &maxIndex); - SET_ERROR_IF(!(index < maxIndex), GL_INVALID_VALUE); + VALIDATE_VERTEX_ATTRIB_INDEX(index); + SET_ERROR_IF(!GLESv2Validation::allowedGetVertexAttrib(pname), GL_INVALID_ENUM); if (!ctx->m_state->getVertexAttribParameter<GLint>(index, pname, params)) { ctx->m_glGetVertexAttribIiv_enc(self, index, pname, params); @@ -3682,10 +3931,8 @@ void GL2Encoder::s_glGetVertexAttribIiv(void* self, GLuint index, GLenum pname, void GL2Encoder::s_glGetVertexAttribIuiv(void* self, GLuint index, GLenum pname, GLuint* params) { GL2Encoder *ctx = (GL2Encoder *)self; - assert(ctx->m_state); - GLint maxIndex; - ctx->glGetIntegerv(self, GL_MAX_VERTEX_ATTRIBS, &maxIndex); - SET_ERROR_IF(!(index < maxIndex), GL_INVALID_VALUE); + VALIDATE_VERTEX_ATTRIB_INDEX(index); + SET_ERROR_IF(!GLESv2Validation::allowedGetVertexAttrib(pname), GL_INVALID_ENUM); if (!ctx->m_state->getVertexAttribParameter<GLuint>(index, pname, params)) { ctx->m_glGetVertexAttribIuiv_enc(self, index, pname, params); @@ -3741,12 +3988,18 @@ void GL2Encoder::s_glRenderbufferStorageMultisample(void* self, SET_ERROR_IF(target != GL_RENDERBUFFER, GL_INVALID_ENUM); SET_ERROR_IF(!GLESv2Validation::rboFormat(ctx, internalformat), GL_INVALID_ENUM); + SET_ERROR_IF(width < 0 || height < 0, GL_INVALID_VALUE); + GLint max_rb_size; + ctx->glGetIntegerv(ctx, GL_MAX_RENDERBUFFER_SIZE, &max_rb_size); + SET_ERROR_IF(width > max_rb_size || height > max_rb_size, GL_INVALID_VALUE); + GLint max_samples; ctx->s_glGetInternalformativ(ctx, target, internalformat, GL_SAMPLES, 1, &max_samples); SET_ERROR_IF(samples > max_samples, GL_INVALID_OPERATION); state->setBoundRenderbufferFormat(internalformat); state->setBoundRenderbufferSamples(samples); + state->setBoundRenderbufferDimensions(width, height); ctx->m_glRenderbufferStorageMultisample_enc( self, target, samples, internalformat, width, height); } @@ -3818,11 +4071,16 @@ void GL2Encoder::s_glFramebufferTextureLayer(void* self, GLenum target, GLenum a SET_ERROR_IF(!GLESv2Validation::framebufferTarget(ctx, target), GL_INVALID_ENUM); SET_ERROR_IF(!GLESv2Validation::framebufferAttachment(ctx, attachment), GL_INVALID_ENUM); + SET_ERROR_IF(texture != 0 && layer < 0, GL_INVALID_VALUE); + GLint maxArrayTextureLayers; + ctx->glGetIntegerv(ctx, GL_MAX_ARRAY_TEXTURE_LAYERS, &maxArrayTextureLayers); + SET_ERROR_IF(texture != 0 && layer > maxArrayTextureLayers - 1, GL_INVALID_VALUE); + SET_ERROR_IF(!ctx->m_state->boundFramebuffer(target), GL_INVALID_OPERATION); GLenum lastBoundTarget = state->queryTexLastBoundTarget(texture); SET_ERROR_IF(lastBoundTarget != GL_TEXTURE_2D_ARRAY && lastBoundTarget != GL_TEXTURE_3D, GL_INVALID_OPERATION); - state->attachTextureObject(target, attachment, texture); + state->attachTextureObject(target, attachment, texture, level, layer); GLint max3DTextureSize; ctx->glGetIntegerv(ctx, GL_MAX_3D_TEXTURE_SIZE, &max3DTextureSize); @@ -3849,7 +4107,7 @@ void GL2Encoder::s_glTexStorage2D(void* self, GLenum target, GLsizei levels, GLe SET_ERROR_IF(state->isBoundTextureImmutableFormat(target), GL_INVALID_OPERATION); state->setBoundTextureInternalFormat(target, internalformat); - state->setBoundTextureDims(target, -1, width, height, 1); + state->setBoundTextureDims(target, -1 /* set all cube dimensions */, -1, width, height, 1); state->setBoundTextureImmutableFormat(target); if (target == GL_TEXTURE_2D) { @@ -3880,6 +4138,11 @@ void GL2Encoder::s_glTransformFeedbackVaryings(void* self, GLuint program, GLsiz bufferMode != GL_SEPARATE_ATTRIBS, GL_INVALID_ENUM); + // NOTE: This only has an effect on the program that is being linked. + // The dEQP test in dEQP-GLES3.functional.negative_api doesn't know + // about this. + ctx->m_state->setTransformFeedbackVaryingsCountForLinking(count); + if (!count) return; GLint err = GL_NO_ERROR; @@ -3892,29 +4155,51 @@ void GL2Encoder::s_glTransformFeedbackVaryings(void* self, GLuint program, GLsiz void GL2Encoder::s_glBeginTransformFeedback(void* self, GLenum primitiveMode) { GL2Encoder* ctx = (GL2Encoder*)self; GLClientState* state = ctx->m_state; + SET_ERROR_IF( + primitiveMode != GL_POINTS && + primitiveMode != GL_LINES && + primitiveMode != GL_TRIANGLES, + GL_INVALID_ENUM); + SET_ERROR_IF( + ctx->m_state->getTransformFeedbackActive(), + GL_INVALID_OPERATION); + // TODO: + // dEQP-GLES3.functional.lifetime.attach.deleted_output.buffer_transform_feedback + // SET_ERROR_IF( + // !ctx->boundBuffer(GL_TRANSFORM_FEEDBACK_BUFFER), + // GL_INVALID_OPERATION); + SET_ERROR_IF( + !ctx->m_state->currentProgram(), GL_INVALID_OPERATION); ctx->m_glBeginTransformFeedback_enc(ctx, primitiveMode); - state->setTransformFeedbackActiveUnpaused(true); + state->setTransformFeedbackActive(true); + state->setTransformFeedbackUnpaused(true); } void GL2Encoder::s_glEndTransformFeedback(void* self) { GL2Encoder* ctx = (GL2Encoder*)self; GLClientState* state = ctx->m_state; + SET_ERROR_IF(!state->getTransformFeedbackActive(), GL_INVALID_OPERATION); ctx->m_glEndTransformFeedback_enc(ctx); - state->setTransformFeedbackActiveUnpaused(false); + state->setTransformFeedbackActive(false); + state->setTransformFeedbackUnpaused(false); } void GL2Encoder::s_glPauseTransformFeedback(void* self) { GL2Encoder* ctx = (GL2Encoder*)self; GLClientState* state = ctx->m_state; + SET_ERROR_IF(!state->getTransformFeedbackActive(), GL_INVALID_OPERATION); + SET_ERROR_IF(!state->getTransformFeedbackUnpaused(), GL_INVALID_OPERATION); ctx->m_glPauseTransformFeedback_enc(ctx); - state->setTransformFeedbackActiveUnpaused(false); + state->setTransformFeedbackUnpaused(false); } void GL2Encoder::s_glResumeTransformFeedback(void* self) { GL2Encoder* ctx = (GL2Encoder*)self; GLClientState* state = ctx->m_state; + SET_ERROR_IF(!state->getTransformFeedbackActive(), GL_INVALID_OPERATION); + SET_ERROR_IF(state->getTransformFeedbackUnpaused(), GL_INVALID_OPERATION); ctx->m_glResumeTransformFeedback_enc(ctx); - state->setTransformFeedbackActiveUnpaused(true); + state->setTransformFeedbackUnpaused(true); } void GL2Encoder::s_glTexImage3D(void* self, GLenum target, GLint level, GLint internalFormat, @@ -3928,6 +4213,10 @@ void GL2Encoder::s_glTexImage3D(void* self, GLenum target, GLint level, GLint in GL_INVALID_ENUM); SET_ERROR_IF(!GLESv2Validation::pixelType(ctx, type), GL_INVALID_ENUM); SET_ERROR_IF(!GLESv2Validation::pixelFormat(ctx, format), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::pixelSizedFormat(ctx, internalFormat, format, type), GL_INVALID_OPERATION); + SET_ERROR_IF(target == GL_TEXTURE_3D && + ((format == GL_DEPTH_COMPONENT) || + (format == GL_DEPTH_STENCIL)), GL_INVALID_OPERATION); // If unpack buffer is nonzero, verify unmapped state. SET_ERROR_IF(ctx->isBufferTargetMapped(GL_PIXEL_UNPACK_BUFFER), GL_INVALID_OPERATION); @@ -3943,7 +4232,13 @@ void GL2Encoder::s_glTexImage3D(void* self, GLenum target, GLint level, GLint in SET_ERROR_IF(width < 0 || height < 0 || depth < 0, GL_INVALID_VALUE); SET_ERROR_IF(width > max_texture_size, GL_INVALID_VALUE); SET_ERROR_IF(height > max_texture_size, GL_INVALID_VALUE); - SET_ERROR_IF(depth > max_texture_size, GL_INVALID_VALUE); + if (target == GL_TEXTURE_3D) { + SET_ERROR_IF(depth > max_texture_size, GL_INVALID_VALUE); + } else { + GLint maxArrayTextureLayers; + ctx->glGetIntegerv(ctx, GL_MAX_ARRAY_TEXTURE_LAYERS, &maxArrayTextureLayers); + SET_ERROR_IF(depth > maxArrayTextureLayers, GL_INVALID_VALUE); + } SET_ERROR_IF(width > max_3d_texture_size, GL_INVALID_VALUE); SET_ERROR_IF(height > max_3d_texture_size, GL_INVALID_VALUE); SET_ERROR_IF(depth > max_3d_texture_size, GL_INVALID_VALUE); @@ -3951,12 +4246,12 @@ void GL2Encoder::s_glTexImage3D(void* self, GLenum target, GLint level, GLint in // If unpack buffer is nonzero, verify buffer data fits and is evenly divisible by the type. SET_ERROR_IF(ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER) && ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER) && - (ctx->m_state->pboNeededDataSize(width, height, depth, format, type, 0) > + ((uintptr_t)data + ctx->m_state->pboNeededDataSize(width, height, depth, format, type, 0) > ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER)->m_size), GL_INVALID_OPERATION); SET_ERROR_IF(ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER) && ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER) && - (ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER)->m_size % + ((uintptr_t)data % glSizeof(type)), GL_INVALID_OPERATION); SET_ERROR_IF(state->isBoundTextureImmutableFormat(target), GL_INVALID_OPERATION); @@ -3964,7 +4259,7 @@ void GL2Encoder::s_glTexImage3D(void* self, GLenum target, GLint level, GLint in state->setBoundTextureInternalFormat(target, internalFormat); state->setBoundTextureFormat(target, format); state->setBoundTextureType(target, type); - state->setBoundTextureDims(target, level, width, height, depth); + state->setBoundTextureDims(target, target, level, width, height, depth); if (ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER)) { ctx->glTexImage3DOffsetAEMU( @@ -4012,13 +4307,12 @@ void GL2Encoder::s_glTexSubImage3D(void* self, GLenum target, GLint level, GLint // If unpack buffer is nonzero, verify buffer data fits and is evenly divisible by the type. SET_ERROR_IF(ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER) && ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER) && - (ctx->m_state->pboNeededDataSize(width, height, depth, format, type, 0) > + ((uintptr_t)data + ctx->m_state->pboNeededDataSize(width, height, depth, format, type, 0) > ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER)->m_size), GL_INVALID_OPERATION); SET_ERROR_IF(ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER) && ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER) && - (ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER)->m_size % - glSizeof(type)), + ((uintptr_t)data % glSizeof(type)), GL_INVALID_OPERATION); SET_ERROR_IF(!ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER) && !data, GL_INVALID_OPERATION); SET_ERROR_IF(xoffset < 0 || yoffset < 0 || zoffset < 0, GL_INVALID_VALUE); @@ -4042,22 +4336,48 @@ void GL2Encoder::s_glCompressedTexImage3D(void* self, GLenum target, GLint level GL2Encoder* ctx = (GL2Encoder*)self; GLClientState* state = ctx->m_state; + SET_ERROR_IF(target != GL_TEXTURE_3D && + target != GL_TEXTURE_2D_ARRAY, + GL_INVALID_ENUM); // Filter compressed formats support. SET_ERROR_IF(!GLESv2Validation::supportedCompressedFormat(ctx, internalformat), GL_INVALID_ENUM); + SET_ERROR_IF(target == GL_TEXTURE_CUBE_MAP, GL_INVALID_ENUM); // If unpack buffer is nonzero, verify unmapped state. SET_ERROR_IF(ctx->isBufferTargetMapped(GL_PIXEL_UNPACK_BUFFER), GL_INVALID_OPERATION); SET_ERROR_IF(width < 0 || height < 0 || depth < 0, GL_INVALID_VALUE); SET_ERROR_IF(border, GL_INVALID_VALUE); + + GLint max_texture_size; + GLint max_3d_texture_size; + ctx->glGetIntegerv(ctx, GL_MAX_TEXTURE_SIZE, &max_texture_size); + ctx->glGetIntegerv(ctx, GL_MAX_3D_TEXTURE_SIZE, &max_3d_texture_size); + SET_ERROR_IF(level < 0, GL_INVALID_VALUE); + SET_ERROR_IF(level > ilog2(max_texture_size), GL_INVALID_VALUE); + SET_ERROR_IF(level > ilog2(max_3d_texture_size), GL_INVALID_VALUE); + + SET_ERROR_IF(width < 0 || height < 0 || depth < 0, GL_INVALID_VALUE); + SET_ERROR_IF(width > max_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(height > max_texture_size, GL_INVALID_VALUE); + if (target == GL_TEXTURE_3D) { + SET_ERROR_IF(depth > max_texture_size, GL_INVALID_VALUE); + } else { + GLint maxArrayTextureLayers; + ctx->glGetIntegerv(ctx, GL_MAX_ARRAY_TEXTURE_LAYERS, &maxArrayTextureLayers); + SET_ERROR_IF(depth > maxArrayTextureLayers, GL_INVALID_VALUE); + } + SET_ERROR_IF(width > max_3d_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(height > max_3d_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(depth > max_3d_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(GLESTextureUtils::isAstcFormat(internalformat) && GL_TEXTURE_3D == target, GL_INVALID_OPERATION); + // If unpack buffer is nonzero, verify buffer data fits. SET_ERROR_IF(ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER) && ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER) && (imageSize > ctx->getBufferData(GL_PIXEL_UNPACK_BUFFER)->m_size), GL_INVALID_OPERATION); - // TODO: Fix: - // If |imageSize| is too small for compressed dimensions. - // SET_ERROR_IF(GLESv2Validation::compressedTexImageSize(internalformat, width, height, depth) > imageSize, GL_INVALID_VALUE); + SET_ERROR_IF(!ctx->m_state->compressedTexImageSizeCompatible(internalformat, width, height, depth, imageSize), GL_INVALID_VALUE); state->setBoundTextureInternalFormat(target, (GLint)internalformat); - state->setBoundTextureDims(target, level, width, height, depth); + state->setBoundTextureDims(target, target, level, width, height, depth); if (ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER)) { ctx->glCompressedTexImage3DOffsetAEMU( @@ -4076,6 +4396,7 @@ void GL2Encoder::s_glCompressedTexSubImage3D(void* self, GLenum target, GLint le GL2Encoder* ctx = (GL2Encoder*)self; SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(target == GL_TEXTURE_CUBE_MAP, GL_INVALID_ENUM); // If unpack buffer is nonzero, verify unmapped state. SET_ERROR_IF(ctx->isBufferTargetMapped(GL_PIXEL_UNPACK_BUFFER), GL_INVALID_OPERATION); SET_ERROR_IF(width < 0 || height < 0 || depth < 0, GL_INVALID_VALUE); @@ -4086,6 +4407,52 @@ void GL2Encoder::s_glCompressedTexSubImage3D(void* self, GLenum target, GLint le GL_INVALID_OPERATION); SET_ERROR_IF(xoffset < 0 || yoffset < 0 || zoffset < 0, GL_INVALID_VALUE); + GLint max_texture_size; + GLint max_3d_texture_size; + ctx->glGetIntegerv(ctx, GL_MAX_TEXTURE_SIZE, &max_texture_size); + ctx->glGetIntegerv(ctx, GL_MAX_3D_TEXTURE_SIZE, &max_3d_texture_size); + SET_ERROR_IF(level < 0, GL_INVALID_VALUE); + SET_ERROR_IF(level > ilog2(max_texture_size), GL_INVALID_VALUE); + SET_ERROR_IF(level > ilog2(max_3d_texture_size), GL_INVALID_VALUE); + SET_ERROR_IF(width < 0 || height < 0 || depth < 0, GL_INVALID_VALUE); + SET_ERROR_IF(xoffset < 0 || yoffset < 0 || zoffset < 0, GL_INVALID_VALUE); + GLenum stateTarget = target; + if (target == GL_TEXTURE_CUBE_MAP_POSITIVE_X || + target == GL_TEXTURE_CUBE_MAP_POSITIVE_Y || + target == GL_TEXTURE_CUBE_MAP_POSITIVE_Z || + target == GL_TEXTURE_CUBE_MAP_NEGATIVE_X || + target == GL_TEXTURE_CUBE_MAP_NEGATIVE_Y || + target == GL_TEXTURE_CUBE_MAP_NEGATIVE_Z) + stateTarget = GL_TEXTURE_CUBE_MAP; + + GLuint tex = ctx->m_state->getBoundTexture(stateTarget); + GLsizei neededWidth = xoffset + width; + GLsizei neededHeight = yoffset + height; + GLsizei neededDepth = zoffset + depth; + + SET_ERROR_IF(tex && + (neededWidth > ctx->m_state->queryTexWidth(level, tex) || + neededHeight > ctx->m_state->queryTexHeight(level, tex) || + neededDepth > ctx->m_state->queryTexDepth(level, tex)), + GL_INVALID_VALUE); + + GLint internalFormat = ctx->m_state->queryTexInternalFormat(tex); + SET_ERROR_IF(internalFormat != format, GL_INVALID_OPERATION); + + GLint totalWidth = ctx->m_state->queryTexWidth(level, tex); + GLint totalHeight = ctx->m_state->queryTexHeight(level, tex); + + if (GLESTextureUtils::isEtc2Format(internalFormat)) { + SET_ERROR_IF((width % 4) && (totalWidth != xoffset + width), GL_INVALID_OPERATION); + SET_ERROR_IF((height % 4) && (totalHeight != yoffset + height), GL_INVALID_OPERATION); + SET_ERROR_IF((xoffset % 4) || (yoffset % 4), GL_INVALID_OPERATION); + } + + SET_ERROR_IF(totalWidth < xoffset + width, GL_INVALID_VALUE); + SET_ERROR_IF(totalHeight < yoffset + height, GL_INVALID_VALUE); + + SET_ERROR_IF(!ctx->m_state->compressedTexImageSizeCompatible(internalFormat, width, height, depth, imageSize), GL_INVALID_VALUE); + if (ctx->boundBuffer(GL_PIXEL_UNPACK_BUFFER)) { ctx->glCompressedTexSubImage3DOffsetAEMU( ctx, target, level, @@ -4110,7 +4477,27 @@ void GL2Encoder::s_glTexStorage3D(void* self, GLenum target, GLsizei levels, GLe GL_INVALID_ENUM); SET_ERROR_IF(!GLESv2Validation::pixelInternalFormat(internalformat), GL_INVALID_ENUM); SET_ERROR_IF(!state->getBoundTexture(target), GL_INVALID_OPERATION); - SET_ERROR_IF(levels < 1 || width < 1 || height < 1, GL_INVALID_VALUE); + SET_ERROR_IF(levels < 1 || width < 1 || height < 1 || depth < 1, GL_INVALID_VALUE); + GLint max_texture_size; + GLint max_3d_texture_size; + ctx->glGetIntegerv(ctx, GL_MAX_TEXTURE_SIZE, &max_texture_size); + ctx->glGetIntegerv(ctx, GL_MAX_3D_TEXTURE_SIZE, &max_3d_texture_size); + SET_ERROR_IF(width > max_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(height > max_texture_size, GL_INVALID_VALUE); + if (target == GL_TEXTURE_3D) { + SET_ERROR_IF(depth > max_texture_size, GL_INVALID_VALUE); + } else { + GLint maxArrayTextureLayers; + ctx->glGetIntegerv(ctx, GL_MAX_ARRAY_TEXTURE_LAYERS, &maxArrayTextureLayers); + SET_ERROR_IF(depth > maxArrayTextureLayers, GL_INVALID_VALUE); + } + + SET_ERROR_IF(width > max_3d_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(height > max_3d_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(depth > max_3d_texture_size, GL_INVALID_VALUE); + + SET_ERROR_IF(GLESTextureUtils::isAstcFormat(internalformat) && GL_TEXTURE_3D == target, GL_INVALID_OPERATION); + SET_ERROR_IF(target == GL_TEXTURE_3D && (levels > ilog2((uint32_t)std::max(width, std::max(height, depth))) + 1), GL_INVALID_OPERATION); SET_ERROR_IF(target == GL_TEXTURE_2D_ARRAY && (levels > ilog2((uint32_t)std::max(width, height)) + 1), @@ -4118,7 +4505,7 @@ void GL2Encoder::s_glTexStorage3D(void* self, GLenum target, GLsizei levels, GLe SET_ERROR_IF(state->isBoundTextureImmutableFormat(target), GL_INVALID_OPERATION); state->setBoundTextureInternalFormat(target, internalformat); - state->setBoundTextureDims(target, -1, width, height, depth); + state->setBoundTextureDims(target, target, -1, width, height, depth); state->setBoundTextureImmutableFormat(target); ctx->m_glTexStorage3D_enc(ctx, target, levels, internalformat, width, height, depth); state->setBoundTextureImmutableFormat(target); @@ -4130,6 +4517,7 @@ void GL2Encoder::s_glDrawArraysInstanced(void* self, GLenum mode, GLint first, G SET_ERROR_IF(!isValidDrawMode(mode), GL_INVALID_ENUM); SET_ERROR_IF(count < 0, GL_INVALID_VALUE); SET_ERROR_IF(primcount < 0, GL_INVALID_VALUE); + SET_ERROR_IF(ctx->m_state->checkFramebufferCompleteness(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, GL_INVALID_FRAMEBUFFER_OPERATION); bool has_client_vertex_arrays = false; bool has_indirect_arrays = false; @@ -4146,6 +4534,7 @@ void GL2Encoder::s_glDrawArraysInstanced(void* self, GLenum mode, GLint first, G ctx->m_glDrawArraysInstanced_enc(ctx, mode, first, count, primcount); } ctx->m_stream->flush(); + ctx->m_state->postDraw(); } void GL2Encoder::s_glDrawElementsInstanced(void* self, GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount) @@ -4158,6 +4547,7 @@ void GL2Encoder::s_glDrawElementsInstanced(void* self, GLenum mode, GLsizei coun SET_ERROR_IF(primcount < 0, GL_INVALID_VALUE); SET_ERROR_IF(!(type == GL_UNSIGNED_BYTE || type == GL_UNSIGNED_SHORT || type == GL_UNSIGNED_INT), GL_INVALID_ENUM); SET_ERROR_IF(ctx->m_state->getTransformFeedbackActiveUnpaused(), GL_INVALID_OPERATION); + SET_ERROR_IF(ctx->m_state->checkFramebufferCompleteness(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, GL_INVALID_FRAMEBUFFER_OPERATION); bool has_client_vertex_arrays = false; bool has_indirect_arrays = false; @@ -4237,6 +4627,7 @@ void GL2Encoder::s_glDrawElementsInstanced(void* self, GLenum mode, GLsizei coun ALOGE("glDrawElements: direct index & direct buffer data - will be implemented in later versions;\n"); } } + ctx->m_state->postDraw(); } void GL2Encoder::s_glDrawRangeElements(void* self, GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void* indices) @@ -4249,6 +4640,7 @@ void GL2Encoder::s_glDrawRangeElements(void* self, GLenum mode, GLuint start, GL SET_ERROR_IF(count < 0, GL_INVALID_VALUE); SET_ERROR_IF(!(type == GL_UNSIGNED_BYTE || type == GL_UNSIGNED_SHORT || type == GL_UNSIGNED_INT), GL_INVALID_ENUM); SET_ERROR_IF(ctx->m_state->getTransformFeedbackActiveUnpaused(), GL_INVALID_OPERATION); + SET_ERROR_IF(ctx->m_state->checkFramebufferCompleteness(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, GL_INVALID_FRAMEBUFFER_OPERATION); bool has_client_vertex_arrays = false; bool has_indirect_arrays = false; @@ -4334,6 +4726,7 @@ void GL2Encoder::s_glDrawRangeElements(void* self, GLenum mode, GLuint start, GL ALOGE("glDrawElements: direct index & direct buffer data - will be implemented in later versions;\n"); } } + ctx->m_state->postDraw(); } const GLubyte* GL2Encoder::s_glGetStringi(void* self, GLenum name, GLuint index) { @@ -4383,12 +4776,12 @@ const GLubyte* GL2Encoder::s_glGetStringi(void* self, GLenum name, GLuint index) void GL2Encoder::s_glGetProgramBinary(void* self, GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void* binary) { GL2Encoder *ctx = (GL2Encoder *)self; - SET_ERROR_IF(!ctx->m_shared->isProgram(program), GL_INVALID_OPERATION); + VALIDATE_PROGRAM_NAME(program); GLint linkStatus = 0; - ctx->glGetProgramiv(self, program, GL_LINK_STATUS, &linkStatus); + ctx->m_glGetProgramiv_enc(self, program, GL_LINK_STATUS, &linkStatus); GLint properLength = 0; - ctx->glGetProgramiv(self, program, GL_PROGRAM_BINARY_LENGTH, &properLength); + ctx->m_glGetProgramiv_enc(self, program, GL_PROGRAM_BINARY_LENGTH, &properLength); SET_ERROR_IF(!linkStatus, GL_INVALID_OPERATION); SET_ERROR_IF(bufSize < properLength, GL_INVALID_OPERATION); @@ -4401,6 +4794,7 @@ void GL2Encoder::s_glReadPixels(void* self, GLint x, GLint y, GLsizei width, GLs SET_ERROR_IF(!GLESv2Validation::readPixelsFormat(format), GL_INVALID_ENUM); SET_ERROR_IF(!GLESv2Validation::readPixelsType(type), GL_INVALID_ENUM); + SET_ERROR_IF(!(GLESv2Validation::pixelOp(format,type)),GL_INVALID_OPERATION); SET_ERROR_IF(width < 0 || height < 0, GL_INVALID_VALUE); SET_ERROR_IF(ctx->isBufferTargetMapped(GL_PIXEL_PACK_BUFFER), GL_INVALID_OPERATION); SET_ERROR_IF(ctx->boundBuffer(GL_PIXEL_PACK_BUFFER) && @@ -4408,6 +4802,24 @@ void GL2Encoder::s_glReadPixels(void* self, GLint x, GLint y, GLsizei width, GLs (ctx->m_state->pboNeededDataSize(width, height, 1, format, type, 1) > ctx->getBufferData(GL_PIXEL_PACK_BUFFER)->m_size), GL_INVALID_OPERATION); + SET_ERROR_IF(ctx->s_glCheckFramebufferStatus(ctx, GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, GL_INVALID_FRAMEBUFFER_OPERATION); + + // now is complete + // GL_INVALID_OPERATION is generated if GL_READ_FRAMEBUFFER_BINDING is nonzero, the read fbo is complete, and the value of + // GL_SAMPLE_BUFFERS for the read framebuffer is greater than zero + if (ctx->m_state->boundFramebuffer(GL_READ_FRAMEBUFFER) && + ctx->s_glCheckFramebufferStatus(ctx, GL_READ_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE) { + FboFormatInfo resInfo; + ctx->m_state->getBoundFramebufferFormat(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, &resInfo); + if (resInfo.type == FBO_ATTACHMENT_RENDERBUFFER) { + SET_ERROR_IF(resInfo.rb_multisamples > 0, GL_INVALID_OPERATION); + } + if (resInfo.type == FBO_ATTACHMENT_TEXTURE) { + SET_ERROR_IF(resInfo.tex_multisamples > 0, GL_INVALID_OPERATION); + } + } + + /* GL_INVALID_OPERATION is generated if the readbuffer of the currently bound framebuffer is a fixed point normalized surface and format and type are neither GL_RGBA and GL_UNSIGNED_BYTE, respectively, nor the format/type pair returned by querying GL_IMPLEMENTATION_COLOR_READ_FORMAT and GL_IMPLEMENTATION_COLOR_READ_TYPE. @@ -4436,6 +4848,7 @@ GL_INVALID_OPERATION is generated if the readbuffer of the currently bound frame ctx, x, y, width, height, format, type, pixels); } + ctx->m_state->postReadPixels(); } // Track enabled state for some things like: @@ -4443,6 +4856,8 @@ GL_INVALID_OPERATION is generated if the readbuffer of the currently bound frame void GL2Encoder::s_glEnable(void* self, GLenum what) { GL2Encoder *ctx = (GL2Encoder *)self; + SET_ERROR_IF(!GLESv2Validation::allowedEnable(ctx->majorVersion(), ctx->minorVersion(), what), GL_INVALID_ENUM); + switch (what) { case GL_PRIMITIVE_RESTART_FIXED_INDEX: ctx->m_primitiveRestartEnabled = true; @@ -4455,6 +4870,8 @@ void GL2Encoder::s_glEnable(void* self, GLenum what) { void GL2Encoder::s_glDisable(void* self, GLenum what) { GL2Encoder *ctx = (GL2Encoder *)self; + SET_ERROR_IF(!GLESv2Validation::allowedEnable(ctx->majorVersion(), ctx->minorVersion(), what), GL_INVALID_ENUM); + switch (what) { case GL_PRIMITIVE_RESTART_FIXED_INDEX: ctx->m_primitiveRestartEnabled = false; @@ -4467,7 +4884,18 @@ void GL2Encoder::s_glDisable(void* self, GLenum what) { void GL2Encoder::s_glClearBufferiv(void* self, GLenum buffer, GLint drawBuffer, const GLint * value) { GL2Encoder *ctx = (GL2Encoder *)self; - SET_ERROR_IF(buffer == GL_DEPTH || buffer == GL_DEPTH_STENCIL, GL_INVALID_ENUM); + SET_ERROR_IF(buffer != GL_COLOR && buffer != GL_STENCIL, GL_INVALID_ENUM); + + GLint maxDrawBuffers; + ctx->glGetIntegerv(ctx, GL_MAX_DRAW_BUFFERS, &maxDrawBuffers); + + SET_ERROR_IF(!value, GL_INVALID_VALUE); + + if (buffer == GL_COLOR) { + SET_ERROR_IF(drawBuffer < 0 || drawBuffer>= maxDrawBuffers, GL_INVALID_VALUE); + } else { + SET_ERROR_IF(drawBuffer != 0, GL_INVALID_VALUE); + } ctx->m_glClearBufferiv_enc(ctx, buffer, drawBuffer, value); } @@ -4475,7 +4903,12 @@ void GL2Encoder::s_glClearBufferiv(void* self, GLenum buffer, GLint drawBuffer, void GL2Encoder::s_glClearBufferuiv(void* self, GLenum buffer, GLint drawBuffer, const GLuint * value) { GL2Encoder *ctx = (GL2Encoder *)self; - SET_ERROR_IF(buffer == GL_DEPTH || buffer == GL_STENCIL || buffer == GL_DEPTH_STENCIL, GL_INVALID_ENUM); + SET_ERROR_IF(buffer != GL_COLOR, GL_INVALID_ENUM); + SET_ERROR_IF(!value, GL_INVALID_VALUE); + + GLint maxDrawBuffers; + ctx->glGetIntegerv(ctx, GL_MAX_DRAW_BUFFERS, &maxDrawBuffers); + SET_ERROR_IF(drawBuffer < 0 || drawBuffer>= maxDrawBuffers, GL_INVALID_VALUE); ctx->m_glClearBufferuiv_enc(ctx, buffer, drawBuffer, value); } @@ -4483,11 +4916,31 @@ void GL2Encoder::s_glClearBufferuiv(void* self, GLenum buffer, GLint drawBuffer, void GL2Encoder::s_glClearBufferfv(void* self, GLenum buffer, GLint drawBuffer, const GLfloat * value) { GL2Encoder *ctx = (GL2Encoder *)self; - SET_ERROR_IF(buffer == GL_STENCIL || buffer == GL_DEPTH_STENCIL, GL_INVALID_ENUM); + SET_ERROR_IF(buffer != GL_COLOR && buffer != GL_DEPTH, GL_INVALID_ENUM); + + SET_ERROR_IF(!value, GL_INVALID_VALUE); + + GLint maxDrawBuffers; + ctx->glGetIntegerv(ctx, GL_MAX_DRAW_BUFFERS, &maxDrawBuffers); + + if (buffer == GL_COLOR) { + SET_ERROR_IF(drawBuffer < 0 || drawBuffer>= maxDrawBuffers, GL_INVALID_VALUE); + } else { + SET_ERROR_IF(drawBuffer != 0, GL_INVALID_VALUE); + } ctx->m_glClearBufferfv_enc(ctx, buffer, drawBuffer, value); } +void GL2Encoder::s_glClearBufferfi(void* self, GLenum buffer, GLint drawBuffer, float depth, int stencil) { + GL2Encoder *ctx = (GL2Encoder *)self; + + SET_ERROR_IF(buffer != GL_DEPTH_STENCIL, GL_INVALID_ENUM); + SET_ERROR_IF(drawBuffer != 0, GL_INVALID_VALUE); + + ctx->m_glClearBufferfi_enc(ctx, buffer, drawBuffer, depth, stencil); +} + void GL2Encoder::s_glBlitFramebuffer(void* self, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { GL2Encoder *ctx = (GL2Encoder *)self; GLClientState* state = ctx->m_state; @@ -4495,6 +4948,7 @@ void GL2Encoder::s_glBlitFramebuffer(void* self, GLint srcX0, GLint srcY0, GLint bool validateColor = mask & GL_COLOR_BUFFER_BIT; bool validateDepth = mask & GL_DEPTH_BUFFER_BIT; bool validateStencil = mask & GL_STENCIL_BUFFER_BIT; + bool validateDepthOrStencil = validateDepth || validateStencil; FboFormatInfo read_fbo_format_info; FboFormatInfo draw_fbo_format_info; @@ -4502,6 +4956,13 @@ void GL2Encoder::s_glBlitFramebuffer(void* self, GLint srcX0, GLint srcY0, GLint state->getBoundFramebufferFormat(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, &read_fbo_format_info); state->getBoundFramebufferFormat(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, &draw_fbo_format_info); + if (read_fbo_format_info.type == FBO_ATTACHMENT_TEXTURE) { + SET_ERROR_IF( + GL_LINEAR == filter && + GLESv2Validation::isIntegerFormat(read_fbo_format_info.tex_format), + GL_INVALID_OPERATION); + } + if (read_fbo_format_info.type == FBO_ATTACHMENT_TEXTURE && draw_fbo_format_info.type == FBO_ATTACHMENT_TEXTURE) { SET_ERROR_IF( @@ -4546,6 +5007,10 @@ void GL2Encoder::s_glBlitFramebuffer(void* self, GLint srcX0, GLint srcY0, GLint } } + if (validateDepthOrStencil) { + SET_ERROR_IF(filter != GL_NEAREST, GL_INVALID_OPERATION); + } + state->getBoundFramebufferFormat(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, &draw_fbo_format_info); SET_ERROR_IF( draw_fbo_format_info.type == FBO_ATTACHMENT_RENDERBUFFER && @@ -4633,6 +5098,17 @@ void GL2Encoder::s_glGenerateMipmap(void* self, GLenum target) { GLESv2Validation::filterableTexFormat(ctx, internalformat)), GL_INVALID_OPERATION); + GLenum stateTarget = target; + if (target == GL_TEXTURE_CUBE_MAP_POSITIVE_X || + target == GL_TEXTURE_CUBE_MAP_POSITIVE_Y || + target == GL_TEXTURE_CUBE_MAP_POSITIVE_Z || + target == GL_TEXTURE_CUBE_MAP_NEGATIVE_X || + target == GL_TEXTURE_CUBE_MAP_NEGATIVE_Y || + target == GL_TEXTURE_CUBE_MAP_NEGATIVE_Z) + stateTarget = GL_TEXTURE_CUBE_MAP; + + SET_ERROR_IF(!ctx->m_state->isBoundTextureComplete(stateTarget), GL_INVALID_OPERATION); + if (target == GL_TEXTURE_2D) { ctx->override2DTextureTarget(target); } @@ -4649,35 +5125,42 @@ void GL2Encoder::s_glBindSampler(void* self, GLuint unit, GLuint sampler) { GLint maxCombinedUnits; ctx->glGetIntegerv(ctx, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &maxCombinedUnits); SET_ERROR_IF(unit >= maxCombinedUnits, GL_INVALID_VALUE); - - ctx->doSamplerBindEncodeCached(unit, sampler); -} - -void GL2Encoder::doSamplerBindEncodeCached(GLuint unit, GLuint sampler) { - if (m_state->isSamplerBindNoOp(unit, sampler)) return; - m_glBindSampler_enc(this, unit, sampler); - m_state->bindSampler(unit, sampler); + SET_ERROR_IF(!ctx->m_state->samplerExists(sampler), GL_INVALID_OPERATION); + if (ctx->m_state->isSamplerBindNoOp(unit, sampler)) return; + ctx->m_glBindSampler_enc(ctx, unit, sampler); + ctx->m_state->bindSampler(unit, sampler); } void GL2Encoder::s_glDeleteSamplers(void* self, GLsizei n, const GLuint* samplers) { GL2Encoder *ctx = (GL2Encoder *)self; ctx->m_state->onDeleteSamplers(n, samplers); + ctx->m_state->setExistence(GLClientState::ObjectType::Sampler, false, n, samplers); ctx->m_glDeleteSamplers_enc(ctx, n, samplers); } GLsync GL2Encoder::s_glFenceSync(void* self, GLenum condition, GLbitfield flags) { GL2Encoder *ctx = (GL2Encoder *)self; + RET_AND_SET_ERROR_IF(condition != GL_SYNC_GPU_COMMANDS_COMPLETE, GL_INVALID_ENUM, 0); + RET_AND_SET_ERROR_IF(flags != 0, GL_INVALID_VALUE, 0); uint64_t syncHandle = ctx->glFenceSyncAEMU(ctx, condition, flags); - return (GLsync)(uintptr_t)syncHandle; + + GLsync res = (GLsync)(uintptr_t)syncHandle; + GLClientState::onFenceCreated(res); + return res; } GLenum GL2Encoder::s_glClientWaitSync(void* self, GLsync wait_on, GLbitfield flags, GLuint64 timeout) { GL2Encoder *ctx = (GL2Encoder *)self; + RET_AND_SET_ERROR_IF(!GLClientState::fenceExists(wait_on), GL_INVALID_VALUE, GL_WAIT_FAILED); + RET_AND_SET_ERROR_IF(flags && !(flags & GL_SYNC_FLUSH_COMMANDS_BIT), GL_INVALID_VALUE, GL_WAIT_FAILED); return ctx->glClientWaitSyncAEMU(ctx, (uint64_t)(uintptr_t)wait_on, flags, timeout); } void GL2Encoder::s_glWaitSync(void* self, GLsync wait_on, GLbitfield flags, GLuint64 timeout) { GL2Encoder *ctx = (GL2Encoder *)self; + SET_ERROR_IF(flags != 0, GL_INVALID_VALUE); + SET_ERROR_IF(timeout != GL_TIMEOUT_IGNORED, GL_INVALID_VALUE); + SET_ERROR_IF(!GLClientState::fenceExists(wait_on), GL_INVALID_VALUE); ctx->glWaitSyncAEMU(ctx, (uint64_t)(uintptr_t)wait_on, flags, timeout); } @@ -4686,6 +5169,8 @@ void GL2Encoder::s_glDeleteSync(void* self, GLsync sync) { if (!sync) return; + SET_ERROR_IF(!GLClientState::fenceExists(sync), GL_INVALID_VALUE); + GLClientState::onFenceDestroyed(sync); ctx->glDeleteSyncAEMU(ctx, (uint64_t)(uintptr_t)sync); } @@ -4697,7 +5182,9 @@ GLboolean GL2Encoder::s_glIsSync(void* self, GLsync sync) { void GL2Encoder::s_glGetSynciv(void* self, GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) { GL2Encoder *ctx = (GL2Encoder *)self; + SET_ERROR_IF(!GLESv2Validation::allowedGetSyncParam(pname), GL_INVALID_ENUM); SET_ERROR_IF(bufSize < 0, GL_INVALID_VALUE); + SET_ERROR_IF(!GLClientState::fenceExists(sync), GL_INVALID_VALUE); return ctx->glGetSyncivAEMU(ctx, (uint64_t)(uintptr_t)sync, pname, bufSize, length, values); } @@ -4819,6 +5306,10 @@ void GL2Encoder::s_glGetBooleani_v(void* self, GLenum param, GLuint index, GLboo void GL2Encoder::s_glGetShaderiv(void* self, GLuint shader, GLenum pname, GLint* params) { GL2Encoder *ctx = (GL2Encoder *)self; ctx->m_glGetShaderiv_enc(self, shader, pname, params); + + SET_ERROR_IF(!GLESv2Validation::allowedGetShader(pname), GL_INVALID_ENUM); + VALIDATE_SHADER_NAME(shader); + if (pname == GL_SHADER_SOURCE_LENGTH) { ShaderData* shaderData = ctx->m_shared->getShaderData(shader); if (shaderData) { @@ -4848,7 +5339,7 @@ void GL2Encoder::s_glActiveShaderProgram(void* self, GLuint pipeline, GLuint pro } } -GLuint GL2Encoder::s_glCreateShaderProgramv(void* self, GLenum type, GLsizei count, const char** strings) { +GLuint GL2Encoder::s_glCreateShaderProgramv(void* self, GLenum shaderType, GLsizei count, const char** strings) { GLint* length = NULL; GL2Encoder* ctx = (GL2Encoder*)self; @@ -4869,12 +5360,13 @@ GLuint GL2Encoder::s_glCreateShaderProgramv(void* self, GLenum type, GLsizei cou return -1; } - GLuint res = ctx->glCreateShaderProgramvAEMU(ctx, type, count, str, len + 1); + GLuint res = ctx->glCreateShaderProgramvAEMU(ctx, shaderType, count, str, len + 1); delete [] str; // Phase 2: do glLinkProgram-related initialization for locationWorkARound GLint linkStatus = 0; - ctx->glGetProgramiv(self, res, GL_LINK_STATUS ,&linkStatus); + ctx->m_glGetProgramiv_enc(self, res, GL_LINK_STATUS ,&linkStatus); + ctx->m_shared->setProgramLinkStatus(res, linkStatus); if (!linkStatus) { ctx->m_shared->deleteShaderProgramDataById(spDataId); return -1; @@ -4883,20 +5375,39 @@ GLuint GL2Encoder::s_glCreateShaderProgramv(void* self, GLenum type, GLsizei cou ctx->m_shared->associateGLShaderProgram(res, spDataId); GLint numUniforms = 0; - ctx->glGetProgramiv(self, res, GL_ACTIVE_UNIFORMS, &numUniforms); - ctx->m_shared->initShaderProgramData(res, numUniforms); + GLint numAttributes = 0; + ctx->m_glGetProgramiv_enc(self, res, GL_ACTIVE_UNIFORMS, &numUniforms); + ctx->m_glGetProgramiv_enc(self, res, GL_ACTIVE_ATTRIBUTES, &numAttributes); + ctx->m_shared->initShaderProgramData(res, numUniforms, numAttributes); GLint maxLength=0; - ctx->glGetProgramiv(self, res, GL_ACTIVE_UNIFORM_MAX_LENGTH, &maxLength); + GLint maxAttribLength=0; + ctx->m_glGetProgramiv_enc(self, res, GL_ACTIVE_UNIFORM_MAX_LENGTH, &maxLength); + ctx->m_glGetProgramiv_enc(self, res, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &maxAttribLength); - GLint size; GLenum uniformType; GLchar* name = new GLchar[maxLength + 1]; + size_t bufLen = maxLength > maxAttribLength ? maxLength : maxAttribLength; + GLint size; GLenum type; GLchar *name = new GLchar[bufLen + 1]; for (GLint i = 0; i < numUniforms; ++i) { - ctx->glGetActiveUniform(self, res, i, maxLength, NULL, &size, &uniformType, name); + ctx->m_glGetActiveUniform_enc(self, res, i, maxLength, NULL, &size, &type, name); GLint location = ctx->m_glGetUniformLocation_enc(self, res, name); - ctx->m_shared->setShaderProgramIndexInfo(res, i, location, size, uniformType, name); + ctx->m_shared->setShaderProgramIndexInfo(res, i, location, size, type, name); + } + + for (GLint i = 0; i < numAttributes; ++i) { + ctx->m_glGetActiveAttrib_enc(self, res, i, maxAttribLength, NULL, &size, &type, name); + GLint location = ctx->m_glGetAttribLocation_enc(self, res, name); + ctx->m_shared->setProgramAttribInfo(res, i, location, size, type, name); } + GLint numBlocks; + ctx->m_glGetProgramiv_enc(ctx, res, GL_ACTIVE_UNIFORM_BLOCKS, &numBlocks); + ctx->m_shared->setActiveUniformBlockCountForProgram(res, numBlocks); + + GLint tfVaryingsCount; + ctx->m_glGetProgramiv_enc(ctx, res, GL_TRANSFORM_FEEDBACK_VARYINGS, &tfVaryingsCount); + ctx->m_shared->setTransformFeedbackVaryingsCountForProgram(res, tfVaryingsCount); + delete [] name; return res; @@ -4905,22 +5416,19 @@ GLuint GL2Encoder::s_glCreateShaderProgramv(void* self, GLenum type, GLsizei cou void GL2Encoder::s_glProgramUniform1f(void* self, GLuint program, GLint location, GLfloat v0) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform1f_enc(self, program, hostLoc, v0); + ctx->m_glProgramUniform1f_enc(self, program, location, v0); } void GL2Encoder::s_glProgramUniform1fv(void* self, GLuint program, GLint location, GLsizei count, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform1fv_enc(self, program, hostLoc, count, value); + ctx->m_glProgramUniform1fv_enc(self, program, location, count, value); } void GL2Encoder::s_glProgramUniform1i(void* self, GLuint program, GLint location, GLint v0) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform1i_enc(self, program, hostLoc, v0); + ctx->m_glProgramUniform1i_enc(self, program, location, v0); GLClientState* state = ctx->m_state; GLSharedGroupPtr shared = ctx->m_shared; @@ -4938,15 +5446,13 @@ void GL2Encoder::s_glProgramUniform1i(void* self, GLuint program, GLint location void GL2Encoder::s_glProgramUniform1iv(void* self, GLuint program, GLint location, GLsizei count, const GLint *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform1iv_enc(self, program, hostLoc, count, value); + ctx->m_glProgramUniform1iv_enc(self, program, location, count, value); } void GL2Encoder::s_glProgramUniform1ui(void* self, GLuint program, GLint location, GLuint v0) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform1ui_enc(self, program, hostLoc, v0); + ctx->m_glProgramUniform1ui_enc(self, program, location, v0); GLClientState* state = ctx->m_state; GLSharedGroupPtr shared = ctx->m_shared; @@ -4964,201 +5470,176 @@ void GL2Encoder::s_glProgramUniform1ui(void* self, GLuint program, GLint locatio void GL2Encoder::s_glProgramUniform1uiv(void* self, GLuint program, GLint location, GLsizei count, const GLuint *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform1uiv_enc(self, program, hostLoc, count, value); + ctx->m_glProgramUniform1uiv_enc(self, program, location, count, value); } void GL2Encoder::s_glProgramUniform2f(void* self, GLuint program, GLint location, GLfloat v0, GLfloat v1) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform2f_enc(self, program, hostLoc, v0, v1); + ctx->m_glProgramUniform2f_enc(self, program, location, v0, v1); } void GL2Encoder::s_glProgramUniform2fv(void* self, GLuint program, GLint location, GLsizei count, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform2fv_enc(self, program, hostLoc, count, value); + ctx->m_glProgramUniform2fv_enc(self, program, location, count, value); } void GL2Encoder::s_glProgramUniform2i(void* self, GLuint program, GLint location, GLint v0, GLint v1) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform2i_enc(self, program, hostLoc, v0, v1); + ctx->m_glProgramUniform2i_enc(self, program, location, v0, v1); } void GL2Encoder::s_glProgramUniform2iv(void* self, GLuint program, GLint location, GLsizei count, const GLint *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform2iv_enc(self, program, hostLoc, count, value); + ctx->m_glProgramUniform2iv_enc(self, program, location, count, value); } void GL2Encoder::s_glProgramUniform2ui(void* self, GLuint program, GLint location, GLint v0, GLuint v1) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform2ui_enc(self, program, hostLoc, v0, v1); + ctx->m_glProgramUniform2ui_enc(self, program, location, v0, v1); } void GL2Encoder::s_glProgramUniform2uiv(void* self, GLuint program, GLint location, GLsizei count, const GLuint *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform2uiv_enc(self, program, hostLoc, count, value); + ctx->m_glProgramUniform2uiv_enc(self, program, location, count, value); } void GL2Encoder::s_glProgramUniform3f(void* self, GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform3f_enc(self, program, hostLoc, v0, v1, v2); + ctx->m_glProgramUniform3f_enc(self, program, location, v0, v1, v2); } void GL2Encoder::s_glProgramUniform3fv(void* self, GLuint program, GLint location, GLsizei count, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform3fv_enc(self, program, hostLoc, count, value); + ctx->m_glProgramUniform3fv_enc(self, program, location, count, value); } void GL2Encoder::s_glProgramUniform3i(void* self, GLuint program, GLint location, GLint v0, GLint v1, GLint v2) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform3i_enc(self, program, hostLoc, v0, v1, v2); + ctx->m_glProgramUniform3i_enc(self, program, location, v0, v1, v2); } void GL2Encoder::s_glProgramUniform3iv(void* self, GLuint program, GLint location, GLsizei count, const GLint *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform3iv_enc(self, program, hostLoc, count, value); + ctx->m_glProgramUniform3iv_enc(self, program, location, count, value); } void GL2Encoder::s_glProgramUniform3ui(void* self, GLuint program, GLint location, GLint v0, GLint v1, GLuint v2) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform3ui_enc(self, program, hostLoc, v0, v1, v2); + ctx->m_glProgramUniform3ui_enc(self, program, location, v0, v1, v2); } void GL2Encoder::s_glProgramUniform3uiv(void* self, GLuint program, GLint location, GLsizei count, const GLuint *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform3uiv_enc(self, program, hostLoc, count, value); + ctx->m_glProgramUniform3uiv_enc(self, program, location, count, value); } void GL2Encoder::s_glProgramUniform4f(void* self, GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform4f_enc(self, program, hostLoc, v0, v1, v2, v3); + ctx->m_glProgramUniform4f_enc(self, program, location, v0, v1, v2, v3); } void GL2Encoder::s_glProgramUniform4fv(void* self, GLuint program, GLint location, GLsizei count, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform4fv_enc(self, program, hostLoc, count, value); + ctx->m_glProgramUniform4fv_enc(self, program, location, count, value); } void GL2Encoder::s_glProgramUniform4i(void* self, GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform4i_enc(self, program, hostLoc, v0, v1, v2, v3); + ctx->m_glProgramUniform4i_enc(self, program, location, v0, v1, v2, v3); } void GL2Encoder::s_glProgramUniform4iv(void* self, GLuint program, GLint location, GLsizei count, const GLint *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform4iv_enc(self, program, hostLoc, count, value); + ctx->m_glProgramUniform4iv_enc(self, program, location, count, value); } void GL2Encoder::s_glProgramUniform4ui(void* self, GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLuint v3) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform4ui_enc(self, program, hostLoc, v0, v1, v2, v3); + ctx->m_glProgramUniform4ui_enc(self, program, location, v0, v1, v2, v3); } void GL2Encoder::s_glProgramUniform4uiv(void* self, GLuint program, GLint location, GLsizei count, const GLuint *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniform4uiv_enc(self, program, hostLoc, count, value); + ctx->m_glProgramUniform4uiv_enc(self, program, location, count, value); } void GL2Encoder::s_glProgramUniformMatrix2fv(void* self, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniformMatrix2fv_enc(self, program, hostLoc, count, transpose, value); + ctx->m_glProgramUniformMatrix2fv_enc(self, program, location, count, transpose, value); } void GL2Encoder::s_glProgramUniformMatrix2x3fv(void* self, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniformMatrix2x3fv_enc(self, program, hostLoc, count, transpose, value); + ctx->m_glProgramUniformMatrix2x3fv_enc(self, program, location, count, transpose, value); } void GL2Encoder::s_glProgramUniformMatrix2x4fv(void* self, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniformMatrix2x4fv_enc(self, program, hostLoc, count, transpose, value); + ctx->m_glProgramUniformMatrix2x4fv_enc(self, program, location, count, transpose, value); } void GL2Encoder::s_glProgramUniformMatrix3fv(void* self, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniformMatrix3fv_enc(self, program, hostLoc, count, transpose, value); + ctx->m_glProgramUniformMatrix3fv_enc(self, program, location, count, transpose, value); } void GL2Encoder::s_glProgramUniformMatrix3x2fv(void* self, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniformMatrix3x2fv_enc(self, program, hostLoc, count, transpose, value); + ctx->m_glProgramUniformMatrix3x2fv_enc(self, program, location, count, transpose, value); } void GL2Encoder::s_glProgramUniformMatrix3x4fv(void* self, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniformMatrix3x4fv_enc(self, program, hostLoc, count, transpose, value); + ctx->m_glProgramUniformMatrix3x4fv_enc(self, program, location, count, transpose, value); } void GL2Encoder::s_glProgramUniformMatrix4fv(void* self, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniformMatrix4fv_enc(self, program, hostLoc, count, transpose, value); + ctx->m_glProgramUniformMatrix4fv_enc(self, program, location, count, transpose, value); } void GL2Encoder::s_glProgramUniformMatrix4x2fv(void* self, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniformMatrix4x2fv_enc(self, program, hostLoc, count, transpose, value); + ctx->m_glProgramUniformMatrix4x2fv_enc(self, program, location, count, transpose, value); } void GL2Encoder::s_glProgramUniformMatrix4x3fv(void* self, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GL2Encoder *ctx = (GL2Encoder*)self; - GLint hostLoc = location; - ctx->m_glProgramUniformMatrix4x3fv_enc(self, program, hostLoc, count, transpose, value); + ctx->m_glProgramUniformMatrix4x3fv_enc(self, program, location, count, transpose, value); } void GL2Encoder::s_glProgramParameteri(void* self, GLuint program, GLenum pname, GLint value) { GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_PROGRAM_NAME(program); + SET_ERROR_IF(pname != GL_PROGRAM_BINARY_RETRIEVABLE_HINT && pname != GL_PROGRAM_SEPARABLE, GL_INVALID_ENUM); + SET_ERROR_IF(value != GL_FALSE && value != GL_TRUE, GL_INVALID_VALUE); ctx->m_glProgramParameteri_enc(self, program, pname, value); } @@ -5182,6 +5663,11 @@ void GL2Encoder::s_glUseProgramStages(void *self, GLuint pipeline, GLbitfield st // Otherwise, update host texture 2D bindings. ctx->updateHostTexture2DBindingsFromProgramData(program); + + if (program) { + ctx->m_state->currentUniformValidationInfo = ctx->m_shared->getUniformValidationInfo(program); + ctx->m_state->currentAttribValidationInfo = ctx->m_shared->getAttribValidationInfo(program); + } } void GL2Encoder::s_glBindProgramPipeline(void* self, GLuint pipeline) @@ -5349,6 +5835,7 @@ void GL2Encoder::s_glDrawArraysIndirect(void* self, GLenum mode, const void* ind SET_ERROR_IF(hasClientArrays, GL_INVALID_OPERATION); SET_ERROR_IF(!state->currentVertexArrayObject(), GL_INVALID_OPERATION); SET_ERROR_IF(!ctx->boundBuffer(GL_DRAW_INDIRECT_BUFFER), GL_INVALID_OPERATION); + SET_ERROR_IF(ctx->m_state->checkFramebufferCompleteness(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, GL_INVALID_FRAMEBUFFER_OPERATION); GLuint indirectStructSize = glUtilsIndirectStructSize(INDIRECT_COMMAND_DRAWARRAYS); if (ctx->boundBuffer(GL_DRAW_INDIRECT_BUFFER)) { @@ -5362,6 +5849,7 @@ void GL2Encoder::s_glDrawArraysIndirect(void* self, GLenum mode, const void* ind // This is purely for debug/dev purposes. ctx->glDrawArraysIndirectDataAEMU(ctx, mode, indirect, indirectStructSize); } + ctx->m_state->postDraw(); } void GL2Encoder::s_glDrawElementsIndirect(void* self, GLenum mode, GLenum type, const void* indirect) { @@ -5378,6 +5866,7 @@ void GL2Encoder::s_glDrawElementsIndirect(void* self, GLenum mode, GLenum type, SET_ERROR_IF(!ctx->boundBuffer(GL_DRAW_INDIRECT_BUFFER), GL_INVALID_OPERATION); SET_ERROR_IF(ctx->m_state->getTransformFeedbackActiveUnpaused(), GL_INVALID_OPERATION); + SET_ERROR_IF(ctx->m_state->checkFramebufferCompleteness(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, GL_INVALID_FRAMEBUFFER_OPERATION); GLuint indirectStructSize = glUtilsIndirectStructSize(INDIRECT_COMMAND_DRAWELEMENTS); if (ctx->boundBuffer(GL_DRAW_INDIRECT_BUFFER)) { @@ -5391,7 +5880,7 @@ void GL2Encoder::s_glDrawElementsIndirect(void* self, GLenum mode, GLenum type, // This is purely for debug/dev purposes. ctx->glDrawElementsIndirectDataAEMU(ctx, mode, type, indirect, indirectStructSize); } - + ctx->m_state->postDraw(); } void GL2Encoder::s_glTexStorage2DMultisample(void* self, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) { @@ -5408,7 +5897,7 @@ void GL2Encoder::s_glTexStorage2DMultisample(void* self, GLenum target, GLsizei SET_ERROR_IF(samples > max_samples, GL_INVALID_OPERATION); state->setBoundTextureInternalFormat(target, internalformat); - state->setBoundTextureDims(target, 0, width, height, 1); + state->setBoundTextureDims(target, target, 0, width, height, 1); state->setBoundTextureImmutableFormat(target); state->setBoundTextureSamples(target, samples); @@ -5427,6 +5916,7 @@ void GL2Encoder::s_glReadnPixelsEXT(void* self, GLint x, GLint y, GLsizei width, SET_ERROR_IF(bufSize < glesv2_enc::pixelDataSize(self, width, height, format, type, 1), GL_INVALID_OPERATION); s_glReadPixels(self, x, y, width, height, format, type, pixels); + ctx->m_state->postReadPixels(); } void GL2Encoder::s_glGetnUniformfvEXT(void *self, GLuint program, GLint location, @@ -5447,14 +5937,627 @@ void GL2Encoder::s_glGetnUniformivEXT(void *self, GLuint program, GLint location void GL2Encoder::s_glInvalidateFramebuffer(void* self, GLenum target, GLsizei numAttachments, const GLenum *attachments) { GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF((target != GL_FRAMEBUFFER) && + (target != GL_READ_FRAMEBUFFER) && + (target != GL_DRAW_FRAMEBUFFER), GL_INVALID_ENUM); SET_ERROR_IF(numAttachments < 0, GL_INVALID_VALUE); + + GLint maxColorAttachments; + ctx->glGetIntegerv(ctx, GL_MAX_COLOR_ATTACHMENTS, &maxColorAttachments); + for (GLsizei i = 0; i < numAttachments; ++i) { + if (attachments[i] != GL_DEPTH_ATTACHMENT && attachments[i] != GL_STENCIL_ATTACHMENT && attachments[i] != GL_DEPTH_STENCIL_ATTACHMENT) { + SET_ERROR_IF(attachments[i] >= GL_COLOR_ATTACHMENT0 + maxColorAttachments, GL_INVALID_OPERATION); + } + } + ctx->m_glInvalidateFramebuffer_enc(ctx, target, numAttachments, attachments); } void GL2Encoder::s_glInvalidateSubFramebuffer(void* self, GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) { GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF(target != GL_FRAMEBUFFER && target != GL_READ_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER, GL_INVALID_ENUM); SET_ERROR_IF(numAttachments < 0, GL_INVALID_VALUE); SET_ERROR_IF(width < 0, GL_INVALID_VALUE); SET_ERROR_IF(height < 0, GL_INVALID_VALUE); + GLint maxColorAttachments; + ctx->glGetIntegerv(ctx, GL_MAX_COLOR_ATTACHMENTS, &maxColorAttachments); + for (GLsizei i = 0; i < numAttachments; ++i) { + if (attachments[i] != GL_DEPTH_ATTACHMENT && attachments[i] != GL_STENCIL_ATTACHMENT && attachments[i] != GL_DEPTH_STENCIL_ATTACHMENT) { + SET_ERROR_IF(attachments[i] >= GL_COLOR_ATTACHMENT0 + maxColorAttachments, GL_INVALID_OPERATION); + } + } ctx->m_glInvalidateSubFramebuffer_enc(ctx, target, numAttachments, attachments, x, y, width, height); } + +void GL2Encoder::s_glDispatchCompute(void* self, GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) { + GL2Encoder *ctx = (GL2Encoder*)self; + ctx->m_glDispatchCompute_enc(ctx, num_groups_x, num_groups_y, num_groups_z); + ctx->m_state->postDispatchCompute(); +} + +void GL2Encoder::s_glDispatchComputeIndirect(void* self, GLintptr indirect) { + GL2Encoder *ctx = (GL2Encoder*)self; + ctx->m_glDispatchComputeIndirect_enc(ctx, indirect); + ctx->m_state->postDispatchCompute(); +} + +void GL2Encoder::s_glGenTransformFeedbacks(void* self, GLsizei n, GLuint* ids) { + GL2Encoder *ctx = (GL2Encoder*)self; + ctx->m_glGenTransformFeedbacks_enc(ctx, n, ids); + ctx->m_state->setExistence(GLClientState::ObjectType::TransformFeedback, true, n, ids); +} + +void GL2Encoder::s_glDeleteTransformFeedbacks(void* self, GLsizei n, const GLuint* ids) { + GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF(ctx->m_state->getTransformFeedbackActive(), GL_INVALID_OPERATION); + + ctx->m_state->setExistence(GLClientState::ObjectType::TransformFeedback, false, n, ids); + ctx->m_glDeleteTransformFeedbacks_enc(ctx, n, ids); +} + +void GL2Encoder::s_glGenSamplers(void* self, GLsizei n, GLuint* ids) { + GL2Encoder *ctx = (GL2Encoder*)self; + ctx->m_glGenSamplers_enc(ctx, n, ids); + ctx->m_state->setExistence(GLClientState::ObjectType::Sampler, true, n, ids); +} + +void GL2Encoder::s_glGenQueries(void* self, GLsizei n, GLuint* ids) { + GL2Encoder *ctx = (GL2Encoder*)self; + ctx->m_glGenQueries_enc(ctx, n, ids); + ctx->m_state->setExistence(GLClientState::ObjectType::Query, true, n, ids); +} + +void GL2Encoder::s_glDeleteQueries(void* self, GLsizei n, const GLuint* ids) { + GL2Encoder *ctx = (GL2Encoder*)self; + ctx->m_state->setExistence(GLClientState::ObjectType::Query, false, n, ids); + ctx->m_glDeleteQueries_enc(ctx, n, ids); +} + +void GL2Encoder::s_glBindTransformFeedback(void* self, GLenum target, GLuint id) { + GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF(GL_TRANSFORM_FEEDBACK != target, GL_INVALID_ENUM); + SET_ERROR_IF(ctx->m_state->getTransformFeedbackActiveUnpaused(), GL_INVALID_OPERATION); + SET_ERROR_IF(!ctx->m_state->tryBind(target, id), GL_INVALID_OPERATION); + ctx->m_glBindTransformFeedback_enc(ctx, target, id); +} + +void GL2Encoder::s_glBeginQuery(void* self, GLenum target, GLuint query) { + GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF(!GLESv2Validation::allowedQueryTarget(target), GL_INVALID_ENUM); + + if (target != GL_ANY_SAMPLES_PASSED_CONSERVATIVE && + target != GL_ANY_SAMPLES_PASSED) { + SET_ERROR_IF(ctx->m_state->isQueryBound(target), GL_INVALID_OPERATION); + } else { + SET_ERROR_IF(ctx->m_state->isQueryBound(GL_ANY_SAMPLES_PASSED_CONSERVATIVE), GL_INVALID_OPERATION); + SET_ERROR_IF(ctx->m_state->isQueryBound(GL_ANY_SAMPLES_PASSED), GL_INVALID_OPERATION); + } + + GLenum lastTarget = ctx->m_state->getLastQueryTarget(query); + + if (lastTarget) { + SET_ERROR_IF(target != lastTarget, GL_INVALID_OPERATION); + } + + SET_ERROR_IF(!query, GL_INVALID_OPERATION); + SET_ERROR_IF(!ctx->m_state->tryBind(target, query), GL_INVALID_OPERATION); + ctx->m_state->setLastQueryTarget(target, query); + ctx->m_glBeginQuery_enc(ctx, target, query); +} + +void GL2Encoder::s_glEndQuery(void* self, GLenum target) { + GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF(!GLESv2Validation::allowedQueryTarget(target), GL_INVALID_ENUM); + SET_ERROR_IF(!ctx->m_state->isBoundTargetValid(target), GL_INVALID_OPERATION); + SET_ERROR_IF(!ctx->m_state->tryBind(target, 0), GL_INVALID_OPERATION); + ctx->m_glEndQuery_enc(ctx, target); +} + +void GL2Encoder::s_glClear(void* self, GLbitfield mask) { + GL2Encoder *ctx = (GL2Encoder*)self; + + GLbitfield allowed_bits = GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT; + GLbitfield has_disallowed_bits = (mask & ~allowed_bits); + SET_ERROR_IF(has_disallowed_bits, GL_INVALID_VALUE); + + ctx->m_glClear_enc(ctx, mask); +} + +void GL2Encoder::s_glCopyTexSubImage2D(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { + GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF(!GLESv2Validation::textureTarget(ctx, target), GL_INVALID_ENUM); + SET_ERROR_IF(level < 0, GL_INVALID_VALUE); + GLint max_texture_size; + GLint max_cube_map_texture_size; + ctx->glGetIntegerv(ctx, GL_MAX_TEXTURE_SIZE, &max_texture_size); + ctx->glGetIntegerv(ctx, GL_MAX_CUBE_MAP_TEXTURE_SIZE, &max_cube_map_texture_size); + SET_ERROR_IF(level > ilog2(max_texture_size), GL_INVALID_VALUE); + SET_ERROR_IF((target == GL_TEXTURE_CUBE_MAP) && + (level > ilog2(max_cube_map_texture_size)), GL_INVALID_VALUE); + SET_ERROR_IF(xoffset < 0 || yoffset < 0, GL_INVALID_VALUE); + SET_ERROR_IF(width < 0 || height < 0, GL_INVALID_VALUE); + SET_ERROR_IF(width > max_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(height > max_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(GLESv2Validation::isCubeMapTarget(target) && width > max_cube_map_texture_size, GL_INVALID_VALUE); + SET_ERROR_IF(GLESv2Validation::isCubeMapTarget(target) && height > max_cube_map_texture_size, GL_INVALID_VALUE); + GLuint tex = ctx->m_state->getBoundTexture(target); + GLsizei neededWidth = xoffset + width; + GLsizei neededHeight = yoffset + height; + SET_ERROR_IF(tex && + (neededWidth > ctx->m_state->queryTexWidth(level, tex) || + neededHeight > ctx->m_state->queryTexHeight(level, tex)), + GL_INVALID_VALUE); + SET_ERROR_IF(ctx->glCheckFramebufferStatus(ctx, GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, + GL_INVALID_FRAMEBUFFER_OPERATION); + + ctx->m_glCopyTexSubImage2D_enc(ctx, target, level, xoffset, yoffset, x, y, width, height); +} + +void GL2Encoder::s_glCopyTexSubImage3D(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { + GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF(target != GL_TEXTURE_3D && + target != GL_TEXTURE_2D_ARRAY, + GL_INVALID_ENUM); + GLint max_texture_size; + GLint max_3d_texture_size; + ctx->glGetIntegerv(ctx, GL_MAX_TEXTURE_SIZE, &max_texture_size); + ctx->glGetIntegerv(ctx, GL_MAX_3D_TEXTURE_SIZE, &max_3d_texture_size); + SET_ERROR_IF(level < 0, GL_INVALID_VALUE); + SET_ERROR_IF(level > ilog2(max_texture_size), GL_INVALID_VALUE); + SET_ERROR_IF(level > ilog2(max_3d_texture_size), GL_INVALID_VALUE); + SET_ERROR_IF(width < 0 || height < 0, GL_INVALID_VALUE); + SET_ERROR_IF(xoffset < 0 || yoffset < 0 || zoffset < 0, GL_INVALID_VALUE); + GLuint tex = ctx->m_state->getBoundTexture(target); + GLsizei neededWidth = xoffset + width; + GLsizei neededHeight = yoffset + height; + GLsizei neededDepth = zoffset + 1; + SET_ERROR_IF(tex && + (neededWidth > ctx->m_state->queryTexWidth(level, tex) || + neededHeight > ctx->m_state->queryTexHeight(level, tex) || + neededDepth > ctx->m_state->queryTexDepth(level, tex)), + GL_INVALID_VALUE); + SET_ERROR_IF(ctx->glCheckFramebufferStatus(ctx, GL_READ_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, + GL_INVALID_FRAMEBUFFER_OPERATION); + + ctx->m_glCopyTexSubImage3D_enc(ctx, target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +void GL2Encoder::s_glCompileShader(void* self, GLuint shader) { + GL2Encoder *ctx = (GL2Encoder*)self; + bool isShaderOrProgramObject = + ctx->m_shared->isShaderOrProgramObject(shader); + bool isShader = + ctx->m_shared->isShader(shader); + + SET_ERROR_IF(isShaderOrProgramObject && !isShader, GL_INVALID_OPERATION); + SET_ERROR_IF(!isShaderOrProgramObject && !isShader, GL_INVALID_VALUE); + + ctx->m_glCompileShader_enc(ctx, shader); +} + +void GL2Encoder::s_glValidateProgram(void* self, GLuint program ) { + GL2Encoder *ctx = (GL2Encoder*)self; + + VALIDATE_PROGRAM_NAME(program); + + ctx->m_glValidateProgram_enc(self, program); +} + +void GL2Encoder::s_glProgramBinary(void *self , GLuint program, GLenum binaryFormat, const void* binary, GLsizei length) { + GL2Encoder *ctx = (GL2Encoder*)self; + + VALIDATE_PROGRAM_NAME(program); + + SET_ERROR_IF(~0 == binaryFormat, GL_INVALID_ENUM); + + ctx->m_glProgramBinary_enc(self, program, binaryFormat, binary, length); +} + +void GL2Encoder::s_glGetSamplerParameterfv(void *self, GLuint sampler, GLenum pname, GLfloat* params) { + GL2Encoder *ctx = (GL2Encoder*)self; + + SET_ERROR_IF(!ctx->m_state->samplerExists(sampler), GL_INVALID_OPERATION); + SET_ERROR_IF(!GLESv2Validation::samplerParams(ctx, pname), GL_INVALID_ENUM); + + if (!params) return; + + ctx->m_glGetSamplerParameterfv_enc(ctx, sampler, pname, params); +} + +void GL2Encoder::s_glGetSamplerParameteriv(void *self, GLuint sampler, GLenum pname, GLint* params) { + GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF(!ctx->m_state->samplerExists(sampler), GL_INVALID_OPERATION); + SET_ERROR_IF(!GLESv2Validation::samplerParams(ctx, pname), GL_INVALID_ENUM); + + if (!params) return; + + ctx->m_glGetSamplerParameteriv_enc(ctx, sampler, pname, params); +} + +void GL2Encoder::s_glSamplerParameterf(void *self , GLuint sampler, GLenum pname, GLfloat param) { + GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF(!ctx->m_state->samplerExists(sampler), GL_INVALID_OPERATION); + SET_ERROR_IF(!GLESv2Validation::samplerParams(ctx, pname), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureParamValue(ctx, pname, (GLint)param, param, (GLenum)param), GL_INVALID_ENUM); + + ctx->m_glSamplerParameterf_enc(ctx, sampler, pname, param); +} + +void GL2Encoder::s_glSamplerParameteri(void *self , GLuint sampler, GLenum pname, GLint param) { + GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF(!ctx->m_state->samplerExists(sampler), GL_INVALID_OPERATION); + SET_ERROR_IF(!GLESv2Validation::samplerParams(ctx, pname), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::textureParamValue(ctx, pname, param, (GLfloat)param, (GLenum)param), GL_INVALID_ENUM); + + ctx->m_glSamplerParameteri_enc(ctx, sampler, pname, param); +} + +void GL2Encoder::s_glSamplerParameterfv(void *self , GLuint sampler, GLenum pname, const GLfloat* params) { + GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF(!ctx->m_state->samplerExists(sampler), GL_INVALID_OPERATION); + SET_ERROR_IF(!GLESv2Validation::samplerParams(ctx, pname), GL_INVALID_ENUM); + SET_ERROR_IF(!params, GL_INVALID_VALUE); + GLfloat param = *params; + SET_ERROR_IF(!GLESv2Validation::textureParamValue(ctx, pname, (GLint)param, param, (GLenum)param), GL_INVALID_ENUM); + + ctx->m_glSamplerParameterfv_enc(ctx, sampler, pname, params); +} + +void GL2Encoder::s_glSamplerParameteriv(void *self , GLuint sampler, GLenum pname, const GLint* params) { + GL2Encoder *ctx = (GL2Encoder*)self; + SET_ERROR_IF(!ctx->m_state->samplerExists(sampler), GL_INVALID_OPERATION); + SET_ERROR_IF(!GLESv2Validation::samplerParams(ctx, pname), GL_INVALID_ENUM); + SET_ERROR_IF(!params, GL_INVALID_VALUE); + GLint param = *params; + SET_ERROR_IF(!GLESv2Validation::textureParamValue(ctx, pname, (GLint)param, param, (GLenum)param), GL_INVALID_ENUM); + + ctx->m_glSamplerParameteriv_enc(ctx, sampler, pname, params); +} + +int GL2Encoder::s_glGetAttribLocation(void *self , GLuint program, const GLchar* name) { + GL2Encoder *ctx = (GL2Encoder*)self; + + bool isShaderOrProgramObject = + ctx->m_shared->isShaderOrProgramObject(program); + bool isProgram = + ctx->m_shared->isProgram(program); + + RET_AND_SET_ERROR_IF(!isShaderOrProgramObject, GL_INVALID_VALUE, -1); + RET_AND_SET_ERROR_IF(!isProgram, GL_INVALID_OPERATION, -1); + RET_AND_SET_ERROR_IF(!ctx->m_shared->getProgramLinkStatus(program), GL_INVALID_OPERATION, -1); + + return ctx->m_glGetAttribLocation_enc(ctx, program, name); +} + +void GL2Encoder::s_glBindAttribLocation(void *self , GLuint program, GLuint index, const GLchar* name) { + GL2Encoder* ctx = (GL2Encoder*)self; + + VALIDATE_PROGRAM_NAME(program); + + GLint maxVertexAttribs; + ctx->glGetIntegerv(self, GL_MAX_VERTEX_ATTRIBS, &maxVertexAttribs); + SET_ERROR_IF(!(index < maxVertexAttribs), GL_INVALID_VALUE); + SET_ERROR_IF(index > maxVertexAttribs, GL_INVALID_VALUE); + SET_ERROR_IF(name && !strncmp("gl_", name, 3), GL_INVALID_OPERATION); + + fprintf(stderr, "%s: bind attrib %u name %s\n", __func__, index, name); + ctx->m_glBindAttribLocation_enc(ctx, program, index, name); +} + +// TODO-SLOW +void GL2Encoder::s_glUniformBlockBinding(void *self , GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) { + GL2Encoder* ctx = (GL2Encoder*)self; + + VALIDATE_PROGRAM_NAME(program); + SET_ERROR_IF(uniformBlockIndex >= ctx->m_shared->getActiveUniformBlockCount(program), GL_INVALID_VALUE); + + GLint maxUniformBufferBindings; + ctx->glGetIntegerv(ctx, GL_MAX_UNIFORM_BUFFER_BINDINGS, &maxUniformBufferBindings); + SET_ERROR_IF(uniformBlockBinding >= maxUniformBufferBindings, GL_INVALID_VALUE); + + ctx->m_glUniformBlockBinding_enc(ctx, program, uniformBlockIndex, uniformBlockBinding); +} + +void GL2Encoder::s_glGetTransformFeedbackVarying(void *self , GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, char* name) { + GL2Encoder* ctx = (GL2Encoder*)self; + + VALIDATE_PROGRAM_NAME(program); + SET_ERROR_IF(!ctx->m_shared->getProgramLinkStatus(program), GL_INVALID_OPERATION); + SET_ERROR_IF(index >= ctx->m_shared->getTransformFeedbackVaryingsCountForProgram(program), GL_INVALID_VALUE); + + ctx->m_glGetTransformFeedbackVarying_enc(ctx, program, index, bufSize, length, size, type, name); +} + +void GL2Encoder::s_glScissor(void *self , GLint x, GLint y, GLsizei width, GLsizei height) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF(width < 0 || height < 0, GL_INVALID_VALUE); + ctx->m_glScissor_enc(ctx, x, y, width, height); +} + +void GL2Encoder::s_glDepthFunc(void *self , GLenum func) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF( + (func != GL_NEVER) && + (func != GL_ALWAYS) && + (func != GL_LESS) && + (func != GL_LEQUAL) && + (func != GL_EQUAL) && + (func != GL_GREATER) && + (func != GL_GEQUAL) && + (func != GL_NOTEQUAL), + GL_INVALID_ENUM); + ctx->m_glDepthFunc_enc(ctx, func); +} + +void GL2Encoder::s_glViewport(void *self , GLint x, GLint y, GLsizei width, GLsizei height) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF(width < 0 || height < 0, GL_INVALID_VALUE); + ctx->m_glViewport_enc(ctx, x, y, width, height); +} + +void GL2Encoder::s_glStencilFunc(void *self , GLenum func, GLint ref, GLuint mask) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF(!GLESv2Validation::allowedFunc(func), GL_INVALID_ENUM); + ctx->m_glStencilFunc_enc(ctx, func, ref, mask); +} + +void GL2Encoder::s_glStencilFuncSeparate(void *self , GLenum face, GLenum func, GLint ref, GLuint mask) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF(!GLESv2Validation::allowedFace(face) || !GLESv2Validation::allowedFunc(func), GL_INVALID_ENUM); + ctx->m_glStencilFuncSeparate_enc(ctx, face, func, ref, mask); +} + +void GL2Encoder::s_glStencilOp(void *self , GLenum fail, GLenum zfail, GLenum zpass) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF( + !GLESv2Validation::allowedStencilOp(fail) || + !GLESv2Validation::allowedStencilOp(zfail) || + !GLESv2Validation::allowedStencilOp(zpass), + GL_INVALID_ENUM); + ctx->m_glStencilOp_enc(ctx, fail, zfail, zpass); +} + +void GL2Encoder::s_glStencilOpSeparate(void *self , GLenum face, GLenum fail, GLenum zfail, GLenum zpass) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF( + !GLESv2Validation::allowedFace(face) || + !GLESv2Validation::allowedStencilOp(fail) || + !GLESv2Validation::allowedStencilOp(zfail) || + !GLESv2Validation::allowedStencilOp(zpass), + GL_INVALID_ENUM); + ctx->m_glStencilOpSeparate_enc(ctx, face, fail, zfail, zpass); +} + +void GL2Encoder::s_glStencilMaskSeparate(void *self , GLenum face, GLuint mask) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF( + !GLESv2Validation::allowedFace(face), + GL_INVALID_ENUM); + ctx->m_glStencilMaskSeparate_enc(ctx, face, mask); +} + +void GL2Encoder::s_glBlendEquation(void *self , GLenum mode) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF( + !GLESv2Validation::allowedBlendEquation(mode), + GL_INVALID_ENUM); + ctx->m_glBlendEquation_enc(ctx, mode); +} + +void GL2Encoder::s_glBlendEquationSeparate(void *self , GLenum modeRGB, GLenum modeAlpha) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF( + !GLESv2Validation::allowedBlendEquation(modeRGB) || + !GLESv2Validation::allowedBlendEquation(modeAlpha), + GL_INVALID_ENUM); + ctx->m_glBlendEquationSeparate_enc(ctx, modeRGB, modeAlpha); +} + +void GL2Encoder::s_glBlendFunc(void *self , GLenum sfactor, GLenum dfactor) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF( + !GLESv2Validation::allowedBlendFunc(sfactor) || + !GLESv2Validation::allowedBlendFunc(dfactor), + GL_INVALID_ENUM); + ctx->m_glBlendFunc_enc(ctx, sfactor, dfactor); +} + +void GL2Encoder::s_glBlendFuncSeparate(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF( + !GLESv2Validation::allowedBlendFunc(srcRGB) || + !GLESv2Validation::allowedBlendFunc(dstRGB) || + !GLESv2Validation::allowedBlendFunc(srcAlpha) || + !GLESv2Validation::allowedBlendFunc(dstAlpha), + GL_INVALID_ENUM); + ctx->m_glBlendFuncSeparate_enc(ctx, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +void GL2Encoder::s_glCullFace(void *self , GLenum mode) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF( + !GLESv2Validation::allowedCullFace(mode), + GL_INVALID_ENUM); + ctx->m_glCullFace_enc(ctx, mode); +} + +void GL2Encoder::s_glFrontFace(void *self , GLenum mode) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF( + !GLESv2Validation::allowedFrontFace(mode), + GL_INVALID_ENUM); + ctx->m_glFrontFace_enc(ctx, mode); +} + +void GL2Encoder::s_glLineWidth(void *self , GLfloat width) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF(width <= 0.0f, GL_INVALID_VALUE); + ctx->m_glLineWidth_enc(ctx, width); +} + +void GL2Encoder::s_glVertexAttrib1f(void *self , GLuint indx, GLfloat x) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_VERTEX_ATTRIB_INDEX(indx); + ctx->m_glVertexAttrib1f_enc(ctx, indx, x); +} + +void GL2Encoder::s_glVertexAttrib2f(void *self , GLuint indx, GLfloat x, GLfloat y) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_VERTEX_ATTRIB_INDEX(indx); + ctx->m_glVertexAttrib2f_enc(ctx, indx, x, y); +} + +void GL2Encoder::s_glVertexAttrib3f(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_VERTEX_ATTRIB_INDEX(indx); + ctx->m_glVertexAttrib3f_enc(ctx, indx, x, y, z); +} + +void GL2Encoder::s_glVertexAttrib4f(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_VERTEX_ATTRIB_INDEX(indx); + ctx->m_glVertexAttrib4f_enc(ctx, indx, x, y, z, w); +} + +void GL2Encoder::s_glVertexAttrib1fv(void *self , GLuint indx, const GLfloat* values) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_VERTEX_ATTRIB_INDEX(indx); + ctx->m_glVertexAttrib1fv_enc(ctx, indx, values); +} + +void GL2Encoder::s_glVertexAttrib2fv(void *self , GLuint indx, const GLfloat* values) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_VERTEX_ATTRIB_INDEX(indx); + ctx->m_glVertexAttrib2fv_enc(ctx, indx, values); +} + +void GL2Encoder::s_glVertexAttrib3fv(void *self , GLuint indx, const GLfloat* values) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_VERTEX_ATTRIB_INDEX(indx); + ctx->m_glVertexAttrib3fv_enc(ctx, indx, values); +} + +void GL2Encoder::s_glVertexAttrib4fv(void *self , GLuint indx, const GLfloat* values) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_VERTEX_ATTRIB_INDEX(indx); + ctx->m_glVertexAttrib4fv_enc(ctx, indx, values); +} + +void GL2Encoder::s_glVertexAttribI4i(void *self , GLuint index, GLint v0, GLint v1, GLint v2, GLint v3) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_VERTEX_ATTRIB_INDEX(index); + ctx->m_glVertexAttribI4i_enc(ctx, index, v0, v1, v2, v3); +} + +void GL2Encoder::s_glVertexAttribI4ui(void *self , GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_VERTEX_ATTRIB_INDEX(index); + ctx->m_glVertexAttribI4ui_enc(ctx, index, v0, v1, v2, v3); +} + +void GL2Encoder::s_glVertexAttribI4iv(void *self , GLuint index, const GLint* v) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_VERTEX_ATTRIB_INDEX(index); + ctx->m_glVertexAttribI4iv_enc(ctx, index, v); +} + +void GL2Encoder::s_glVertexAttribI4uiv(void *self , GLuint index, const GLuint* v) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_VERTEX_ATTRIB_INDEX(index); + ctx->m_glVertexAttribI4uiv_enc(ctx, index, v); +} + +void GL2Encoder::s_glGetShaderPrecisionFormat(void *self , GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF(!GLESv2Validation::allowedShaderType(shadertype), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::allowedPrecisionType(precisiontype), GL_INVALID_ENUM); + ctx->m_glGetShaderPrecisionFormat_enc(ctx, shadertype, precisiontype, range, precision); +} + +void GL2Encoder::s_glGetProgramiv(void *self , GLuint program, GLenum pname, GLint* params) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF(!GLESv2Validation::allowedGetProgram(ctx->majorVersion(), ctx->minorVersion(), pname), GL_INVALID_ENUM); + VALIDATE_PROGRAM_NAME(program); + ctx->m_glGetProgramiv_enc(ctx, program, pname, params); +} + +void GL2Encoder::s_glGetActiveUniform(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_PROGRAM_NAME(program); + SET_ERROR_IF(index >= ctx->m_shared->getActiveUniformsCountForProgram(program), GL_INVALID_VALUE); + ctx->m_glGetActiveUniform_enc(ctx, program, index, bufsize, length, size, type, name); +} + +void GL2Encoder::s_glGetActiveUniformsiv(void *self , GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_PROGRAM_NAME(program); + SET_ERROR_IF(uniformCount < 0, GL_INVALID_VALUE); + SET_ERROR_IF(!GLESv2Validation::allowedGetActiveUniforms(pname), GL_INVALID_ENUM); + int activeUniformsCount = ctx->m_shared->getActiveUniformsCountForProgram(program); + for (GLsizei i = 0; i < uniformCount; ++i) { + SET_ERROR_IF(uniformIndices[i] >= activeUniformsCount, GL_INVALID_VALUE); + } + ctx->m_glGetActiveUniformsiv_enc(ctx, program, uniformCount, uniformIndices, pname, params); +} + +void GL2Encoder::s_glGetActiveUniformBlockName(void *self , GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_PROGRAM_NAME(program); + SET_ERROR_IF(bufSize < 0, GL_INVALID_VALUE); + SET_ERROR_IF(uniformBlockIndex >= ctx->m_shared->getActiveUniformBlockCount(program), GL_INVALID_VALUE); + ctx->m_glGetActiveUniformBlockName_enc(ctx, program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +void GL2Encoder::s_glGetActiveAttrib(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_PROGRAM_NAME(program); + VALIDATE_VERTEX_ATTRIB_INDEX(index); + SET_ERROR_IF(bufsize < 0, GL_INVALID_VALUE); + SET_ERROR_IF(index >= ctx->m_shared->getActiveAttributesCountForProgram(program), GL_INVALID_VALUE); + ctx->m_glGetActiveAttrib_enc(ctx, program, index, bufsize, length, size, type, name); +} + +void GL2Encoder::s_glGetRenderbufferParameteriv(void *self , GLenum target, GLenum pname, GLint* params) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF(target != GL_RENDERBUFFER, GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::allowedGetRenderbufferParameter(pname), GL_INVALID_ENUM); + ctx->m_glGetRenderbufferParameteriv_enc(ctx, target, pname, params); +} + +void GL2Encoder::s_glGetQueryiv(void *self , GLenum target, GLenum pname, GLint* params) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF(!GLESv2Validation::allowedQueryTarget(target), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::allowedQueryParam(pname), GL_INVALID_ENUM); + ctx->m_glGetQueryiv_enc(ctx, target, pname, params); +} + +void GL2Encoder::s_glGetQueryObjectuiv(void *self , GLuint query, GLenum pname, GLuint* params) { + GL2Encoder* ctx = (GL2Encoder*)self; + GLClientState* state = ctx->m_state; + SET_ERROR_IF(!GLESv2Validation::allowedQueryObjectParam(pname), GL_INVALID_ENUM); + SET_ERROR_IF(!state->queryExistence(GLClientState::ObjectType::Query, query), GL_INVALID_OPERATION); + SET_ERROR_IF(!state->getLastQueryTarget(query), GL_INVALID_OPERATION); + SET_ERROR_IF(ctx->m_state->isQueryObjectActive(query), GL_INVALID_OPERATION); + + ctx->m_glGetQueryObjectuiv_enc(ctx, query, pname, params); +} + +GLboolean GL2Encoder::s_glIsEnabled(void *self , GLenum cap) { + GL2Encoder* ctx = (GL2Encoder*)self; + RET_AND_SET_ERROR_IF(!GLESv2Validation::allowedEnable(ctx->majorVersion(), ctx->minorVersion(), cap), GL_INVALID_ENUM, 0); + return ctx->m_glIsEnabled_enc(ctx, cap); +} + +void GL2Encoder::s_glHint(void *self , GLenum target, GLenum mode) { + GL2Encoder* ctx = (GL2Encoder*)self; + SET_ERROR_IF(!GLESv2Validation::allowedHintTarget(target), GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validation::allowedHintMode(mode), GL_INVALID_ENUM); + ctx->m_glHint_enc(ctx, target, mode); +} + +GLint GL2Encoder::s_glGetFragDataLocation (void *self , GLuint program, const char* name) { + GL2Encoder* ctx = (GL2Encoder*)self; + VALIDATE_PROGRAM_NAME_RET(program, -1); + RET_AND_SET_ERROR_IF(!ctx->m_shared->getProgramLinkStatus(program), GL_INVALID_OPERATION, -1); + return ctx->m_glGetFragDataLocation_enc(ctx, program, name); +} diff --git a/system/GLESv2_enc/GL2Encoder.h b/system/GLESv2_enc/GL2Encoder.h index 0ceb9deb..61aed340 100644 --- a/system/GLESv2_enc/GL2Encoder.h +++ b/system/GLESv2_enc/GL2Encoder.h @@ -62,8 +62,11 @@ public: } void setSharedGroup(GLSharedGroupPtr shared) { m_shared = shared; - if (m_state && m_shared.Ptr()) + if (m_state && m_shared.Ptr()) { m_state->setTextureData(m_shared->getTextureData()); + m_state->setRenderbufferInfo(m_shared->getRenderbufferInfo()); + m_state->setSamplerInfo(m_shared->getSamplerInfo()); + } } int majorVersion() const { return m_currMajorVersion; } int minorVersion() const { return m_currMinorVersion; } @@ -71,6 +74,7 @@ public: const std::vector<std::string>& extArray) { m_currExtensions = std::string(exts); m_currExtensionsArray = extArray; + m_state->setExtensions(m_currExtensions); } bool hasExtension(const char* ext) const { return m_currExtensions.find(ext) != std::string::npos; @@ -85,6 +89,9 @@ public: virtual void setError(GLenum error){ m_error = error; }; virtual GLenum getError() { return m_error; }; + __attribute__((always_inline)) GLenum* getErrorPtr() { return &m_error; } + __attribute__((always_inline)) bool hasError() const { return m_error != GL_NO_ERROR; } + void override2DTextureTarget(GLenum target); void restore2DTextureTarget(GLenum target); void associateEGLImage(GLenum target, GLeglImageOES eglImage); @@ -118,6 +125,7 @@ private: GLint m_max_combinedTextureImageUnits; GLint m_max_vertexTextureImageUnits; + GLint m_max_array_texture_layers;; GLint m_max_textureImageUnits; GLint m_max_cubeMapTextureSize; GLint m_max_renderBufferSize; @@ -137,6 +145,8 @@ private: GLuint m_ssbo_offset_align; GLuint m_ubo_offset_align; + GLint m_log2MaxTextureSize; + std::vector<char> m_fixedBuffer; uint32_t m_drawCallFlushInterval; @@ -161,8 +171,6 @@ private: bool updateHostTexture2DBinding(GLenum texUnit, GLenum newTarget); void updateHostTexture2DBindingsFromProgramData(GLuint program); bool texture2DNeedsOverride(GLenum target) const; - bool isCompleteFbo(GLenum target, const GLClientState* state, GLenum attachment) const; - bool checkFramebufferCompleteness(GLenum target, const GLClientState* state) const; // Utility classes for safe queries that // need access to private class members @@ -614,7 +622,6 @@ private: glBindSampler_client_proc_t m_glBindSampler_enc; static void s_glBindSampler(void* self, GLuint unit, GLuint sampler); - void doSamplerBindEncodeCached(GLuint unit, GLuint sampler); glDeleteSamplers_client_proc_t m_glDeleteSamplers_enc; static void s_glDeleteSamplers(void* self, GLsizei n, const GLuint* samplers); @@ -769,6 +776,167 @@ private: glInvalidateFramebuffer_client_proc_t m_glInvalidateFramebuffer_enc; glInvalidateSubFramebuffer_client_proc_t m_glInvalidateSubFramebuffer_enc;; + // Dispatch compute + static void s_glDispatchCompute(void* self, GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + static void s_glDispatchComputeIndirect(void* self, GLintptr indirect); + + glDispatchCompute_client_proc_t m_glDispatchCompute_enc; + glDispatchComputeIndirect_client_proc_t m_glDispatchComputeIndirect_enc; + + // State tracking for transform feedbacks, samplers, and query objects + static void s_glGenTransformFeedbacks(void* self, GLsizei n, GLuint* ids); + static void s_glDeleteTransformFeedbacks(void* self, GLsizei n, const GLuint* ids); + static void s_glGenSamplers(void* self, GLsizei n, GLuint* ids); + static void s_glGenQueries(void* self, GLsizei n, GLuint* ids); + static void s_glDeleteQueries(void* self, GLsizei n, const GLuint* ids); + + glGenTransformFeedbacks_client_proc_t m_glGenTransformFeedbacks_enc; + glDeleteTransformFeedbacks_client_proc_t m_glDeleteTransformFeedbacks_enc; + glGenSamplers_client_proc_t m_glGenSamplers_enc; + glGenQueries_client_proc_t m_glGenQueries_enc; + glDeleteQueries_client_proc_t m_glDeleteQueries_enc; + + static void s_glBindTransformFeedback(void* self, GLenum target, GLuint id); + static void s_glBeginQuery(void* self, GLenum target, GLuint query); + static void s_glEndQuery(void* self, GLenum target); + + glBindTransformFeedback_client_proc_t m_glBindTransformFeedback_enc; + glBeginQuery_client_proc_t m_glBeginQuery_enc; + glEndQuery_client_proc_t m_glEndQuery_enc; + + static void s_glClear(void* self, GLbitfield mask); + glClear_client_proc_t m_glClear_enc; + + static void s_glClearBufferfi(void* self, GLenum buffer, GLint drawBuffer, float depth, int stencil); + glClearBufferfi_client_proc_t m_glClearBufferfi_enc; + + static void s_glCopyTexSubImage2D(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + glCopyTexSubImage2D_client_proc_t m_glCopyTexSubImage2D_enc; + + static void s_glCopyTexSubImage3D(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + glCopyTexSubImage3D_client_proc_t m_glCopyTexSubImage3D_enc; + + static void s_glCompileShader(void* self, GLuint shader); + glCompileShader_client_proc_t m_glCompileShader_enc; + + static void s_glValidateProgram(void* self, GLuint program); + glValidateProgram_client_proc_t m_glValidateProgram_enc; + + static void s_glProgramBinary(void *self , GLuint program, GLenum binaryFormat, const void* binary, GLsizei length); + glProgramBinary_client_proc_t m_glProgramBinary_enc; + + static void s_glGetSamplerParameterfv(void *self, GLuint sampler, GLenum pname, GLfloat* params); + static void s_glGetSamplerParameteriv(void *self, GLuint sampler, GLenum pname, GLint* params); + glGetSamplerParameterfv_client_proc_t m_glGetSamplerParameterfv_enc; + glGetSamplerParameteriv_client_proc_t m_glGetSamplerParameteriv_enc; + + static void s_glSamplerParameterf(void *self , GLuint sampler, GLenum pname, GLfloat param); + static void s_glSamplerParameteri(void *self , GLuint sampler, GLenum pname, GLint param); + static void s_glSamplerParameterfv(void *self , GLuint sampler, GLenum pname, const GLfloat* params); + static void s_glSamplerParameteriv(void *self , GLuint sampler, GLenum pname, const GLint* params); + + glSamplerParameterf_client_proc_t m_glSamplerParameterf_enc; + glSamplerParameteri_client_proc_t m_glSamplerParameteri_enc; + glSamplerParameterfv_client_proc_t m_glSamplerParameterfv_enc; + glSamplerParameteriv_client_proc_t m_glSamplerParameteriv_enc; + + static int s_glGetAttribLocation(void *self , GLuint program, const GLchar* name); + glGetAttribLocation_client_proc_t m_glGetAttribLocation_enc; + + static void s_glBindAttribLocation(void *self , GLuint program, GLuint index, const GLchar* name); + static void s_glUniformBlockBinding(void *self , GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + static void s_glGetTransformFeedbackVarying(void *self , GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, char* name); + static void s_glScissor(void *self , GLint x, GLint y, GLsizei width, GLsizei height); + static void s_glDepthFunc(void *self , GLenum func); + static void s_glViewport(void *self , GLint x, GLint y, GLsizei width, GLsizei height); + static void s_glStencilFunc(void *self , GLenum func, GLint ref, GLuint mask); + static void s_glStencilFuncSeparate(void *self , GLenum face, GLenum func, GLint ref, GLuint mask); + static void s_glStencilOp(void *self , GLenum fail, GLenum zfail, GLenum zpass); + static void s_glStencilOpSeparate(void *self , GLenum face, GLenum fail, GLenum zfail, GLenum zpass); + static void s_glStencilMaskSeparate(void *self , GLenum face, GLuint mask); + static void s_glBlendEquation(void *self , GLenum mode); + static void s_glBlendEquationSeparate(void *self , GLenum modeRGB, GLenum modeAlpha); + static void s_glBlendFunc(void *self , GLenum sfactor, GLenum dfactor); + static void s_glBlendFuncSeparate(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + static void s_glCullFace(void *self , GLenum mode); + static void s_glFrontFace(void *self , GLenum mode); + static void s_glLineWidth(void *self , GLfloat width); + static void s_glVertexAttrib1f(void *self , GLuint indx, GLfloat x); + static void s_glVertexAttrib2f(void *self , GLuint indx, GLfloat x, GLfloat y); + static void s_glVertexAttrib3f(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z); + static void s_glVertexAttrib4f(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + static void s_glVertexAttrib1fv(void *self , GLuint indx, const GLfloat* values); + static void s_glVertexAttrib2fv(void *self , GLuint indx, const GLfloat* values); + static void s_glVertexAttrib3fv(void *self , GLuint indx, const GLfloat* values); + static void s_glVertexAttrib4fv(void *self , GLuint indx, const GLfloat* values); + static void s_glVertexAttribI4i(void *self , GLuint index, GLint v0, GLint v1, GLint v2, GLint v3); + static void s_glVertexAttribI4ui(void *self , GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + static void s_glVertexAttribI4iv(void *self , GLuint index, const GLint* v); + static void s_glVertexAttribI4uiv(void *self , GLuint index, const GLuint* v); + + static void s_glGetShaderPrecisionFormat(void *self , GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); + static void s_glGetProgramiv(void *self , GLuint program, GLenum pname, GLint* params); + static void s_glGetActiveUniform(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); + static void s_glGetActiveUniformsiv(void *self , GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); + static void s_glGetActiveUniformBlockName(void *self , GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName); + static void s_glGetActiveAttrib(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); + static void s_glGetRenderbufferParameteriv(void *self , GLenum target, GLenum pname, GLint* params); + static void s_glGetQueryiv(void *self , GLenum target, GLenum pname, GLint* params); + static void s_glGetQueryObjectuiv(void *self , GLuint query, GLenum pname, GLuint* params); + static GLboolean s_glIsEnabled(void *self , GLenum cap); + static void s_glHint(void *self , GLenum target, GLenum mode); + static GLint s_glGetFragDataLocation (void *self , GLuint program, const char* name); + +#define LIST_REMAINING_FUNCTIONS_FOR_VALIDATION(f) \ + f(glBindAttribLocation) \ + f(glUniformBlockBinding) \ + f(glGetTransformFeedbackVarying) \ + f(glScissor) \ + f(glDepthFunc) \ + f(glViewport) \ + f(glStencilFunc) \ + f(glStencilFuncSeparate) \ + f(glStencilOp) \ + f(glStencilOpSeparate) \ + f(glStencilMaskSeparate) \ + f(glBlendEquation) \ + f(glBlendEquationSeparate) \ + f(glBlendFunc) \ + f(glBlendFuncSeparate) \ + f(glCullFace) \ + f(glFrontFace) \ + f(glLineWidth) \ + f(glVertexAttrib1f) \ + f(glVertexAttrib2f) \ + f(glVertexAttrib3f) \ + f(glVertexAttrib4f) \ + f(glVertexAttrib1fv) \ + f(glVertexAttrib2fv) \ + f(glVertexAttrib3fv) \ + f(glVertexAttrib4fv) \ + f(glVertexAttribI4i) \ + f(glVertexAttribI4ui) \ + f(glVertexAttribI4iv) \ + f(glVertexAttribI4uiv) \ + f(glGetShaderPrecisionFormat) \ + f(glGetProgramiv) \ + f(glGetActiveUniform) \ + f(glGetActiveUniformsiv) \ + f(glGetActiveUniformBlockName) \ + f(glGetActiveAttrib) \ + f(glGetRenderbufferParameteriv) \ + f(glGetQueryiv) \ + f(glGetQueryObjectuiv) \ + f(glIsEnabled) \ + f(glHint) \ + f(glGetFragDataLocation) \ + +#define DECLARE_CLIENT_ENCODER_PROC(n) \ + n##_client_proc_t m_##n##_enc; + + LIST_REMAINING_FUNCTIONS_FOR_VALIDATION(DECLARE_CLIENT_ENCODER_PROC) + + public: glEGLImageTargetTexture2DOES_client_proc_t m_glEGLImageTargetTexture2DOES_enc; diff --git a/system/GLESv2_enc/GLESv2Validation.cpp b/system/GLESv2_enc/GLESv2Validation.cpp index aff79022..b3b46371 100644 --- a/system/GLESv2_enc/GLESv2Validation.cpp +++ b/system/GLESv2_enc/GLESv2Validation.cpp @@ -18,6 +18,241 @@ #include <sstream> +#define LIST_VALID_TEX_INTERNALFORMATS(f) \ + f(GL_BGRA8_EXT) \ + f(GL_R8) \ + f(GL_R8_SNORM) \ + f(GL_R16F) \ + f(GL_R32F) \ + f(GL_R8UI) \ + f(GL_R8I) \ + f(GL_R16UI) \ + f(GL_R16I) \ + f(GL_R32UI) \ + f(GL_R32I) \ + f(GL_RG8) \ + f(GL_RG8_SNORM) \ + f(GL_RG16F) \ + f(GL_RG32F) \ + f(GL_RG8UI) \ + f(GL_RG8I) \ + f(GL_RG16UI) \ + f(GL_RG16I) \ + f(GL_RG32UI) \ + f(GL_RG32I) \ + f(GL_RGB8) \ + f(GL_SRGB8) \ + f(GL_RGB565) \ + f(GL_RGB8_SNORM) \ + f(GL_R11F_G11F_B10F) \ + f(GL_RGB9_E5) \ + f(GL_RGB16F) \ + f(GL_RGB32F) \ + f(GL_RGB8UI) \ + f(GL_RGB8I) \ + f(GL_RGB16UI) \ + f(GL_RGB16I) \ + f(GL_RGB32UI) \ + f(GL_RGB32I) \ + f(GL_RGBA8) \ + f(GL_SRGB8_ALPHA8) \ + f(GL_RGBA8_SNORM) \ + f(GL_RGB5_A1) \ + f(GL_RGBA4) \ + f(GL_RGB10_A2) \ + f(GL_RGBA16F) \ + f(GL_RGBA32F) \ + f(GL_RGBA8UI) \ + f(GL_RGBA8I) \ + f(GL_RGB10_A2UI) \ + f(GL_RGBA16UI) \ + f(GL_RGBA16I) \ + f(GL_RGBA32I) \ + f(GL_RGBA32UI) \ + f(GL_DEPTH_COMPONENT16) \ + f(GL_DEPTH_COMPONENT24) \ + f(GL_DEPTH_COMPONENT32F) \ + f(GL_DEPTH24_STENCIL8) \ + f(GL_DEPTH32F_STENCIL8) \ + f(GL_ETC1_RGB8_OES) \ + f(GL_COMPRESSED_R11_EAC) \ + f(GL_COMPRESSED_SIGNED_R11_EAC) \ + f(GL_COMPRESSED_RG11_EAC) \ + f(GL_COMPRESSED_SIGNED_RG11_EAC) \ + f(GL_COMPRESSED_RGB8_ETC2) \ + f(GL_COMPRESSED_SRGB8_ETC2) \ + f(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2) \ + f(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2) \ + f(GL_COMPRESSED_RGBA8_ETC2_EAC) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC) \ + f(GL_COMPRESSED_RGBA_ASTC_4x4_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_5x4_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_5x5_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_6x5_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_6x6_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_8x5_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_8x6_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_8x8_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_10x5_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_10x6_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_10x8_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_10x10_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_12x10_KHR) \ + f(GL_COMPRESSED_RGBA_ASTC_12x12_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR) \ + +#define LIST_INTEGER_TEX_FORMATS(f) \ + f(GL_RED_INTEGER) \ + f(GL_RG_INTEGER) \ + f(GL_RGB_INTEGER) \ + f(GL_RGBA_INTEGER) \ + f(GL_R8UI) \ + f(GL_R8I) \ + f(GL_R16UI) \ + f(GL_R16I) \ + f(GL_R32UI) \ + f(GL_R32I) \ + f(GL_RG8UI) \ + f(GL_RG8I) \ + f(GL_RG16UI) \ + f(GL_RG16I) \ + f(GL_RG32UI) \ + f(GL_RG32I) \ + f(GL_RGB8UI) \ + f(GL_RGB8I) \ + f(GL_RGB16UI) \ + f(GL_RGB16I) \ + f(GL_RGB32UI) \ + f(GL_RGB32I) \ + f(GL_RGBA8UI) \ + f(GL_RGBA8I) \ + f(GL_RGB10_A2UI) \ + f(GL_RGBA16UI) \ + f(GL_RGBA16I) \ + f(GL_RGBA32I) \ + f(GL_RGBA32UI) \ + +#define LIST_VALID_TEXFORMAT_COMBINATIONS(f) \ + f(GL_BGRA8_EXT, GL_BGRA_EXT, GL_UNSIGNED_BYTE) \ + f(GL_R8, GL_RED, GL_UNSIGNED_BYTE) \ + f(GL_R8_SNORM, GL_RED, GL_BYTE) \ + f(GL_R16F, GL_RED, GL_FLOAT) \ + f(GL_R16F, GL_RED, GL_HALF_FLOAT) \ + f(GL_R32F, GL_RED, GL_FLOAT) \ + f(GL_R8UI, GL_RED_INTEGER, GL_UNSIGNED_BYTE) \ + f(GL_R8I, GL_RED_INTEGER, GL_BYTE) \ + f(GL_R16UI, GL_RED_INTEGER, GL_UNSIGNED_SHORT) \ + f(GL_R16I, GL_RED_INTEGER, GL_SHORT) \ + f(GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT) \ + f(GL_R32I, GL_RED_INTEGER, GL_INT) \ + f(GL_RG8, GL_RG, GL_UNSIGNED_BYTE) \ + f(GL_RG8_SNORM, GL_RG, GL_BYTE) \ + f(GL_RG16F, GL_RG, GL_HALF_FLOAT) \ + f(GL_RG16F, GL_RG, GL_FLOAT) \ + f(GL_RG32F, GL_RG, GL_FLOAT) \ + f(GL_RG8UI, GL_RG_INTEGER, GL_UNSIGNED_BYTE) \ + f(GL_RG8I, GL_RG_INTEGER, GL_BYTE) \ + f(GL_RG16UI, GL_RG_INTEGER, GL_UNSIGNED_SHORT) \ + f(GL_RG16I, GL_RG_INTEGER, GL_SHORT) \ + f(GL_RG32UI, GL_RG_INTEGER, GL_UNSIGNED_INT) \ + f(GL_RG32I, GL_RG_INTEGER, GL_INT) \ + f(GL_RGB8, GL_RGB, GL_UNSIGNED_BYTE) \ + f(GL_SRGB8, GL_RGB, GL_UNSIGNED_BYTE) \ + f(GL_RGB565, GL_RGB, GL_UNSIGNED_BYTE) \ + f(GL_RGB565, GL_RGB, GL_UNSIGNED_SHORT_5_6_5) \ + f(GL_RGB8_SNORM, GL_RGB, GL_BYTE) \ + f(GL_R11F_G11F_B10F, GL_RGB, GL_UNSIGNED_INT_10F_11F_11F_REV) \ + f(GL_R11F_G11F_B10F, GL_RGB, GL_HALF_FLOAT) \ + f(GL_R11F_G11F_B10F, GL_RGB, GL_FLOAT) \ + f(GL_RGB9_E5, GL_RGB, GL_UNSIGNED_INT_5_9_9_9_REV) \ + f(GL_RGB9_E5, GL_RGB, GL_HALF_FLOAT) \ + f(GL_RGB9_E5, GL_RGB, GL_FLOAT) \ + f(GL_RGB16F, GL_RGB, GL_HALF_FLOAT) \ + f(GL_RGB16F, GL_RGB, GL_FLOAT) \ + f(GL_RGB32F, GL_RGB, GL_FLOAT) \ + f(GL_RGB8UI, GL_RGB_INTEGER, GL_UNSIGNED_BYTE) \ + f(GL_RGB8I, GL_RGB_INTEGER, GL_BYTE) \ + f(GL_RGB16UI, GL_RGB_INTEGER, GL_UNSIGNED_SHORT) \ + f(GL_RGB16I, GL_RGB_INTEGER, GL_SHORT) \ + f(GL_RGB32UI, GL_RGB_INTEGER, GL_UNSIGNED_INT) \ + f(GL_RGB32I, GL_RGB_INTEGER, GL_INT) \ + f(GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_RGBA8_SNORM, GL_RGBA, GL_BYTE) \ + f(GL_RGB5_A1, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_RGB5_A1, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1) \ + f(GL_RGB5_A1, GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV) \ + f(GL_RGBA4, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_RGBA4, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4) \ + f(GL_RGB10_A2, GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV) \ + f(GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT) \ + f(GL_RGBA16F, GL_RGBA, GL_FLOAT) \ + f(GL_RGBA32F, GL_RGBA, GL_FLOAT) \ + f(GL_RGBA8UI, GL_RGBA_INTEGER, GL_UNSIGNED_BYTE) \ + f(GL_RGBA8I, GL_RGBA_INTEGER, GL_BYTE) \ + f(GL_RGB10_A2UI, GL_RGBA_INTEGER, GL_UNSIGNED_INT_2_10_10_10_REV) \ + f(GL_RGBA16UI, GL_RGBA_INTEGER, GL_UNSIGNED_SHORT) \ + f(GL_RGBA16I, GL_RGBA_INTEGER, GL_SHORT) \ + f(GL_RGBA32I, GL_RGBA_INTEGER, GL_INT) \ + f(GL_RGBA32UI, GL_RGBA_INTEGER, GL_UNSIGNED_INT) \ + f(GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT) \ + f(GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT) \ + f(GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT) \ + f(GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT) \ + f(GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8) \ + f(GL_DEPTH32F_STENCIL8, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV) \ + f(GL_COMPRESSED_R11_EAC, GL_RED, GL_FLOAT) \ + f(GL_COMPRESSED_SIGNED_R11_EAC, GL_RED, GL_FLOAT) \ + f(GL_COMPRESSED_RG11_EAC, GL_RG, GL_FLOAT) \ + f(GL_COMPRESSED_SIGNED_RG11_EAC, GL_RG, GL_FLOAT) \ + f(GL_COMPRESSED_RGB8_ETC2, GL_RGB, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ETC2, GL_RGB, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA8_ETC2_EAC, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_4x4_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_5x4_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_5x5_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_6x5_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_6x6_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_8x5_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_8x6_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_8x8_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_10x5_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_10x6_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_10x8_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_10x10_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_12x10_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_RGBA_ASTC_12x12_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, GL_RGBA, GL_UNSIGNED_BYTE) \ + namespace GLESv2Validation { GLbitfield allBufferMapAccessFlags = @@ -69,6 +304,24 @@ bool bufferParam(GL2Encoder* ctx, GLenum pname) { } } +bool bufferUsage(GL2Encoder* ctx, GLenum usage) { + int glesMajorVersion = ctx->majorVersion(); + switch(usage) { + case GL_STREAM_DRAW: + case GL_STATIC_DRAW: + case GL_DYNAMIC_DRAW: + return true; + case GL_STREAM_READ: + case GL_STATIC_READ: + case GL_DYNAMIC_READ: + case GL_STREAM_COPY: + case GL_STATIC_COPY: + case GL_DYNAMIC_COPY: + return glesMajorVersion >= 3; + } + return false; + +} bool pixelStoreParam(GL2Encoder* ctx, GLenum param) { int glesMajorVersion = ctx->majorVersion(); switch(param) { @@ -260,6 +513,17 @@ bool readPixelsType(GLenum format) { return false; } +bool pixelOp(GLenum format,GLenum type) { + switch(type) { + case GL_UNSIGNED_SHORT_4_4_4_4: + case GL_UNSIGNED_SHORT_5_5_5_1: + return format == GL_RGBA; + case GL_UNSIGNED_SHORT_5_6_5: + return format == GL_RGB; + } + return true; +} + bool vertexAttribType(GL2Encoder* ctx, GLenum type) { int glesMajorVersion = ctx->majorVersion(); @@ -347,32 +611,133 @@ bool textureTarget(GL2Encoder* ctx, GLenum target) { return false; } -static GLsizei ceildiv(GLsizei x, GLsizei y) { - return (x + y - 1) / y; +bool textureParams(GL2Encoder* ctx, GLenum param) { + int glesMajorVersion = ctx->majorVersion(); + int glesMinorVersion = ctx->minorVersion(); + switch(param) { + case GL_TEXTURE_MIN_FILTER: + case GL_TEXTURE_MAG_FILTER: + case GL_TEXTURE_WRAP_S: + case GL_TEXTURE_WRAP_T: + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + return true; + case GL_TEXTURE_SWIZZLE_R: + case GL_TEXTURE_SWIZZLE_G: + case GL_TEXTURE_SWIZZLE_B: + case GL_TEXTURE_SWIZZLE_A: + case GL_TEXTURE_MIN_LOD: + case GL_TEXTURE_MAX_LOD: + case GL_TEXTURE_BASE_LEVEL: + case GL_TEXTURE_MAX_LEVEL: + case GL_TEXTURE_COMPARE_MODE: + case GL_TEXTURE_COMPARE_FUNC: + case GL_TEXTURE_WRAP_R: + case GL_TEXTURE_IMMUTABLE_FORMAT: + case GL_TEXTURE_IMMUTABLE_LEVELS: + return glesMajorVersion >= 3; + case GL_DEPTH_STENCIL_TEXTURE_MODE: + return glesMajorVersion >= 3 && glesMinorVersion >= 1; + default: + return false; + } } -GLsizei compressedTexImageSize(GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) { - GLsizei base_size = ceildiv(width, 4) * ceildiv(height, 4) * depth; -#define COMPRESSED_TEX_IMAGE_SIZE_CASE(internal, multiplier) \ - case internal: \ - return base_size * multiplier; \ +bool samplerParams(GL2Encoder* ctx, GLenum param) { + (void)ctx; + switch(param) { + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + case GL_TEXTURE_MIN_FILTER: + case GL_TEXTURE_MAG_FILTER: + case GL_TEXTURE_WRAP_S: + case GL_TEXTURE_WRAP_T: + case GL_TEXTURE_WRAP_R: + case GL_TEXTURE_MIN_LOD: + case GL_TEXTURE_MAX_LOD: + case GL_TEXTURE_COMPARE_MODE: + case GL_TEXTURE_COMPARE_FUNC: + return true; + default: + return false; + } +} - switch (internalformat) { - COMPRESSED_TEX_IMAGE_SIZE_CASE(GL_COMPRESSED_R11_EAC, 8) - COMPRESSED_TEX_IMAGE_SIZE_CASE(GL_COMPRESSED_SIGNED_R11_EAC, 8) - COMPRESSED_TEX_IMAGE_SIZE_CASE(GL_COMPRESSED_RG11_EAC, 16) - COMPRESSED_TEX_IMAGE_SIZE_CASE(GL_COMPRESSED_SIGNED_RG11_EAC, 16) - COMPRESSED_TEX_IMAGE_SIZE_CASE(GL_COMPRESSED_RGB8_ETC2, 8) - COMPRESSED_TEX_IMAGE_SIZE_CASE(GL_COMPRESSED_SRGB8_ETC2, 8) - COMPRESSED_TEX_IMAGE_SIZE_CASE(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, 8) - COMPRESSED_TEX_IMAGE_SIZE_CASE(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, 8) - COMPRESSED_TEX_IMAGE_SIZE_CASE(GL_COMPRESSED_RGBA8_ETC2_EAC, 16) - COMPRESSED_TEX_IMAGE_SIZE_CASE(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, 16) +bool textureParamValue(GL2Encoder* ctx, GLenum pname, GLint intval, GLfloat floatval, GLenum enumval) { + (void)ctx; + (void)floatval; + switch (pname) { + case GL_TEXTURE_BASE_LEVEL: + return intval >= 0; + case GL_TEXTURE_COMPARE_MODE: + return + (enumval == GL_NONE) || + (enumval == GL_COMPARE_REF_TO_TEXTURE); + case GL_TEXTURE_COMPARE_FUNC: + return + (enumval == GL_LEQUAL) || + (enumval == GL_GEQUAL) || + (enumval == GL_LESS) || + (enumval == GL_GREATER) || + (enumval == GL_EQUAL) || + (enumval == GL_NOTEQUAL) || + (enumval == GL_ALWAYS) || + (enumval == GL_NEVER); + case GL_TEXTURE_MAG_FILTER: + return + (enumval == GL_NEAREST) || + (enumval == GL_LINEAR); + case GL_TEXTURE_MAX_LEVEL: + return intval >= 0; + case GL_TEXTURE_MAX_LOD: + return true; + case GL_TEXTURE_MIN_FILTER: + return + (enumval == GL_NEAREST) || + (enumval == GL_LINEAR) || + (enumval == GL_NEAREST_MIPMAP_NEAREST) || + (enumval == GL_NEAREST_MIPMAP_LINEAR) || + (enumval == GL_LINEAR_MIPMAP_NEAREST) || + (enumval == GL_LINEAR_MIPMAP_LINEAR); + case GL_TEXTURE_MIN_LOD: + return true; + case GL_TEXTURE_SWIZZLE_R: + case GL_TEXTURE_SWIZZLE_G: + case GL_TEXTURE_SWIZZLE_B: + case GL_TEXTURE_SWIZZLE_A: + return + (enumval == GL_RED) || + (enumval == GL_GREEN) || + (enumval == GL_BLUE) || + (enumval == GL_ALPHA) || + (enumval == GL_ZERO) || + (enumval == GL_ONE); + case GL_TEXTURE_WRAP_S: + case GL_TEXTURE_WRAP_T: + case GL_TEXTURE_WRAP_R: + return + (enumval == GL_CLAMP_TO_EDGE) || + (enumval == GL_REPEAT) || + (enumval == GL_MIRRORED_REPEAT); + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + return true; + case GL_TEXTURE_IMMUTABLE_FORMAT: + case GL_TEXTURE_IMMUTABLE_LEVELS: + case GL_DEPTH_STENCIL_TEXTURE_MODE: + return true; default: - break; + return true; } +} - return 0; +bool isIntegerFormat(GLenum format) { + +#define CHECK_EQUAL(x) case x: return true; + + switch (format) { + LIST_INTEGER_TEX_FORMATS(CHECK_EQUAL) + + default: + return false; + } } bool isCompressedFormat(GLenum internalformat) { @@ -445,6 +810,7 @@ bool supportedCompressedFormat(GL2Encoder* ctx, GLenum internalformat) { return false ; \ switch (internalformat) { + COMPRESSED_TEX_IMAGE_SUPPORT_CASE(GL_ETC1_RGB8_OES, 2, 0) COMPRESSED_TEX_IMAGE_SUPPORT_CASE(GL_COMPRESSED_R11_EAC, 2, 0) COMPRESSED_TEX_IMAGE_SUPPORT_CASE(GL_COMPRESSED_SIGNED_R11_EAC, 2, 0) COMPRESSED_TEX_IMAGE_SUPPORT_CASE(GL_COMPRESSED_RG11_EAC, 2, 0) @@ -486,7 +852,7 @@ bool supportedCompressedFormat(GL2Encoder* ctx, GLenum internalformat) { default: break; } - return true; + return false; } bool unsizedFormat(GLenum format) { @@ -730,103 +1096,6 @@ bool pixelFormat(GL2Encoder* ctx, GLenum format) { } return false; } -#define LIST_VALID_TEX_INTERNALFORMATS(f) \ - f(GL_BGRA8_EXT) \ - f(GL_R8) \ - f(GL_R8_SNORM) \ - f(GL_R16F) \ - f(GL_R32F) \ - f(GL_R8UI) \ - f(GL_R8I) \ - f(GL_R16UI) \ - f(GL_R16I) \ - f(GL_R32UI) \ - f(GL_R32I) \ - f(GL_RG8) \ - f(GL_RG8_SNORM) \ - f(GL_RG16F) \ - f(GL_RG32F) \ - f(GL_RG8UI) \ - f(GL_RG8I) \ - f(GL_RG16UI) \ - f(GL_RG16I) \ - f(GL_RG32UI) \ - f(GL_RG32I) \ - f(GL_RGB8) \ - f(GL_SRGB8) \ - f(GL_RGB565) \ - f(GL_RGB8_SNORM) \ - f(GL_R11F_G11F_B10F) \ - f(GL_RGB9_E5) \ - f(GL_RGB16F) \ - f(GL_RGB32F) \ - f(GL_RGB8UI) \ - f(GL_RGB8I) \ - f(GL_RGB16UI) \ - f(GL_RGB16I) \ - f(GL_RGB32UI) \ - f(GL_RGB32I) \ - f(GL_RGBA8) \ - f(GL_SRGB8_ALPHA8) \ - f(GL_RGBA8_SNORM) \ - f(GL_RGB5_A1) \ - f(GL_RGBA4) \ - f(GL_RGB10_A2) \ - f(GL_RGBA16F) \ - f(GL_RGBA32F) \ - f(GL_RGBA8UI) \ - f(GL_RGBA8I) \ - f(GL_RGB10_A2UI) \ - f(GL_RGBA16UI) \ - f(GL_RGBA16I) \ - f(GL_RGBA32I) \ - f(GL_RGBA32UI) \ - f(GL_DEPTH_COMPONENT16) \ - f(GL_DEPTH_COMPONENT24) \ - f(GL_DEPTH_COMPONENT32F) \ - f(GL_DEPTH24_STENCIL8) \ - f(GL_DEPTH32F_STENCIL8) \ - f(GL_ETC1_RGB8_OES) \ - f(GL_COMPRESSED_R11_EAC) \ - f(GL_COMPRESSED_SIGNED_R11_EAC) \ - f(GL_COMPRESSED_RG11_EAC) \ - f(GL_COMPRESSED_SIGNED_RG11_EAC) \ - f(GL_COMPRESSED_RGB8_ETC2) \ - f(GL_COMPRESSED_SRGB8_ETC2) \ - f(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2) \ - f(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2) \ - f(GL_COMPRESSED_RGBA8_ETC2_EAC) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC) \ - f(GL_COMPRESSED_RGBA_ASTC_4x4_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_5x4_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_5x5_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_6x5_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_6x6_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_8x5_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_8x6_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_8x8_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_10x5_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_10x6_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_10x8_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_10x10_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_12x10_KHR) \ - f(GL_COMPRESSED_RGBA_ASTC_12x12_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR) \ - f(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR) \ - - bool pixelInternalFormat(GLenum internalformat) { #define VALID_INTERNAL_FORMAT(format) \ case format: \ @@ -840,6 +1109,83 @@ bool pixelInternalFormat(GLenum internalformat) { return false; } +bool pixelSizedFormat(GL2Encoder* ctx, GLenum internalformat, GLenum format, GLenum type) { + int glesMajorVersion = ctx->majorVersion(); + if (internalformat == format) { + return true; + } + + if (glesMajorVersion < 3) { + switch (format) { + case GL_RED: + switch (type) { + case GL_UNSIGNED_BYTE: + return internalformat == GL_R8; + case GL_HALF_FLOAT: + case GL_FLOAT: + return internalformat == GL_R16F; + case GL_BYTE: + return internalformat == GL_R8_SNORM; + default: + return false; + } + break; + case GL_RG: + switch (type) { + case GL_UNSIGNED_BYTE: + return internalformat == GL_RG8; + case GL_HALF_FLOAT: + case GL_FLOAT: + return internalformat == GL_RG16F; + default: + return false; + } + break; + case GL_RGB: + switch (type) { + case GL_HALF_FLOAT: + case GL_FLOAT: + return internalformat == GL_RGB16F + || internalformat == GL_R11F_G11F_B10F; + case GL_UNSIGNED_INT_10F_11F_11F_REV: + return internalformat == GL_R11F_G11F_B10F; + default: + return internalformat == GL_RGB8 || + internalformat == GL_RGB; + } + break; + case GL_RGBA: + switch (type) { + case GL_HALF_FLOAT: + case GL_FLOAT: + return internalformat == GL_RGBA16F; + default: + return internalformat == GL_RGBA8 || + internalformat == GL_RGBA; + } + break; + } + } + +#define VALIDATE_FORMAT_COMBINATION(x, y, z) \ + if (internalformat == x && format == y && type == z) return true; \ + + LIST_VALID_TEXFORMAT_COMBINATIONS(VALIDATE_FORMAT_COMBINATION) + + return false; +} + +void getCompatibleFormatTypeForInternalFormat(GLenum internalformat, GLenum* format_out, GLenum* type_out) { +#define RETURN_COMPATIBLE_FORMAT(x, y, z) \ + if (internalformat == x) { \ + *format_out = y; \ + *type_out = z; \ + return; \ + } \ + + LIST_VALID_TEXFORMAT_COMBINATIONS(RETURN_COMPATIBLE_FORMAT) +} + bool shaderType(GL2Encoder* ctx, GLenum type) { int glesMajorVersion = ctx->majorVersion(); int glesMinorVersion = ctx->minorVersion(); @@ -873,4 +1219,323 @@ std::string vertexAttribIndexRangeErrorMsg(GL2Encoder* ctx, GLuint index) { return ss.str(); } +bool allowedFace(GLenum face) { + switch (face) { + case GL_FRONT: + case GL_BACK: + case GL_FRONT_AND_BACK: + return true; + default: + return false; + } +} + +bool allowedFunc(GLenum func) { + switch (func) { + case GL_NEVER: + case GL_ALWAYS: + case GL_LESS: + case GL_LEQUAL: + case GL_EQUAL: + case GL_GREATER: + case GL_GEQUAL: + case GL_NOTEQUAL: + return true; + default: + return false; + } +} + +bool allowedStencilOp(GLenum op) { + switch (op) { + case GL_KEEP: + case GL_ZERO: + case GL_REPLACE: + case GL_INCR: + case GL_DECR: + case GL_INVERT: + case GL_INCR_WRAP: + case GL_DECR_WRAP: + return true; + default: + return false; + } +} + +bool allowedBlendEquation(GLenum eq) { + switch (eq) { + case GL_FUNC_ADD: + case GL_FUNC_SUBTRACT: + case GL_FUNC_REVERSE_SUBTRACT: + case GL_MIN: + case GL_MAX: + return true; + default: + return false; + } +} + +bool allowedBlendFunc(GLenum func) { + switch (func) { + case GL_ZERO: + case GL_ONE: + case GL_SRC_COLOR: + case GL_ONE_MINUS_SRC_COLOR: + case GL_DST_COLOR: + case GL_ONE_MINUS_DST_COLOR: + case GL_SRC_ALPHA: + case GL_ONE_MINUS_SRC_ALPHA: + case GL_DST_ALPHA: + case GL_ONE_MINUS_DST_ALPHA: + case GL_CONSTANT_COLOR: + case GL_ONE_MINUS_CONSTANT_COLOR: + case GL_CONSTANT_ALPHA: + case GL_ONE_MINUS_CONSTANT_ALPHA: + case GL_SRC_ALPHA_SATURATE: + return true; + default: + return false; + } +} + +bool allowedCullFace(GLenum mode) { + switch (mode) { + case GL_FRONT: + case GL_BACK: + case GL_FRONT_AND_BACK: + return true; + default: + return false; + } +} + +bool allowedFrontFace(GLenum mode) { + switch (mode) { + case GL_CCW: + case GL_CW: + return true; + default: + return false; + } +} + +bool allowedEnable(int majorVersion, int minorVersion, GLenum cap) { + switch (cap) { + case GL_CULL_FACE: + case GL_POLYGON_OFFSET_FILL: + case GL_SAMPLE_ALPHA_TO_COVERAGE: + case GL_SAMPLE_COVERAGE: + case GL_SCISSOR_TEST: + case GL_STENCIL_TEST: + case GL_DEPTH_TEST: + case GL_BLEND: + case GL_DITHER: + return true; + case GL_PRIMITIVE_RESTART_FIXED_INDEX: + case GL_RASTERIZER_DISCARD: + return majorVersion >= 3; + case GL_SAMPLE_MASK: + return majorVersion >= 3 && minorVersion >= 1; + default: + return false; + } +} + +bool allowedGetShader(GLenum pname) { + switch (pname) { + case GL_SHADER_TYPE: + case GL_DELETE_STATUS: + case GL_COMPILE_STATUS: + case GL_INFO_LOG_LENGTH: + case GL_SHADER_SOURCE_LENGTH: + return true; + default: + return false; + } +} + +bool allowedShaderType(GLenum shadertype) { + switch (shadertype) { + case GL_VERTEX_SHADER: + case GL_FRAGMENT_SHADER: + return true; + default: + return false; + } +} + +bool allowedPrecisionType(GLenum precisiontype) { + switch (precisiontype) { + case GL_LOW_FLOAT: + case GL_MEDIUM_FLOAT: + case GL_HIGH_FLOAT: + case GL_LOW_INT: + case GL_MEDIUM_INT: + case GL_HIGH_INT: + return true; + default: + return false; + } +} + +bool allowedGetProgram(int majorVersion, int minorVersion, GLenum pname) { + switch (pname) { + case GL_DELETE_STATUS: + case GL_LINK_STATUS: + case GL_VALIDATE_STATUS: + case GL_INFO_LOG_LENGTH: + case GL_ATTACHED_SHADERS: + case GL_ACTIVE_ATTRIBUTES: + case GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: + case GL_ACTIVE_UNIFORMS: + case GL_ACTIVE_UNIFORM_MAX_LENGTH: + return true; + case GL_TRANSFORM_FEEDBACK_BUFFER_MODE: + case GL_PROGRAM_BINARY_RETRIEVABLE_HINT: + case GL_PROGRAM_BINARY_LENGTH: + case GL_TRANSFORM_FEEDBACK_VARYINGS: + case GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: + case GL_ACTIVE_UNIFORM_BLOCKS: + case GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: + return majorVersion > 2; + case GL_COMPUTE_WORK_GROUP_SIZE: + case GL_PROGRAM_SEPARABLE: + case GL_ACTIVE_ATOMIC_COUNTER_BUFFERS: + return majorVersion > 2 && minorVersion > 0; + default: + return false; + } +} + +bool allowedGetActiveUniforms(GLenum pname) { + switch (pname) { + case GL_UNIFORM_TYPE: + case GL_UNIFORM_SIZE: + case GL_UNIFORM_NAME_LENGTH: + case GL_UNIFORM_BLOCK_INDEX: + case GL_UNIFORM_OFFSET: + case GL_UNIFORM_ARRAY_STRIDE: + case GL_UNIFORM_MATRIX_STRIDE: + case GL_UNIFORM_IS_ROW_MAJOR: + return true; + default: + return false; + } +} + +bool allowedGetActiveUniformBlock(GLenum pname) { + switch (pname) { + case GL_UNIFORM_BLOCK_BINDING: + case GL_UNIFORM_BLOCK_DATA_SIZE: + case GL_UNIFORM_BLOCK_NAME_LENGTH: + case GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: + case GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: + case GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: + case GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: + return true; + default: + return false; + } +} + +bool allowedGetVertexAttrib(GLenum pname) { + switch (pname) { + case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: + case GL_VERTEX_ATTRIB_ARRAY_ENABLED: + case GL_VERTEX_ATTRIB_ARRAY_SIZE: + case GL_VERTEX_ATTRIB_ARRAY_STRIDE: + case GL_VERTEX_ATTRIB_ARRAY_TYPE: + case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: + case GL_VERTEX_ATTRIB_ARRAY_INTEGER: + case GL_VERTEX_ATTRIB_ARRAY_DIVISOR: + case GL_VERTEX_ATTRIB_BINDING: + case GL_VERTEX_ATTRIB_RELATIVE_OFFSET: + case GL_CURRENT_VERTEX_ATTRIB: + return true; + default: + return false; + } +} + +bool allowedGetRenderbufferParameter(GLenum pname) { + switch (pname) { + case GL_RENDERBUFFER_WIDTH: + case GL_RENDERBUFFER_HEIGHT: + case GL_RENDERBUFFER_INTERNAL_FORMAT: + case GL_RENDERBUFFER_RED_SIZE: + case GL_RENDERBUFFER_GREEN_SIZE: + case GL_RENDERBUFFER_BLUE_SIZE: + case GL_RENDERBUFFER_ALPHA_SIZE: + case GL_RENDERBUFFER_DEPTH_SIZE: + case GL_RENDERBUFFER_STENCIL_SIZE: + case GL_RENDERBUFFER_SAMPLES: + return true; + default: + return false; + } +} + +bool allowedQueryTarget(GLenum target) { + switch (target) { + case GL_ANY_SAMPLES_PASSED: + case GL_ANY_SAMPLES_PASSED_CONSERVATIVE: + case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: + return true; + default: + return false; + } +} + +bool allowedQueryParam(GLenum pname) { + switch (pname) { + case GL_CURRENT_QUERY: + return true; + default: + return false; + } +} + +bool allowedQueryObjectParam(GLenum pname) { + switch (pname) { + case GL_QUERY_RESULT: + case GL_QUERY_RESULT_AVAILABLE: + return true; + default: + return false; + } +} + +bool allowedGetSyncParam(GLenum pname) { + switch (pname) { + case GL_OBJECT_TYPE: + case GL_SYNC_STATUS: + case GL_SYNC_CONDITION: + case GL_SYNC_FLAGS: + return true; + default: + return false; + } +} + +bool allowedHintTarget(GLenum target) { + switch (target) { + case GL_GENERATE_MIPMAP_HINT: + case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES: + return true; + default: + return false; + } +} + +bool allowedHintMode(GLenum mode) { + switch (mode) { + case GL_DONT_CARE: + case GL_NICEST: + case GL_FASTEST: + return true; + default: + return false; + } +} + } // namespace GLESv2Validation diff --git a/system/GLESv2_enc/GLESv2Validation.h b/system/GLESv2_enc/GLESv2Validation.h index a37bd586..4ac57875 100644 --- a/system/GLESv2_enc/GLESv2Validation.h +++ b/system/GLESv2_enc/GLESv2Validation.h @@ -33,6 +33,7 @@ namespace GLESv2Validation { extern GLbitfield allBufferMapAccessFlags; bool bufferTarget(GL2Encoder* ctx, GLenum target); bool bufferParam(GL2Encoder* ctx, GLenum param); +bool bufferUsage(GL2Encoder* ctx, GLenum usage); bool pixelStoreParam(GL2Encoder* ctx, GLenum param); bool pixelStoreValue(GLenum param, GLint value); @@ -44,6 +45,7 @@ bool framebufferAttachment(GL2Encoder* ctx, GLenum attachment); bool readPixelsFormat(GLenum format); bool readPixelsType(GLenum type); +bool pixelOp(GLenum format, GLenum type); bool vertexAttribType(GL2Encoder* ctx, GLenum type); @@ -51,9 +53,11 @@ bool readPixelsFboFormatMatch(GLenum format, GLenum type, GLenum fboTexType); bool blitFramebufferFormat(GLenum readFormat, GLenum drawFormat); bool textureTarget(GL2Encoder* ctx, GLenum target); +bool textureParams(GL2Encoder* ctx, GLenum pname); +bool samplerParams(GL2Encoder* ctx, GLenum pname); +bool textureParamValue(GL2Encoder* ctx, GLenum pname, GLint intval, GLfloat floatval, GLenum enumval); -GLsizei compressedTexImageSize(GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); - +bool isIntegerFormat(GLenum format); bool isCompressedFormat(GLenum internalformat); bool supportedCompressedFormat(GL2Encoder* ctx, GLenum internalformat); @@ -70,6 +74,8 @@ bool pixelType(GL2Encoder* ctx, GLenum type); bool pixelFormat(GL2Encoder* ctx, GLenum format); bool pixelInternalFormat(GLenum internalformat); +bool pixelSizedFormat(GL2Encoder* ctx, GLenum internalformat, GLenum format, GLenum type); +void getCompatibleFormatTypeForInternalFormat(GLenum internalformat, GLenum* format_out, GLenum* type_out); bool shaderType(GL2Encoder* ctx, GLenum type); @@ -77,6 +83,40 @@ bool internalFormatTarget(GL2Encoder* ctx, GLenum target); std::string vertexAttribIndexRangeErrorMsg(GL2Encoder* ctx, GLuint index); +bool allowedFace(GLenum face); +bool allowedFunc(GLenum func); +bool allowedStencilOp(GLenum op); +bool allowedBlendEquation(GLenum eq); +bool allowedBlendFunc(GLenum func); + +bool allowedCullFace(GLenum mode); +bool allowedFrontFace(GLenum mode); + +bool allowedEnable(int majorVersion, int minorVersion, GLenum mode); + +bool allowedGetShader(GLenum pname); + +bool allowedShaderType(GLenum shadertype); +bool allowedPrecisionType(GLenum precisiontype); + +bool allowedGetProgram(int majorVersion, int minorVersion, GLenum pname); + +bool allowedGetActiveUniforms(GLenum pname) ; +bool allowedGetActiveUniformBlock(GLenum pname) ; + +bool allowedGetVertexAttrib(GLenum pname) ; + +bool allowedGetRenderbufferParameter(GLenum pname); + +bool allowedQueryTarget(GLenum target); +bool allowedQueryParam(GLenum pname); +bool allowedQueryObjectParam(GLenum pname); + +bool allowedGetSyncParam(GLenum pname); + +bool allowedHintTarget(GLenum target); +bool allowedHintMode(GLenum pname); + } // namespace GLESv2Validation #endif diff --git a/system/GLESv2_enc/gl2_enc.cpp b/system/GLESv2_enc/gl2_enc.cpp index 814021bb..d59dbebf 100644 --- a/system/GLESv2_enc/gl2_enc.cpp +++ b/system/GLESv2_enc/gl2_enc.cpp @@ -12,6 +12,7 @@ #include <stdio.h> +#include "android/base/Tracing.h" namespace { void enc_unsupported() @@ -21,6 +22,7 @@ void enc_unsupported() void glActiveTexture_enc(void *self , GLenum texture) { + AEMU_SCOPED_TRACE("glActiveTexture encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -46,6 +48,7 @@ void glActiveTexture_enc(void *self , GLenum texture) void glAttachShader_enc(void *self , GLuint program, GLuint shader) { + AEMU_SCOPED_TRACE("glAttachShader encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -72,6 +75,7 @@ void glAttachShader_enc(void *self , GLuint program, GLuint shader) void glBindAttribLocation_enc(void *self , GLuint program, GLuint index, const GLchar* name) { + AEMU_SCOPED_TRACE("glBindAttribLocation encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -101,6 +105,7 @@ void glBindAttribLocation_enc(void *self , GLuint program, GLuint index, const G void glBindBuffer_enc(void *self , GLenum target, GLuint buffer) { + AEMU_SCOPED_TRACE("glBindBuffer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -127,6 +132,7 @@ void glBindBuffer_enc(void *self , GLenum target, GLuint buffer) void glBindFramebuffer_enc(void *self , GLenum target, GLuint framebuffer) { + AEMU_SCOPED_TRACE("glBindFramebuffer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -153,6 +159,7 @@ void glBindFramebuffer_enc(void *self , GLenum target, GLuint framebuffer) void glBindRenderbuffer_enc(void *self , GLenum target, GLuint renderbuffer) { + AEMU_SCOPED_TRACE("glBindRenderbuffer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -179,6 +186,7 @@ void glBindRenderbuffer_enc(void *self , GLenum target, GLuint renderbuffer) void glBindTexture_enc(void *self , GLenum target, GLuint texture) { + AEMU_SCOPED_TRACE("glBindTexture encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -205,6 +213,7 @@ void glBindTexture_enc(void *self , GLenum target, GLuint texture) void glBlendColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { + AEMU_SCOPED_TRACE("glBlendColor encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -233,6 +242,7 @@ void glBlendColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, void glBlendEquation_enc(void *self , GLenum mode) { + AEMU_SCOPED_TRACE("glBlendEquation encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -258,6 +268,7 @@ void glBlendEquation_enc(void *self , GLenum mode) void glBlendEquationSeparate_enc(void *self , GLenum modeRGB, GLenum modeAlpha) { + AEMU_SCOPED_TRACE("glBlendEquationSeparate encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -284,6 +295,7 @@ void glBlendEquationSeparate_enc(void *self , GLenum modeRGB, GLenum modeAlpha) void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor) { + AEMU_SCOPED_TRACE("glBlendFunc encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -310,6 +322,7 @@ void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor) void glBlendFuncSeparate_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { + AEMU_SCOPED_TRACE("glBlendFuncSeparate encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -338,6 +351,7 @@ void glBlendFuncSeparate_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum s void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage) { + AEMU_SCOPED_TRACE("glBufferData encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -378,6 +392,7 @@ void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data) { + AEMU_SCOPED_TRACE("glBufferSubData encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -414,6 +429,7 @@ void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr GLenum glCheckFramebufferStatus_enc(void *self , GLenum target) { + AEMU_SCOPED_TRACE("glCheckFramebufferStatus encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -454,6 +470,7 @@ GLenum glCheckFramebufferStatus_enc(void *self , GLenum target) void glClear_enc(void *self , GLbitfield mask) { + AEMU_SCOPED_TRACE("glClear encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -479,6 +496,7 @@ void glClear_enc(void *self , GLbitfield mask) void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { + AEMU_SCOPED_TRACE("glClearColor encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -507,6 +525,7 @@ void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, void glClearDepthf_enc(void *self , GLclampf depth) { + AEMU_SCOPED_TRACE("glClearDepthf encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -532,6 +551,7 @@ void glClearDepthf_enc(void *self , GLclampf depth) void glClearStencil_enc(void *self , GLint s) { + AEMU_SCOPED_TRACE("glClearStencil encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -557,6 +577,7 @@ void glClearStencil_enc(void *self , GLint s) void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) { + AEMU_SCOPED_TRACE("glColorMask encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -585,6 +606,7 @@ void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue void glCompileShader_enc(void *self , GLuint shader) { + AEMU_SCOPED_TRACE("glCompileShader encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -610,6 +632,7 @@ void glCompileShader_enc(void *self , GLuint shader) void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data) { + AEMU_SCOPED_TRACE("glCompressedTexImage2D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -650,6 +673,7 @@ void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data) { + AEMU_SCOPED_TRACE("glCompressedTexSubImage2D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -691,6 +715,7 @@ void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLin void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { + AEMU_SCOPED_TRACE("glCopyTexImage2D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -723,6 +748,7 @@ void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum intern void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glCopyTexSubImage2D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -755,6 +781,7 @@ void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoff GLuint glCreateProgram_enc(void *self ) { + AEMU_SCOPED_TRACE("glCreateProgram encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -794,6 +821,7 @@ GLuint glCreateProgram_enc(void *self ) GLuint glCreateShader_enc(void *self , GLenum type) { + AEMU_SCOPED_TRACE("glCreateShader encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -834,6 +862,7 @@ GLuint glCreateShader_enc(void *self , GLenum type) void glCullFace_enc(void *self , GLenum mode) { + AEMU_SCOPED_TRACE("glCullFace encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -859,6 +888,7 @@ void glCullFace_enc(void *self , GLenum mode) void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers) { + AEMU_SCOPED_TRACE("glDeleteBuffers encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -887,6 +917,7 @@ void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers) void glDeleteFramebuffers_enc(void *self , GLsizei n, const GLuint* framebuffers) { + AEMU_SCOPED_TRACE("glDeleteFramebuffers encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -915,6 +946,7 @@ void glDeleteFramebuffers_enc(void *self , GLsizei n, const GLuint* framebuffers void glDeleteProgram_enc(void *self , GLuint program) { + AEMU_SCOPED_TRACE("glDeleteProgram encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -940,6 +972,7 @@ void glDeleteProgram_enc(void *self , GLuint program) void glDeleteRenderbuffers_enc(void *self , GLsizei n, const GLuint* renderbuffers) { + AEMU_SCOPED_TRACE("glDeleteRenderbuffers encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -968,6 +1001,7 @@ void glDeleteRenderbuffers_enc(void *self , GLsizei n, const GLuint* renderbuffe void glDeleteShader_enc(void *self , GLuint shader) { + AEMU_SCOPED_TRACE("glDeleteShader encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -993,6 +1027,7 @@ void glDeleteShader_enc(void *self , GLuint shader) void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures) { + AEMU_SCOPED_TRACE("glDeleteTextures encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1021,6 +1056,7 @@ void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures) void glDepthFunc_enc(void *self , GLenum func) { + AEMU_SCOPED_TRACE("glDepthFunc encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1046,6 +1082,7 @@ void glDepthFunc_enc(void *self , GLenum func) void glDepthMask_enc(void *self , GLboolean flag) { + AEMU_SCOPED_TRACE("glDepthMask encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1071,6 +1108,7 @@ void glDepthMask_enc(void *self , GLboolean flag) void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar) { + AEMU_SCOPED_TRACE("glDepthRangef encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1097,6 +1135,7 @@ void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar) void glDetachShader_enc(void *self , GLuint program, GLuint shader) { + AEMU_SCOPED_TRACE("glDetachShader encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1123,6 +1162,7 @@ void glDetachShader_enc(void *self , GLuint program, GLuint shader) void glDisable_enc(void *self , GLenum cap) { + AEMU_SCOPED_TRACE("glDisable encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1148,6 +1188,7 @@ void glDisable_enc(void *self , GLenum cap) void glDisableVertexAttribArray_enc(void *self , GLuint index) { + AEMU_SCOPED_TRACE("glDisableVertexAttribArray encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1173,6 +1214,7 @@ void glDisableVertexAttribArray_enc(void *self , GLuint index) void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count) { + AEMU_SCOPED_TRACE("glDrawArrays encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1200,6 +1242,7 @@ void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count) void glEnable_enc(void *self , GLenum cap) { + AEMU_SCOPED_TRACE("glEnable encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1225,6 +1268,7 @@ void glEnable_enc(void *self , GLenum cap) void glEnableVertexAttribArray_enc(void *self , GLuint index) { + AEMU_SCOPED_TRACE("glEnableVertexAttribArray encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1250,6 +1294,7 @@ void glEnableVertexAttribArray_enc(void *self , GLuint index) void glFinish_enc(void *self ) { + AEMU_SCOPED_TRACE("glFinish encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1274,6 +1319,7 @@ void glFinish_enc(void *self ) void glFlush_enc(void *self ) { + AEMU_SCOPED_TRACE("glFlush encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1298,6 +1344,7 @@ void glFlush_enc(void *self ) void glFramebufferRenderbuffer_enc(void *self , GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { + AEMU_SCOPED_TRACE("glFramebufferRenderbuffer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1326,6 +1373,7 @@ void glFramebufferRenderbuffer_enc(void *self , GLenum target, GLenum attachment void glFramebufferTexture2D_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { + AEMU_SCOPED_TRACE("glFramebufferTexture2D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1355,6 +1403,7 @@ void glFramebufferTexture2D_enc(void *self , GLenum target, GLenum attachment, G void glFrontFace_enc(void *self , GLenum mode) { + AEMU_SCOPED_TRACE("glFrontFace encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1380,6 +1429,7 @@ void glFrontFace_enc(void *self , GLenum mode) void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers) { + AEMU_SCOPED_TRACE("glGenBuffers encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1419,6 +1469,7 @@ void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers) void glGenerateMipmap_enc(void *self , GLenum target) { + AEMU_SCOPED_TRACE("glGenerateMipmap encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1444,6 +1495,7 @@ void glGenerateMipmap_enc(void *self , GLenum target) void glGenFramebuffers_enc(void *self , GLsizei n, GLuint* framebuffers) { + AEMU_SCOPED_TRACE("glGenFramebuffers encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1483,6 +1535,7 @@ void glGenFramebuffers_enc(void *self , GLsizei n, GLuint* framebuffers) void glGenRenderbuffers_enc(void *self , GLsizei n, GLuint* renderbuffers) { + AEMU_SCOPED_TRACE("glGenRenderbuffers encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1522,6 +1575,7 @@ void glGenRenderbuffers_enc(void *self , GLsizei n, GLuint* renderbuffers) void glGenTextures_enc(void *self , GLsizei n, GLuint* textures) { + AEMU_SCOPED_TRACE("glGenTextures encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1561,6 +1615,7 @@ void glGenTextures_enc(void *self , GLsizei n, GLuint* textures) void glGetActiveAttrib_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) { + AEMU_SCOPED_TRACE("glGetActiveAttrib encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1622,6 +1677,7 @@ void glGetActiveAttrib_enc(void *self , GLuint program, GLuint index, GLsizei bu void glGetActiveUniform_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) { + AEMU_SCOPED_TRACE("glGetActiveUniform encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1683,6 +1739,7 @@ void glGetActiveUniform_enc(void *self , GLuint program, GLuint index, GLsizei b void glGetAttachedShaders_enc(void *self , GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) { + AEMU_SCOPED_TRACE("glGetAttachedShaders encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1729,6 +1786,7 @@ void glGetAttachedShaders_enc(void *self , GLuint program, GLsizei maxcount, GLs int glGetAttribLocation_enc(void *self , GLuint program, const GLchar* name) { + AEMU_SCOPED_TRACE("glGetAttribLocation encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1772,6 +1830,7 @@ int glGetAttribLocation_enc(void *self , GLuint program, const GLchar* name) void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params) { + AEMU_SCOPED_TRACE("glGetBooleanv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1811,6 +1870,7 @@ void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params) void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetBufferParameteriv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1851,6 +1911,7 @@ void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* GLenum glGetError_enc(void *self ) { + AEMU_SCOPED_TRACE("glGetError encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1890,6 +1951,7 @@ GLenum glGetError_enc(void *self ) void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetFloatv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1929,6 +1991,7 @@ void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params) void glGetFramebufferAttachmentParameteriv_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetFramebufferAttachmentParameteriv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1970,6 +2033,7 @@ void glGetFramebufferAttachmentParameteriv_enc(void *self , GLenum target, GLenu void glGetIntegerv_enc(void *self , GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetIntegerv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2009,6 +2073,7 @@ void glGetIntegerv_enc(void *self , GLenum pname, GLint* params) void glGetProgramiv_enc(void *self , GLuint program, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetProgramiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2049,6 +2114,7 @@ void glGetProgramiv_enc(void *self , GLuint program, GLenum pname, GLint* params void glGetProgramInfoLog_enc(void *self , GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog) { + AEMU_SCOPED_TRACE("glGetProgramInfoLog encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2095,6 +2161,7 @@ void glGetProgramInfoLog_enc(void *self , GLuint program, GLsizei bufsize, GLsiz void glGetRenderbufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetRenderbufferParameteriv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2135,6 +2202,7 @@ void glGetRenderbufferParameteriv_enc(void *self , GLenum target, GLenum pname, void glGetShaderiv_enc(void *self , GLuint shader, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetShaderiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2175,6 +2243,7 @@ void glGetShaderiv_enc(void *self , GLuint shader, GLenum pname, GLint* params) void glGetShaderInfoLog_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog) { + AEMU_SCOPED_TRACE("glGetShaderInfoLog encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2221,6 +2290,7 @@ void glGetShaderInfoLog_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei void glGetShaderPrecisionFormat_enc(void *self , GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) { + AEMU_SCOPED_TRACE("glGetShaderPrecisionFormat encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2265,6 +2335,7 @@ void glGetShaderPrecisionFormat_enc(void *self , GLenum shadertype, GLenum preci void glGetShaderSource_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source) { + AEMU_SCOPED_TRACE("glGetShaderSource encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2311,6 +2382,7 @@ void glGetShaderSource_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetTexParameterfv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2351,6 +2423,7 @@ void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetTexParameteriv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2391,6 +2464,7 @@ void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* pa void glGetUniformfv_enc(void *self , GLuint program, GLint location, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetUniformfv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2431,6 +2505,7 @@ void glGetUniformfv_enc(void *self , GLuint program, GLint location, GLfloat* pa void glGetUniformiv_enc(void *self , GLuint program, GLint location, GLint* params) { + AEMU_SCOPED_TRACE("glGetUniformiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2471,6 +2546,7 @@ void glGetUniformiv_enc(void *self , GLuint program, GLint location, GLint* para int glGetUniformLocation_enc(void *self , GLuint program, const GLchar* name) { + AEMU_SCOPED_TRACE("glGetUniformLocation encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2514,6 +2590,7 @@ int glGetUniformLocation_enc(void *self , GLuint program, const GLchar* name) void glGetVertexAttribfv_enc(void *self , GLuint index, GLenum pname, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetVertexAttribfv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2554,6 +2631,7 @@ void glGetVertexAttribfv_enc(void *self , GLuint index, GLenum pname, GLfloat* p void glGetVertexAttribiv_enc(void *self , GLuint index, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetVertexAttribiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2594,6 +2672,7 @@ void glGetVertexAttribiv_enc(void *self , GLuint index, GLenum pname, GLint* par void glHint_enc(void *self , GLenum target, GLenum mode) { + AEMU_SCOPED_TRACE("glHint encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2620,6 +2699,7 @@ void glHint_enc(void *self , GLenum target, GLenum mode) GLboolean glIsBuffer_enc(void *self , GLuint buffer) { + AEMU_SCOPED_TRACE("glIsBuffer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2660,6 +2740,7 @@ GLboolean glIsBuffer_enc(void *self , GLuint buffer) GLboolean glIsEnabled_enc(void *self , GLenum cap) { + AEMU_SCOPED_TRACE("glIsEnabled encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2700,6 +2781,7 @@ GLboolean glIsEnabled_enc(void *self , GLenum cap) GLboolean glIsFramebuffer_enc(void *self , GLuint framebuffer) { + AEMU_SCOPED_TRACE("glIsFramebuffer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2740,6 +2822,7 @@ GLboolean glIsFramebuffer_enc(void *self , GLuint framebuffer) GLboolean glIsProgram_enc(void *self , GLuint program) { + AEMU_SCOPED_TRACE("glIsProgram encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2780,6 +2863,7 @@ GLboolean glIsProgram_enc(void *self , GLuint program) GLboolean glIsRenderbuffer_enc(void *self , GLuint renderbuffer) { + AEMU_SCOPED_TRACE("glIsRenderbuffer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2820,6 +2904,7 @@ GLboolean glIsRenderbuffer_enc(void *self , GLuint renderbuffer) GLboolean glIsShader_enc(void *self , GLuint shader) { + AEMU_SCOPED_TRACE("glIsShader encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2860,6 +2945,7 @@ GLboolean glIsShader_enc(void *self , GLuint shader) GLboolean glIsTexture_enc(void *self , GLuint texture) { + AEMU_SCOPED_TRACE("glIsTexture encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2900,6 +2986,7 @@ GLboolean glIsTexture_enc(void *self , GLuint texture) void glLineWidth_enc(void *self , GLfloat width) { + AEMU_SCOPED_TRACE("glLineWidth encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2925,6 +3012,7 @@ void glLineWidth_enc(void *self , GLfloat width) void glLinkProgram_enc(void *self , GLuint program) { + AEMU_SCOPED_TRACE("glLinkProgram encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2950,6 +3038,7 @@ void glLinkProgram_enc(void *self , GLuint program) void glPixelStorei_enc(void *self , GLenum pname, GLint param) { + AEMU_SCOPED_TRACE("glPixelStorei encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -2976,6 +3065,7 @@ void glPixelStorei_enc(void *self , GLenum pname, GLint param) void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units) { + AEMU_SCOPED_TRACE("glPolygonOffset encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3002,6 +3092,7 @@ void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units) void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels) { + AEMU_SCOPED_TRACE("glReadPixels encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3046,6 +3137,7 @@ void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei heig void glReleaseShaderCompiler_enc(void *self ) { + AEMU_SCOPED_TRACE("glReleaseShaderCompiler encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3070,6 +3162,7 @@ void glReleaseShaderCompiler_enc(void *self ) void glRenderbufferStorage_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glRenderbufferStorage encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3098,6 +3191,7 @@ void glRenderbufferStorage_enc(void *self , GLenum target, GLenum internalformat void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert) { + AEMU_SCOPED_TRACE("glSampleCoverage encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3124,6 +3218,7 @@ void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert) void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glScissor encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3152,6 +3247,7 @@ void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height) void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask) { + AEMU_SCOPED_TRACE("glStencilFunc encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3179,6 +3275,7 @@ void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask) void glStencilFuncSeparate_enc(void *self , GLenum face, GLenum func, GLint ref, GLuint mask) { + AEMU_SCOPED_TRACE("glStencilFuncSeparate encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3207,6 +3304,7 @@ void glStencilFuncSeparate_enc(void *self , GLenum face, GLenum func, GLint ref, void glStencilMask_enc(void *self , GLuint mask) { + AEMU_SCOPED_TRACE("glStencilMask encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3232,6 +3330,7 @@ void glStencilMask_enc(void *self , GLuint mask) void glStencilMaskSeparate_enc(void *self , GLenum face, GLuint mask) { + AEMU_SCOPED_TRACE("glStencilMaskSeparate encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3258,6 +3357,7 @@ void glStencilMaskSeparate_enc(void *self , GLenum face, GLuint mask) void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass) { + AEMU_SCOPED_TRACE("glStencilOp encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3285,6 +3385,7 @@ void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass) void glStencilOpSeparate_enc(void *self , GLenum face, GLenum fail, GLenum zfail, GLenum zpass) { + AEMU_SCOPED_TRACE("glStencilOpSeparate encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3313,6 +3414,7 @@ void glStencilOpSeparate_enc(void *self , GLenum face, GLenum fail, GLenum zfail void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels) { + AEMU_SCOPED_TRACE("glTexImage2D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3354,6 +3456,7 @@ void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalfor void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param) { + AEMU_SCOPED_TRACE("glTexParameterf encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3381,6 +3484,7 @@ void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params) { + AEMU_SCOPED_TRACE("glTexParameterfv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3410,6 +3514,7 @@ void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloa void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param) { + AEMU_SCOPED_TRACE("glTexParameteri encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3437,6 +3542,7 @@ void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param) void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params) { + AEMU_SCOPED_TRACE("glTexParameteriv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3466,6 +3572,7 @@ void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels) { + AEMU_SCOPED_TRACE("glTexSubImage2D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3507,6 +3614,7 @@ void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, void glUniform1f_enc(void *self , GLint location, GLfloat x) { + AEMU_SCOPED_TRACE("glUniform1f encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3533,6 +3641,7 @@ void glUniform1f_enc(void *self , GLint location, GLfloat x) void glUniform1fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v) { + AEMU_SCOPED_TRACE("glUniform1fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3562,6 +3671,7 @@ void glUniform1fv_enc(void *self , GLint location, GLsizei count, const GLfloat* void glUniform1i_enc(void *self , GLint location, GLint x) { + AEMU_SCOPED_TRACE("glUniform1i encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3588,6 +3698,7 @@ void glUniform1i_enc(void *self , GLint location, GLint x) void glUniform1iv_enc(void *self , GLint location, GLsizei count, const GLint* v) { + AEMU_SCOPED_TRACE("glUniform1iv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3617,6 +3728,7 @@ void glUniform1iv_enc(void *self , GLint location, GLsizei count, const GLint* v void glUniform2f_enc(void *self , GLint location, GLfloat x, GLfloat y) { + AEMU_SCOPED_TRACE("glUniform2f encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3644,6 +3756,7 @@ void glUniform2f_enc(void *self , GLint location, GLfloat x, GLfloat y) void glUniform2fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v) { + AEMU_SCOPED_TRACE("glUniform2fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3673,6 +3786,7 @@ void glUniform2fv_enc(void *self , GLint location, GLsizei count, const GLfloat* void glUniform2i_enc(void *self , GLint location, GLint x, GLint y) { + AEMU_SCOPED_TRACE("glUniform2i encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3700,6 +3814,7 @@ void glUniform2i_enc(void *self , GLint location, GLint x, GLint y) void glUniform2iv_enc(void *self , GLint location, GLsizei count, const GLint* v) { + AEMU_SCOPED_TRACE("glUniform2iv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3729,6 +3844,7 @@ void glUniform2iv_enc(void *self , GLint location, GLsizei count, const GLint* v void glUniform3f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z) { + AEMU_SCOPED_TRACE("glUniform3f encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3757,6 +3873,7 @@ void glUniform3f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat void glUniform3fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v) { + AEMU_SCOPED_TRACE("glUniform3fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3786,6 +3903,7 @@ void glUniform3fv_enc(void *self , GLint location, GLsizei count, const GLfloat* void glUniform3i_enc(void *self , GLint location, GLint x, GLint y, GLint z) { + AEMU_SCOPED_TRACE("glUniform3i encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3814,6 +3932,7 @@ void glUniform3i_enc(void *self , GLint location, GLint x, GLint y, GLint z) void glUniform3iv_enc(void *self , GLint location, GLsizei count, const GLint* v) { + AEMU_SCOPED_TRACE("glUniform3iv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3843,6 +3962,7 @@ void glUniform3iv_enc(void *self , GLint location, GLsizei count, const GLint* v void glUniform4f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { + AEMU_SCOPED_TRACE("glUniform4f encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3872,6 +3992,7 @@ void glUniform4f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat void glUniform4fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v) { + AEMU_SCOPED_TRACE("glUniform4fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3901,6 +4022,7 @@ void glUniform4fv_enc(void *self , GLint location, GLsizei count, const GLfloat* void glUniform4i_enc(void *self , GLint location, GLint x, GLint y, GLint z, GLint w) { + AEMU_SCOPED_TRACE("glUniform4i encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3930,6 +4052,7 @@ void glUniform4i_enc(void *self , GLint location, GLint x, GLint y, GLint z, GLi void glUniform4iv_enc(void *self , GLint location, GLsizei count, const GLint* v) { + AEMU_SCOPED_TRACE("glUniform4iv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3959,6 +4082,7 @@ void glUniform4iv_enc(void *self , GLint location, GLsizei count, const GLint* v void glUniformMatrix2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glUniformMatrix2fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -3989,6 +4113,7 @@ void glUniformMatrix2fv_enc(void *self , GLint location, GLsizei count, GLboolea void glUniformMatrix3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glUniformMatrix3fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4019,6 +4144,7 @@ void glUniformMatrix3fv_enc(void *self , GLint location, GLsizei count, GLboolea void glUniformMatrix4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glUniformMatrix4fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4049,6 +4175,7 @@ void glUniformMatrix4fv_enc(void *self , GLint location, GLsizei count, GLboolea void glUseProgram_enc(void *self , GLuint program) { + AEMU_SCOPED_TRACE("glUseProgram encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4074,6 +4201,7 @@ void glUseProgram_enc(void *self , GLuint program) void glValidateProgram_enc(void *self , GLuint program) { + AEMU_SCOPED_TRACE("glValidateProgram encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4099,6 +4227,7 @@ void glValidateProgram_enc(void *self , GLuint program) void glVertexAttrib1f_enc(void *self , GLuint indx, GLfloat x) { + AEMU_SCOPED_TRACE("glVertexAttrib1f encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4125,6 +4254,7 @@ void glVertexAttrib1f_enc(void *self , GLuint indx, GLfloat x) void glVertexAttrib1fv_enc(void *self , GLuint indx, const GLfloat* values) { + AEMU_SCOPED_TRACE("glVertexAttrib1fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4153,6 +4283,7 @@ void glVertexAttrib1fv_enc(void *self , GLuint indx, const GLfloat* values) void glVertexAttrib2f_enc(void *self , GLuint indx, GLfloat x, GLfloat y) { + AEMU_SCOPED_TRACE("glVertexAttrib2f encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4180,6 +4311,7 @@ void glVertexAttrib2f_enc(void *self , GLuint indx, GLfloat x, GLfloat y) void glVertexAttrib2fv_enc(void *self , GLuint indx, const GLfloat* values) { + AEMU_SCOPED_TRACE("glVertexAttrib2fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4208,6 +4340,7 @@ void glVertexAttrib2fv_enc(void *self , GLuint indx, const GLfloat* values) void glVertexAttrib3f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z) { + AEMU_SCOPED_TRACE("glVertexAttrib3f encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4236,6 +4369,7 @@ void glVertexAttrib3f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloa void glVertexAttrib3fv_enc(void *self , GLuint indx, const GLfloat* values) { + AEMU_SCOPED_TRACE("glVertexAttrib3fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4264,6 +4398,7 @@ void glVertexAttrib3fv_enc(void *self , GLuint indx, const GLfloat* values) void glVertexAttrib4f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { + AEMU_SCOPED_TRACE("glVertexAttrib4f encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4293,6 +4428,7 @@ void glVertexAttrib4f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloa void glVertexAttrib4fv_enc(void *self , GLuint indx, const GLfloat* values) { + AEMU_SCOPED_TRACE("glVertexAttrib4fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4321,6 +4457,7 @@ void glVertexAttrib4fv_enc(void *self , GLuint indx, const GLfloat* values) void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glViewport encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4349,6 +4486,7 @@ void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image) { + AEMU_SCOPED_TRACE("glEGLImageTargetTexture2DOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4375,6 +4513,7 @@ void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image) { + AEMU_SCOPED_TRACE("glEGLImageTargetRenderbufferStorageOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4401,6 +4540,7 @@ void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeg GLboolean glUnmapBufferOES_enc(void *self , GLenum target) { + AEMU_SCOPED_TRACE("glUnmapBufferOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4441,6 +4581,7 @@ GLboolean glUnmapBufferOES_enc(void *self , GLenum target) void glTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels) { + AEMU_SCOPED_TRACE("glTexImage3DOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4483,6 +4624,7 @@ void glTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum interna void glTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels) { + AEMU_SCOPED_TRACE("glTexSubImage3DOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4526,6 +4668,7 @@ void glTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffs void glCopyTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glCopyTexSubImage3DOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4559,6 +4702,7 @@ void glCopyTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint x void glCompressedTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data) { + AEMU_SCOPED_TRACE("glCompressedTexImage3DOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4600,6 +4744,7 @@ void glCompressedTexImage3DOES_enc(void *self , GLenum target, GLint level, GLen void glCompressedTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data) { + AEMU_SCOPED_TRACE("glCompressedTexSubImage3DOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4643,6 +4788,7 @@ void glCompressedTexSubImage3DOES_enc(void *self , GLenum target, GLint level, G void glFramebufferTexture3DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) { + AEMU_SCOPED_TRACE("glFramebufferTexture3DOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4673,6 +4819,7 @@ void glFramebufferTexture3DOES_enc(void *self , GLenum target, GLenum attachment void glBindVertexArrayOES_enc(void *self , GLuint array) { + AEMU_SCOPED_TRACE("glBindVertexArrayOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4698,6 +4845,7 @@ void glBindVertexArrayOES_enc(void *self , GLuint array) void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays) { + AEMU_SCOPED_TRACE("glDeleteVertexArraysOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4726,6 +4874,7 @@ void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays) void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays) { + AEMU_SCOPED_TRACE("glGenVertexArraysOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4765,6 +4914,7 @@ void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays) GLboolean glIsVertexArrayOES_enc(void *self , GLuint array) { + AEMU_SCOPED_TRACE("glIsVertexArrayOES encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4805,6 +4955,7 @@ GLboolean glIsVertexArrayOES_enc(void *self , GLuint array) void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments) { + AEMU_SCOPED_TRACE("glDiscardFramebufferEXT encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4834,6 +4985,7 @@ void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachme void glVertexAttribPointerData_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void* data, GLuint datalen) { + AEMU_SCOPED_TRACE("glVertexAttribPointerData encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4867,6 +5019,7 @@ void glVertexAttribPointerData_enc(void *self , GLuint indx, GLint size, GLenum void glVertexAttribPointerOffset_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint offset) { + AEMU_SCOPED_TRACE("glVertexAttribPointerOffset encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4897,6 +5050,7 @@ void glVertexAttribPointerOffset_enc(void *self , GLuint indx, GLint size, GLenu void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset) { + AEMU_SCOPED_TRACE("glDrawElementsOffset encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4925,6 +5079,7 @@ void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum ty void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen) { + AEMU_SCOPED_TRACE("glDrawElementsData encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4956,6 +5111,7 @@ void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats) { + AEMU_SCOPED_TRACE("glGetCompressedTextureFormats encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -4995,6 +5151,7 @@ void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats) void glShaderString_enc(void *self , GLuint shader, const GLchar* string, GLsizei len) { + AEMU_SCOPED_TRACE("glShaderString encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5024,6 +5181,7 @@ void glShaderString_enc(void *self , GLuint shader, const GLchar* string, GLsize int glFinishRoundTrip_enc(void *self ) { + AEMU_SCOPED_TRACE("glFinishRoundTrip encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5063,6 +5221,7 @@ int glFinishRoundTrip_enc(void *self ) void glGenVertexArrays_enc(void *self , GLsizei n, GLuint* arrays) { + AEMU_SCOPED_TRACE("glGenVertexArrays encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5102,6 +5261,7 @@ void glGenVertexArrays_enc(void *self , GLsizei n, GLuint* arrays) void glBindVertexArray_enc(void *self , GLuint array) { + AEMU_SCOPED_TRACE("glBindVertexArray encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5127,6 +5287,7 @@ void glBindVertexArray_enc(void *self , GLuint array) void glDeleteVertexArrays_enc(void *self , GLsizei n, const GLuint* arrays) { + AEMU_SCOPED_TRACE("glDeleteVertexArrays encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5155,6 +5316,7 @@ void glDeleteVertexArrays_enc(void *self , GLsizei n, const GLuint* arrays) GLboolean glIsVertexArray_enc(void *self , GLuint array) { + AEMU_SCOPED_TRACE("glIsVertexArray encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5195,6 +5357,7 @@ GLboolean glIsVertexArray_enc(void *self , GLuint array) void glMapBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* mapped) { + AEMU_SCOPED_TRACE("glMapBufferRangeAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5239,6 +5402,7 @@ void glMapBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsiz void glUnmapBufferAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer, GLboolean* out_res) { + AEMU_SCOPED_TRACE("glUnmapBufferAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5284,6 +5448,7 @@ void glUnmapBufferAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeip void glFlushMappedBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer) { + AEMU_SCOPED_TRACE("glFlushMappedBufferRangeAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5315,6 +5480,7 @@ void glFlushMappedBufferRangeAEMU_enc(void *self , GLenum target, GLintptr offse void glReadPixelsOffsetAEMU_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset) { + AEMU_SCOPED_TRACE("glReadPixelsOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5346,6 +5512,7 @@ void glReadPixelsOffsetAEMU_enc(void *self , GLint x, GLint y, GLsizei width, GL void glCompressedTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, GLuint offset) { + AEMU_SCOPED_TRACE("glCompressedTexImage2DOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5378,6 +5545,7 @@ void glCompressedTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint leve void glCompressedTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLuint offset) { + AEMU_SCOPED_TRACE("glCompressedTexSubImage2DOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5411,6 +5579,7 @@ void glCompressedTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint l void glTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLuint offset) { + AEMU_SCOPED_TRACE("glTexImage2DOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5444,6 +5613,7 @@ void glTexImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint i void glTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset) { + AEMU_SCOPED_TRACE("glTexSubImage2DOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5477,6 +5647,7 @@ void glTexSubImage2DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLin void glBindBufferRange_enc(void *self , GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { + AEMU_SCOPED_TRACE("glBindBufferRange encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5506,6 +5677,7 @@ void glBindBufferRange_enc(void *self , GLenum target, GLuint index, GLuint buff void glBindBufferBase_enc(void *self , GLenum target, GLuint index, GLuint buffer) { + AEMU_SCOPED_TRACE("glBindBufferBase encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5533,6 +5705,7 @@ void glBindBufferBase_enc(void *self , GLenum target, GLuint index, GLuint buffe void glCopyBufferSubData_enc(void *self , GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size) { + AEMU_SCOPED_TRACE("glCopyBufferSubData encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5563,6 +5736,7 @@ void glCopyBufferSubData_enc(void *self , GLenum readtarget, GLenum writetarget, void glClearBufferiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLint* value) { + AEMU_SCOPED_TRACE("glClearBufferiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5592,6 +5766,7 @@ void glClearBufferiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLi void glClearBufferuiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLuint* value) { + AEMU_SCOPED_TRACE("glClearBufferuiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5621,6 +5796,7 @@ void glClearBufferuiv_enc(void *self , GLenum buffer, GLint drawBuffer, const GL void glClearBufferfv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLfloat* value) { + AEMU_SCOPED_TRACE("glClearBufferfv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5650,6 +5826,7 @@ void glClearBufferfv_enc(void *self , GLenum buffer, GLint drawBuffer, const GLf void glClearBufferfi_enc(void *self , GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil) { + AEMU_SCOPED_TRACE("glClearBufferfi encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5678,6 +5855,7 @@ void glClearBufferfi_enc(void *self , GLenum buffer, GLint drawBuffer, GLfloat d void glUniformBlockBinding_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) { + AEMU_SCOPED_TRACE("glUniformBlockBinding encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5705,6 +5883,7 @@ void glUniformBlockBinding_enc(void *self , GLuint program, GLuint uniformBlockI GLuint glGetUniformBlockIndex_enc(void *self , GLuint program, const GLchar* uniformBlockName) { + AEMU_SCOPED_TRACE("glGetUniformBlockIndex encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5748,6 +5927,7 @@ GLuint glGetUniformBlockIndex_enc(void *self , GLuint program, const GLchar* uni void glGetUniformIndicesAEMU_enc(void *self , GLuint program, GLsizei uniformCount, const GLchar* packedUniformNames, GLsizei packedLen, GLuint* uniformIndices) { + AEMU_SCOPED_TRACE("glGetUniformIndicesAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5792,6 +5972,7 @@ void glGetUniformIndicesAEMU_enc(void *self , GLuint program, GLsizei uniformCou void glGetActiveUniformBlockiv_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetActiveUniformBlockiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5833,6 +6014,7 @@ void glGetActiveUniformBlockiv_enc(void *self , GLuint program, GLuint uniformBl void glGetActiveUniformBlockName_enc(void *self , GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName) { + AEMU_SCOPED_TRACE("glGetActiveUniformBlockName encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5882,6 +6064,7 @@ void glGetActiveUniformBlockName_enc(void *self , GLuint program, GLuint uniform void glUniform1ui_enc(void *self , GLint location, GLuint v0) { + AEMU_SCOPED_TRACE("glUniform1ui encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5908,6 +6091,7 @@ void glUniform1ui_enc(void *self , GLint location, GLuint v0) void glUniform2ui_enc(void *self , GLint location, GLuint v0, GLuint v1) { + AEMU_SCOPED_TRACE("glUniform2ui encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5935,6 +6119,7 @@ void glUniform2ui_enc(void *self , GLint location, GLuint v0, GLuint v1) void glUniform3ui_enc(void *self , GLint location, GLuint v0, GLuint v1, GLuint v2) { + AEMU_SCOPED_TRACE("glUniform3ui encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5963,6 +6148,7 @@ void glUniform3ui_enc(void *self , GLint location, GLuint v0, GLuint v1, GLuint void glUniform4ui_enc(void *self , GLint location, GLint v0, GLuint v1, GLuint v2, GLuint v3) { + AEMU_SCOPED_TRACE("glUniform4ui encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -5992,6 +6178,7 @@ void glUniform4ui_enc(void *self , GLint location, GLint v0, GLuint v1, GLuint v void glUniform1uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value) { + AEMU_SCOPED_TRACE("glUniform1uiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6021,6 +6208,7 @@ void glUniform1uiv_enc(void *self , GLint location, GLsizei count, const GLuint* void glUniform2uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value) { + AEMU_SCOPED_TRACE("glUniform2uiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6050,6 +6238,7 @@ void glUniform2uiv_enc(void *self , GLint location, GLsizei count, const GLuint* void glUniform3uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value) { + AEMU_SCOPED_TRACE("glUniform3uiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6079,6 +6268,7 @@ void glUniform3uiv_enc(void *self , GLint location, GLsizei count, const GLuint* void glUniform4uiv_enc(void *self , GLint location, GLsizei count, const GLuint* value) { + AEMU_SCOPED_TRACE("glUniform4uiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6108,6 +6298,7 @@ void glUniform4uiv_enc(void *self , GLint location, GLsizei count, const GLuint* void glUniformMatrix2x3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glUniformMatrix2x3fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6138,6 +6329,7 @@ void glUniformMatrix2x3fv_enc(void *self , GLint location, GLsizei count, GLbool void glUniformMatrix3x2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glUniformMatrix3x2fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6168,6 +6360,7 @@ void glUniformMatrix3x2fv_enc(void *self , GLint location, GLsizei count, GLbool void glUniformMatrix2x4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glUniformMatrix2x4fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6198,6 +6391,7 @@ void glUniformMatrix2x4fv_enc(void *self , GLint location, GLsizei count, GLbool void glUniformMatrix4x2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glUniformMatrix4x2fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6228,6 +6422,7 @@ void glUniformMatrix4x2fv_enc(void *self , GLint location, GLsizei count, GLbool void glUniformMatrix3x4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glUniformMatrix3x4fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6258,6 +6453,7 @@ void glUniformMatrix3x4fv_enc(void *self , GLint location, GLsizei count, GLbool void glUniformMatrix4x3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glUniformMatrix4x3fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6288,6 +6484,7 @@ void glUniformMatrix4x3fv_enc(void *self , GLint location, GLsizei count, GLbool void glGetUniformuiv_enc(void *self , GLuint program, GLint location, GLuint* params) { + AEMU_SCOPED_TRACE("glGetUniformuiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6328,6 +6525,7 @@ void glGetUniformuiv_enc(void *self , GLuint program, GLint location, GLuint* pa void glGetActiveUniformsiv_enc(void *self , GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetActiveUniformsiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6372,6 +6570,7 @@ void glGetActiveUniformsiv_enc(void *self , GLuint program, GLsizei uniformCount void glVertexAttribI4i_enc(void *self , GLuint index, GLint v0, GLint v1, GLint v2, GLint v3) { + AEMU_SCOPED_TRACE("glVertexAttribI4i encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6401,6 +6600,7 @@ void glVertexAttribI4i_enc(void *self , GLuint index, GLint v0, GLint v1, GLint void glVertexAttribI4ui_enc(void *self , GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { + AEMU_SCOPED_TRACE("glVertexAttribI4ui encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6430,6 +6630,7 @@ void glVertexAttribI4ui_enc(void *self , GLuint index, GLuint v0, GLuint v1, GLu void glVertexAttribI4iv_enc(void *self , GLuint index, const GLint* v) { + AEMU_SCOPED_TRACE("glVertexAttribI4iv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6458,6 +6659,7 @@ void glVertexAttribI4iv_enc(void *self , GLuint index, const GLint* v) void glVertexAttribI4uiv_enc(void *self , GLuint index, const GLuint* v) { + AEMU_SCOPED_TRACE("glVertexAttribI4uiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6486,6 +6688,7 @@ void glVertexAttribI4uiv_enc(void *self , GLuint index, const GLuint* v) void glVertexAttribIPointerOffsetAEMU_enc(void *self , GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset) { + AEMU_SCOPED_TRACE("glVertexAttribIPointerOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6515,6 +6718,7 @@ void glVertexAttribIPointerOffsetAEMU_enc(void *self , GLuint index, GLint size, void glVertexAttribIPointerDataAEMU_enc(void *self , GLuint index, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen) { + AEMU_SCOPED_TRACE("glVertexAttribIPointerDataAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6547,6 +6751,7 @@ void glVertexAttribIPointerDataAEMU_enc(void *self , GLuint index, GLint size, G void glGetVertexAttribIiv_enc(void *self , GLuint index, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetVertexAttribIiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6587,6 +6792,7 @@ void glGetVertexAttribIiv_enc(void *self , GLuint index, GLenum pname, GLint* pa void glGetVertexAttribIuiv_enc(void *self , GLuint index, GLenum pname, GLuint* params) { + AEMU_SCOPED_TRACE("glGetVertexAttribIuiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6627,6 +6833,7 @@ void glGetVertexAttribIuiv_enc(void *self , GLuint index, GLenum pname, GLuint* void glVertexAttribDivisor_enc(void *self , GLuint index, GLuint divisor) { + AEMU_SCOPED_TRACE("glVertexAttribDivisor encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6653,6 +6860,7 @@ void glVertexAttribDivisor_enc(void *self , GLuint index, GLuint divisor) void glDrawArraysInstanced_enc(void *self , GLenum mode, GLint first, GLsizei count, GLsizei primcount) { + AEMU_SCOPED_TRACE("glDrawArraysInstanced encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6681,6 +6889,7 @@ void glDrawArraysInstanced_enc(void *self , GLenum mode, GLint first, GLsizei co void glDrawElementsInstancedDataAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLsizei datalen) { + AEMU_SCOPED_TRACE("glDrawElementsInstancedDataAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6713,6 +6922,7 @@ void glDrawElementsInstancedDataAEMU_enc(void *self , GLenum mode, GLsizei count void glDrawElementsInstancedOffsetAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset, GLsizei primcount) { + AEMU_SCOPED_TRACE("glDrawElementsInstancedOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6742,6 +6952,7 @@ void glDrawElementsInstancedOffsetAEMU_enc(void *self , GLenum mode, GLsizei cou void glDrawRangeElementsDataAEMU_enc(void *self , GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices, GLsizei datalen) { + AEMU_SCOPED_TRACE("glDrawRangeElementsDataAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6775,6 +6986,7 @@ void glDrawRangeElementsDataAEMU_enc(void *self , GLenum mode, GLuint start, GLu void glDrawRangeElementsOffsetAEMU_enc(void *self , GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLuint offset) { + AEMU_SCOPED_TRACE("glDrawRangeElementsOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6805,6 +7017,7 @@ void glDrawRangeElementsOffsetAEMU_enc(void *self , GLenum mode, GLuint start, G uint64_t glFenceSyncAEMU_enc(void *self , GLenum condition, GLbitfield flags) { + AEMU_SCOPED_TRACE("glFenceSyncAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6846,6 +7059,7 @@ uint64_t glFenceSyncAEMU_enc(void *self , GLenum condition, GLbitfield flags) GLenum glClientWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint64 timeout) { + AEMU_SCOPED_TRACE("glClientWaitSyncAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6888,6 +7102,7 @@ GLenum glClientWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, void glWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint64 timeout) { + AEMU_SCOPED_TRACE("glWaitSyncAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6915,6 +7130,7 @@ void glWaitSyncAEMU_enc(void *self , uint64_t wait_on, GLbitfield flags, GLuint6 void glDeleteSyncAEMU_enc(void *self , uint64_t to_delete) { + AEMU_SCOPED_TRACE("glDeleteSyncAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6940,6 +7156,7 @@ void glDeleteSyncAEMU_enc(void *self , uint64_t to_delete) GLboolean glIsSyncAEMU_enc(void *self , uint64_t sync) { + AEMU_SCOPED_TRACE("glIsSyncAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -6980,6 +7197,7 @@ GLboolean glIsSyncAEMU_enc(void *self , uint64_t sync) void glGetSyncivAEMU_enc(void *self , uint64_t sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values) { + AEMU_SCOPED_TRACE("glGetSyncivAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7027,6 +7245,7 @@ void glGetSyncivAEMU_enc(void *self , uint64_t sync, GLenum pname, GLsizei bufSi void glDrawBuffers_enc(void *self , GLsizei n, const GLenum* bufs) { + AEMU_SCOPED_TRACE("glDrawBuffers encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7055,6 +7274,7 @@ void glDrawBuffers_enc(void *self , GLsizei n, const GLenum* bufs) void glReadBuffer_enc(void *self , GLenum src) { + AEMU_SCOPED_TRACE("glReadBuffer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7080,6 +7300,7 @@ void glReadBuffer_enc(void *self , GLenum src) void glBlitFramebuffer_enc(void *self , GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { + AEMU_SCOPED_TRACE("glBlitFramebuffer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7114,6 +7335,7 @@ void glBlitFramebuffer_enc(void *self , GLint srcX0, GLint srcY0, GLint srcX1, G void glInvalidateFramebuffer_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments) { + AEMU_SCOPED_TRACE("glInvalidateFramebuffer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7143,6 +7365,7 @@ void glInvalidateFramebuffer_enc(void *self , GLenum target, GLsizei numAttachme void glInvalidateSubFramebuffer_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glInvalidateSubFramebuffer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7176,6 +7399,7 @@ void glInvalidateSubFramebuffer_enc(void *self , GLenum target, GLsizei numAttac void glFramebufferTextureLayer_enc(void *self , GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { + AEMU_SCOPED_TRACE("glFramebufferTextureLayer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7205,6 +7429,7 @@ void glFramebufferTextureLayer_enc(void *self , GLenum target, GLenum attachment void glRenderbufferStorageMultisample_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glRenderbufferStorageMultisample encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7234,6 +7459,7 @@ void glRenderbufferStorageMultisample_enc(void *self , GLenum target, GLsizei sa void glTexStorage2D_enc(void *self , GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glTexStorage2D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7263,6 +7489,7 @@ void glTexStorage2D_enc(void *self , GLenum target, GLsizei levels, GLenum inter void glGetInternalformativ_enc(void *self , GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params) { + AEMU_SCOPED_TRACE("glGetInternalformativ encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7305,6 +7532,7 @@ void glGetInternalformativ_enc(void *self , GLenum target, GLenum internalformat void glBeginTransformFeedback_enc(void *self , GLenum primitiveMode) { + AEMU_SCOPED_TRACE("glBeginTransformFeedback encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7330,6 +7558,7 @@ void glBeginTransformFeedback_enc(void *self , GLenum primitiveMode) void glEndTransformFeedback_enc(void *self ) { + AEMU_SCOPED_TRACE("glEndTransformFeedback encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7354,6 +7583,7 @@ void glEndTransformFeedback_enc(void *self ) void glGenTransformFeedbacks_enc(void *self , GLsizei n, GLuint* ids) { + AEMU_SCOPED_TRACE("glGenTransformFeedbacks encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7393,6 +7623,7 @@ void glGenTransformFeedbacks_enc(void *self , GLsizei n, GLuint* ids) void glDeleteTransformFeedbacks_enc(void *self , GLsizei n, const GLuint* ids) { + AEMU_SCOPED_TRACE("glDeleteTransformFeedbacks encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7421,6 +7652,7 @@ void glDeleteTransformFeedbacks_enc(void *self , GLsizei n, const GLuint* ids) void glBindTransformFeedback_enc(void *self , GLenum target, GLuint id) { + AEMU_SCOPED_TRACE("glBindTransformFeedback encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7447,6 +7679,7 @@ void glBindTransformFeedback_enc(void *self , GLenum target, GLuint id) void glPauseTransformFeedback_enc(void *self ) { + AEMU_SCOPED_TRACE("glPauseTransformFeedback encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7471,6 +7704,7 @@ void glPauseTransformFeedback_enc(void *self ) void glResumeTransformFeedback_enc(void *self ) { + AEMU_SCOPED_TRACE("glResumeTransformFeedback encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7495,6 +7729,7 @@ void glResumeTransformFeedback_enc(void *self ) GLboolean glIsTransformFeedback_enc(void *self , GLuint id) { + AEMU_SCOPED_TRACE("glIsTransformFeedback encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7535,6 +7770,7 @@ GLboolean glIsTransformFeedback_enc(void *self , GLuint id) void glTransformFeedbackVaryingsAEMU_enc(void *self , GLuint program, GLsizei count, const char* packedVaryings, GLuint packedVaryingsLen, GLenum bufferMode) { + AEMU_SCOPED_TRACE("glTransformFeedbackVaryingsAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7566,6 +7802,7 @@ void glTransformFeedbackVaryingsAEMU_enc(void *self , GLuint program, GLsizei co void glGetTransformFeedbackVarying_enc(void *self , GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, char* name) { + AEMU_SCOPED_TRACE("glGetTransformFeedbackVarying encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7625,6 +7862,7 @@ void glGetTransformFeedbackVarying_enc(void *self , GLuint program, GLuint index void glGenSamplers_enc(void *self , GLsizei n, GLuint* samplers) { + AEMU_SCOPED_TRACE("glGenSamplers encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7664,6 +7902,7 @@ void glGenSamplers_enc(void *self , GLsizei n, GLuint* samplers) void glDeleteSamplers_enc(void *self , GLsizei n, const GLuint* samplers) { + AEMU_SCOPED_TRACE("glDeleteSamplers encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7692,6 +7931,7 @@ void glDeleteSamplers_enc(void *self , GLsizei n, const GLuint* samplers) void glBindSampler_enc(void *self , GLuint unit, GLuint sampler) { + AEMU_SCOPED_TRACE("glBindSampler encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7718,6 +7958,7 @@ void glBindSampler_enc(void *self , GLuint unit, GLuint sampler) void glSamplerParameterf_enc(void *self , GLuint sampler, GLenum pname, GLfloat param) { + AEMU_SCOPED_TRACE("glSamplerParameterf encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7745,6 +7986,7 @@ void glSamplerParameterf_enc(void *self , GLuint sampler, GLenum pname, GLfloat void glSamplerParameteri_enc(void *self , GLuint sampler, GLenum pname, GLint param) { + AEMU_SCOPED_TRACE("glSamplerParameteri encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7772,6 +8014,7 @@ void glSamplerParameteri_enc(void *self , GLuint sampler, GLenum pname, GLint pa void glSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, const GLfloat* params) { + AEMU_SCOPED_TRACE("glSamplerParameterfv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7801,6 +8044,7 @@ void glSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, const G void glSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, const GLint* params) { + AEMU_SCOPED_TRACE("glSamplerParameteriv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7830,6 +8074,7 @@ void glSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, const G void glGetSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetSamplerParameterfv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7870,6 +8115,7 @@ void glGetSamplerParameterfv_enc(void *self , GLuint sampler, GLenum pname, GLfl void glGetSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetSamplerParameteriv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7910,6 +8156,7 @@ void glGetSamplerParameteriv_enc(void *self , GLuint sampler, GLenum pname, GLin GLboolean glIsSampler_enc(void *self , GLuint sampler) { + AEMU_SCOPED_TRACE("glIsSampler encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7950,6 +8197,7 @@ GLboolean glIsSampler_enc(void *self , GLuint sampler) void glGenQueries_enc(void *self , GLsizei n, GLuint* queries) { + AEMU_SCOPED_TRACE("glGenQueries encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -7989,6 +8237,7 @@ void glGenQueries_enc(void *self , GLsizei n, GLuint* queries) void glDeleteQueries_enc(void *self , GLsizei n, const GLuint* queries) { + AEMU_SCOPED_TRACE("glDeleteQueries encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8017,6 +8266,7 @@ void glDeleteQueries_enc(void *self , GLsizei n, const GLuint* queries) void glBeginQuery_enc(void *self , GLenum target, GLuint query) { + AEMU_SCOPED_TRACE("glBeginQuery encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8043,6 +8293,7 @@ void glBeginQuery_enc(void *self , GLenum target, GLuint query) void glEndQuery_enc(void *self , GLenum target) { + AEMU_SCOPED_TRACE("glEndQuery encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8068,6 +8319,7 @@ void glEndQuery_enc(void *self , GLenum target) void glGetQueryiv_enc(void *self , GLenum target, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetQueryiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8108,6 +8360,7 @@ void glGetQueryiv_enc(void *self , GLenum target, GLenum pname, GLint* params) void glGetQueryObjectuiv_enc(void *self , GLuint query, GLenum pname, GLuint* params) { + AEMU_SCOPED_TRACE("glGetQueryObjectuiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8148,6 +8401,7 @@ void glGetQueryObjectuiv_enc(void *self , GLuint query, GLenum pname, GLuint* pa GLboolean glIsQuery_enc(void *self , GLuint query) { + AEMU_SCOPED_TRACE("glIsQuery encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8188,6 +8442,7 @@ GLboolean glIsQuery_enc(void *self , GLuint query) void glProgramParameteri_enc(void *self , GLuint program, GLenum pname, GLint value) { + AEMU_SCOPED_TRACE("glProgramParameteri encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8215,6 +8470,7 @@ void glProgramParameteri_enc(void *self , GLuint program, GLenum pname, GLint va void glProgramBinary_enc(void *self , GLuint program, GLenum binaryFormat, const void* binary, GLsizei length) { + AEMU_SCOPED_TRACE("glProgramBinary encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8245,6 +8501,7 @@ void glProgramBinary_enc(void *self , GLuint program, GLenum binaryFormat, const void glGetProgramBinary_enc(void *self , GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void* binary) { + AEMU_SCOPED_TRACE("glGetProgramBinary encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8295,6 +8552,7 @@ void glGetProgramBinary_enc(void *self , GLuint program, GLsizei bufSize, GLsize GLint glGetFragDataLocation_enc(void *self , GLuint program, const char* name) { + AEMU_SCOPED_TRACE("glGetFragDataLocation encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8338,6 +8596,7 @@ GLint glGetFragDataLocation_enc(void *self , GLuint program, const char* name) void glGetInteger64v_enc(void *self , GLenum pname, GLint64* data) { + AEMU_SCOPED_TRACE("glGetInteger64v encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8377,6 +8636,7 @@ void glGetInteger64v_enc(void *self , GLenum pname, GLint64* data) void glGetIntegeri_v_enc(void *self , GLenum target, GLuint index, GLint* data) { + AEMU_SCOPED_TRACE("glGetIntegeri_v encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8417,6 +8677,7 @@ void glGetIntegeri_v_enc(void *self , GLenum target, GLuint index, GLint* data) void glGetInteger64i_v_enc(void *self , GLenum target, GLuint index, GLint64* data) { + AEMU_SCOPED_TRACE("glGetInteger64i_v encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8457,6 +8718,7 @@ void glGetInteger64i_v_enc(void *self , GLenum target, GLuint index, GLint64* da void glTexImage3D_enc(void *self , GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* data) { + AEMU_SCOPED_TRACE("glTexImage3D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8499,6 +8761,7 @@ void glTexImage3D_enc(void *self , GLenum target, GLint level, GLint internalFor void glTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLuint offset) { + AEMU_SCOPED_TRACE("glTexImage3DOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8533,6 +8796,7 @@ void glTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint i void glTexStorage3D_enc(void *self , GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) { + AEMU_SCOPED_TRACE("glTexStorage3D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8563,6 +8827,7 @@ void glTexStorage3D_enc(void *self , GLenum target, GLsizei levels, GLenum inter void glTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* data) { + AEMU_SCOPED_TRACE("glTexSubImage3D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8606,6 +8871,7 @@ void glTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, void glTexSubImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLuint offset) { + AEMU_SCOPED_TRACE("glTexSubImage3DOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8641,6 +8907,7 @@ void glTexSubImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLin void glCompressedTexImage3D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data) { + AEMU_SCOPED_TRACE("glCompressedTexImage3D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8682,6 +8949,7 @@ void glCompressedTexImage3D_enc(void *self , GLenum target, GLint level, GLenum void glCompressedTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLuint offset) { + AEMU_SCOPED_TRACE("glCompressedTexImage3DOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8715,6 +8983,7 @@ void glCompressedTexImage3DOffsetAEMU_enc(void *self , GLenum target, GLint leve void glCompressedTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data) { + AEMU_SCOPED_TRACE("glCompressedTexSubImage3D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8758,6 +9027,7 @@ void glCompressedTexSubImage3D_enc(void *self , GLenum target, GLint level, GLin void glCompressedTexSubImage3DOffsetAEMU_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLuint data) { + AEMU_SCOPED_TRACE("glCompressedTexSubImage3DOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8793,6 +9063,7 @@ void glCompressedTexSubImage3DOffsetAEMU_enc(void *self , GLenum target, GLint l void glCopyTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { + AEMU_SCOPED_TRACE("glCopyTexSubImage3D encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8826,6 +9097,7 @@ void glCopyTexSubImage3D_enc(void *self , GLenum target, GLint level, GLint xoff void glGetBooleani_v_enc(void *self , GLenum target, GLuint index, GLboolean* data) { + AEMU_SCOPED_TRACE("glGetBooleani_v encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8866,6 +9138,7 @@ void glGetBooleani_v_enc(void *self , GLenum target, GLuint index, GLboolean* da void glMemoryBarrier_enc(void *self , GLbitfield barriers) { + AEMU_SCOPED_TRACE("glMemoryBarrier encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8891,6 +9164,7 @@ void glMemoryBarrier_enc(void *self , GLbitfield barriers) void glMemoryBarrierByRegion_enc(void *self , GLbitfield barriers) { + AEMU_SCOPED_TRACE("glMemoryBarrierByRegion encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8916,6 +9190,7 @@ void glMemoryBarrierByRegion_enc(void *self , GLbitfield barriers) void glGenProgramPipelines_enc(void *self , GLsizei n, GLuint* pipelines) { + AEMU_SCOPED_TRACE("glGenProgramPipelines encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8955,6 +9230,7 @@ void glGenProgramPipelines_enc(void *self , GLsizei n, GLuint* pipelines) void glDeleteProgramPipelines_enc(void *self , GLsizei n, const GLuint* pipelines) { + AEMU_SCOPED_TRACE("glDeleteProgramPipelines encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -8983,6 +9259,7 @@ void glDeleteProgramPipelines_enc(void *self , GLsizei n, const GLuint* pipeline void glBindProgramPipeline_enc(void *self , GLuint pipeline) { + AEMU_SCOPED_TRACE("glBindProgramPipeline encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9008,6 +9285,7 @@ void glBindProgramPipeline_enc(void *self , GLuint pipeline) void glGetProgramPipelineiv_enc(void *self , GLuint pipeline, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetProgramPipelineiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9048,6 +9326,7 @@ void glGetProgramPipelineiv_enc(void *self , GLuint pipeline, GLenum pname, GLin void glGetProgramPipelineInfoLog_enc(void *self , GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog) { + AEMU_SCOPED_TRACE("glGetProgramPipelineInfoLog encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9094,6 +9373,7 @@ void glGetProgramPipelineInfoLog_enc(void *self , GLuint pipeline, GLsizei bufSi void glValidateProgramPipeline_enc(void *self , GLuint pipeline) { + AEMU_SCOPED_TRACE("glValidateProgramPipeline encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9119,6 +9399,7 @@ void glValidateProgramPipeline_enc(void *self , GLuint pipeline) GLboolean glIsProgramPipeline_enc(void *self , GLuint pipeline) { + AEMU_SCOPED_TRACE("glIsProgramPipeline encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9159,6 +9440,7 @@ GLboolean glIsProgramPipeline_enc(void *self , GLuint pipeline) void glUseProgramStages_enc(void *self , GLuint pipeline, GLbitfield stages, GLuint program) { + AEMU_SCOPED_TRACE("glUseProgramStages encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9186,6 +9468,7 @@ void glUseProgramStages_enc(void *self , GLuint pipeline, GLbitfield stages, GLu void glActiveShaderProgram_enc(void *self , GLuint pipeline, GLuint program) { + AEMU_SCOPED_TRACE("glActiveShaderProgram encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9212,6 +9495,7 @@ void glActiveShaderProgram_enc(void *self , GLuint pipeline, GLuint program) GLuint glCreateShaderProgramvAEMU_enc(void *self , GLenum type, GLsizei count, const char* packedStrings, GLuint packedLen) { + AEMU_SCOPED_TRACE("glCreateShaderProgramvAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9257,6 +9541,7 @@ GLuint glCreateShaderProgramvAEMU_enc(void *self , GLenum type, GLsizei count, c void glProgramUniform1f_enc(void *self , GLuint program, GLint location, GLfloat v0) { + AEMU_SCOPED_TRACE("glProgramUniform1f encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9284,6 +9569,7 @@ void glProgramUniform1f_enc(void *self , GLuint program, GLint location, GLfloat void glProgramUniform2f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1) { + AEMU_SCOPED_TRACE("glProgramUniform2f encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9312,6 +9598,7 @@ void glProgramUniform2f_enc(void *self , GLuint program, GLint location, GLfloat void glProgramUniform3f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { + AEMU_SCOPED_TRACE("glProgramUniform3f encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9341,6 +9628,7 @@ void glProgramUniform3f_enc(void *self , GLuint program, GLint location, GLfloat void glProgramUniform4f_enc(void *self , GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { + AEMU_SCOPED_TRACE("glProgramUniform4f encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9371,6 +9659,7 @@ void glProgramUniform4f_enc(void *self , GLuint program, GLint location, GLfloat void glProgramUniform1i_enc(void *self , GLuint program, GLint location, GLint v0) { + AEMU_SCOPED_TRACE("glProgramUniform1i encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9398,6 +9687,7 @@ void glProgramUniform1i_enc(void *self , GLuint program, GLint location, GLint v void glProgramUniform2i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1) { + AEMU_SCOPED_TRACE("glProgramUniform2i encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9426,6 +9716,7 @@ void glProgramUniform2i_enc(void *self , GLuint program, GLint location, GLint v void glProgramUniform3i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2) { + AEMU_SCOPED_TRACE("glProgramUniform3i encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9455,6 +9746,7 @@ void glProgramUniform3i_enc(void *self , GLuint program, GLint location, GLint v void glProgramUniform4i_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { + AEMU_SCOPED_TRACE("glProgramUniform4i encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9485,6 +9777,7 @@ void glProgramUniform4i_enc(void *self , GLuint program, GLint location, GLint v void glProgramUniform1ui_enc(void *self , GLuint program, GLint location, GLuint v0) { + AEMU_SCOPED_TRACE("glProgramUniform1ui encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9512,6 +9805,7 @@ void glProgramUniform1ui_enc(void *self , GLuint program, GLint location, GLuint void glProgramUniform2ui_enc(void *self , GLuint program, GLint location, GLint v0, GLuint v1) { + AEMU_SCOPED_TRACE("glProgramUniform2ui encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9540,6 +9834,7 @@ void glProgramUniform2ui_enc(void *self , GLuint program, GLint location, GLint void glProgramUniform3ui_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLuint v2) { + AEMU_SCOPED_TRACE("glProgramUniform3ui encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9569,6 +9864,7 @@ void glProgramUniform3ui_enc(void *self , GLuint program, GLint location, GLint void glProgramUniform4ui_enc(void *self , GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLuint v3) { + AEMU_SCOPED_TRACE("glProgramUniform4ui encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9599,6 +9895,7 @@ void glProgramUniform4ui_enc(void *self , GLuint program, GLint location, GLint void glProgramUniform1fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniform1fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9629,6 +9926,7 @@ void glProgramUniform1fv_enc(void *self , GLuint program, GLint location, GLsize void glProgramUniform2fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniform2fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9659,6 +9957,7 @@ void glProgramUniform2fv_enc(void *self , GLuint program, GLint location, GLsize void glProgramUniform3fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniform3fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9689,6 +9988,7 @@ void glProgramUniform3fv_enc(void *self , GLuint program, GLint location, GLsize void glProgramUniform4fv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniform4fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9719,6 +10019,7 @@ void glProgramUniform4fv_enc(void *self , GLuint program, GLint location, GLsize void glProgramUniform1iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value) { + AEMU_SCOPED_TRACE("glProgramUniform1iv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9749,6 +10050,7 @@ void glProgramUniform1iv_enc(void *self , GLuint program, GLint location, GLsize void glProgramUniform2iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value) { + AEMU_SCOPED_TRACE("glProgramUniform2iv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9779,6 +10081,7 @@ void glProgramUniform2iv_enc(void *self , GLuint program, GLint location, GLsize void glProgramUniform3iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value) { + AEMU_SCOPED_TRACE("glProgramUniform3iv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9809,6 +10112,7 @@ void glProgramUniform3iv_enc(void *self , GLuint program, GLint location, GLsize void glProgramUniform4iv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLint* value) { + AEMU_SCOPED_TRACE("glProgramUniform4iv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9839,6 +10143,7 @@ void glProgramUniform4iv_enc(void *self , GLuint program, GLint location, GLsize void glProgramUniform1uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value) { + AEMU_SCOPED_TRACE("glProgramUniform1uiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9869,6 +10174,7 @@ void glProgramUniform1uiv_enc(void *self , GLuint program, GLint location, GLsiz void glProgramUniform2uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value) { + AEMU_SCOPED_TRACE("glProgramUniform2uiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9899,6 +10205,7 @@ void glProgramUniform2uiv_enc(void *self , GLuint program, GLint location, GLsiz void glProgramUniform3uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value) { + AEMU_SCOPED_TRACE("glProgramUniform3uiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9929,6 +10236,7 @@ void glProgramUniform3uiv_enc(void *self , GLuint program, GLint location, GLsiz void glProgramUniform4uiv_enc(void *self , GLuint program, GLint location, GLsizei count, const GLuint* value) { + AEMU_SCOPED_TRACE("glProgramUniform4uiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9959,6 +10267,7 @@ void glProgramUniform4uiv_enc(void *self , GLuint program, GLint location, GLsiz void glProgramUniformMatrix2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniformMatrix2fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -9990,6 +10299,7 @@ void glProgramUniformMatrix2fv_enc(void *self , GLuint program, GLint location, void glProgramUniformMatrix3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniformMatrix3fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10021,6 +10331,7 @@ void glProgramUniformMatrix3fv_enc(void *self , GLuint program, GLint location, void glProgramUniformMatrix4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniformMatrix4fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10052,6 +10363,7 @@ void glProgramUniformMatrix4fv_enc(void *self , GLuint program, GLint location, void glProgramUniformMatrix2x3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniformMatrix2x3fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10083,6 +10395,7 @@ void glProgramUniformMatrix2x3fv_enc(void *self , GLuint program, GLint location void glProgramUniformMatrix3x2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniformMatrix3x2fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10114,6 +10427,7 @@ void glProgramUniformMatrix3x2fv_enc(void *self , GLuint program, GLint location void glProgramUniformMatrix2x4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniformMatrix2x4fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10145,6 +10459,7 @@ void glProgramUniformMatrix2x4fv_enc(void *self , GLuint program, GLint location void glProgramUniformMatrix4x2fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniformMatrix4x2fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10176,6 +10491,7 @@ void glProgramUniformMatrix4x2fv_enc(void *self , GLuint program, GLint location void glProgramUniformMatrix3x4fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniformMatrix3x4fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10207,6 +10523,7 @@ void glProgramUniformMatrix3x4fv_enc(void *self , GLuint program, GLint location void glProgramUniformMatrix4x3fv_enc(void *self , GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + AEMU_SCOPED_TRACE("glProgramUniformMatrix4x3fv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10238,6 +10555,7 @@ void glProgramUniformMatrix4x3fv_enc(void *self , GLuint program, GLint location void glGetProgramInterfaceiv_enc(void *self , GLuint program, GLenum programInterface, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetProgramInterfaceiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10279,6 +10597,7 @@ void glGetProgramInterfaceiv_enc(void *self , GLuint program, GLenum programInte void glGetProgramResourceiv_enc(void *self , GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei* length, GLint* params) { + AEMU_SCOPED_TRACE("glGetProgramResourceiv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10331,6 +10650,7 @@ void glGetProgramResourceiv_enc(void *self , GLuint program, GLenum programInter GLuint glGetProgramResourceIndex_enc(void *self , GLuint program, GLenum programInterface, const char* name) { + AEMU_SCOPED_TRACE("glGetProgramResourceIndex encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10375,6 +10695,7 @@ GLuint glGetProgramResourceIndex_enc(void *self , GLuint program, GLenum program GLint glGetProgramResourceLocation_enc(void *self , GLuint program, GLenum programInterface, const char* name) { + AEMU_SCOPED_TRACE("glGetProgramResourceLocation encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10419,6 +10740,7 @@ GLint glGetProgramResourceLocation_enc(void *self , GLuint program, GLenum progr void glGetProgramResourceName_enc(void *self , GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, char* name) { + AEMU_SCOPED_TRACE("glGetProgramResourceName encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10467,6 +10789,7 @@ void glGetProgramResourceName_enc(void *self , GLuint program, GLenum programInt void glBindImageTexture_enc(void *self , GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) { + AEMU_SCOPED_TRACE("glBindImageTexture encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10498,6 +10821,7 @@ void glBindImageTexture_enc(void *self , GLuint unit, GLuint texture, GLint leve void glDispatchCompute_enc(void *self , GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) { + AEMU_SCOPED_TRACE("glDispatchCompute encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10525,6 +10849,7 @@ void glDispatchCompute_enc(void *self , GLuint num_groups_x, GLuint num_groups_y void glDispatchComputeIndirect_enc(void *self , GLintptr indirect) { + AEMU_SCOPED_TRACE("glDispatchComputeIndirect encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10550,6 +10875,7 @@ void glDispatchComputeIndirect_enc(void *self , GLintptr indirect) void glBindVertexBuffer_enc(void *self , GLuint bindingindex, GLuint buffer, GLintptr offset, GLintptr stride) { + AEMU_SCOPED_TRACE("glBindVertexBuffer encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10578,6 +10904,7 @@ void glBindVertexBuffer_enc(void *self , GLuint bindingindex, GLuint buffer, GLi void glVertexAttribBinding_enc(void *self , GLuint attribindex, GLuint bindingindex) { + AEMU_SCOPED_TRACE("glVertexAttribBinding encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10604,6 +10931,7 @@ void glVertexAttribBinding_enc(void *self , GLuint attribindex, GLuint bindingin void glVertexAttribFormat_enc(void *self , GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) { + AEMU_SCOPED_TRACE("glVertexAttribFormat encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10633,6 +10961,7 @@ void glVertexAttribFormat_enc(void *self , GLuint attribindex, GLint size, GLenu void glVertexAttribIFormat_enc(void *self , GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { + AEMU_SCOPED_TRACE("glVertexAttribIFormat encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10661,6 +10990,7 @@ void glVertexAttribIFormat_enc(void *self , GLuint attribindex, GLint size, GLen void glVertexBindingDivisor_enc(void *self , GLuint bindingindex, GLuint divisor) { + AEMU_SCOPED_TRACE("glVertexBindingDivisor encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10687,6 +11017,7 @@ void glVertexBindingDivisor_enc(void *self , GLuint bindingindex, GLuint divisor void glDrawArraysIndirectDataAEMU_enc(void *self , GLenum mode, const void* indirect, GLuint datalen) { + AEMU_SCOPED_TRACE("glDrawArraysIndirectDataAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10716,6 +11047,7 @@ void glDrawArraysIndirectDataAEMU_enc(void *self , GLenum mode, const void* indi void glDrawArraysIndirectOffsetAEMU_enc(void *self , GLenum mode, GLuint offset) { + AEMU_SCOPED_TRACE("glDrawArraysIndirectOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10742,6 +11074,7 @@ void glDrawArraysIndirectOffsetAEMU_enc(void *self , GLenum mode, GLuint offset) void glDrawElementsIndirectDataAEMU_enc(void *self , GLenum mode, GLenum type, const void* indirect, GLuint datalen) { + AEMU_SCOPED_TRACE("glDrawElementsIndirectDataAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10772,6 +11105,7 @@ void glDrawElementsIndirectDataAEMU_enc(void *self , GLenum mode, GLenum type, c void glDrawElementsIndirectOffsetAEMU_enc(void *self , GLenum mode, GLenum type, GLuint offset) { + AEMU_SCOPED_TRACE("glDrawElementsIndirectOffsetAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10799,6 +11133,7 @@ void glDrawElementsIndirectOffsetAEMU_enc(void *self , GLenum mode, GLenum type, void glTexStorage2DMultisample_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) { + AEMU_SCOPED_TRACE("glTexStorage2DMultisample encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10829,6 +11164,7 @@ void glTexStorage2DMultisample_enc(void *self , GLenum target, GLsizei samples, void glSampleMaski_enc(void *self , GLuint maskNumber, GLbitfield mask) { + AEMU_SCOPED_TRACE("glSampleMaski encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10855,6 +11191,7 @@ void glSampleMaski_enc(void *self , GLuint maskNumber, GLbitfield mask) void glGetMultisamplefv_enc(void *self , GLenum pname, GLuint index, GLfloat* val) { + AEMU_SCOPED_TRACE("glGetMultisamplefv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10895,6 +11232,7 @@ void glGetMultisamplefv_enc(void *self , GLenum pname, GLuint index, GLfloat* va void glFramebufferParameteri_enc(void *self , GLenum target, GLenum pname, GLint param) { + AEMU_SCOPED_TRACE("glFramebufferParameteri encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10922,6 +11260,7 @@ void glFramebufferParameteri_enc(void *self , GLenum target, GLenum pname, GLint void glGetFramebufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetFramebufferParameteriv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -10962,6 +11301,7 @@ void glGetFramebufferParameteriv_enc(void *self , GLenum target, GLenum pname, G void glGetTexLevelParameterfv_enc(void *self , GLenum target, GLint level, GLenum pname, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetTexLevelParameterfv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11003,6 +11343,7 @@ void glGetTexLevelParameterfv_enc(void *self , GLenum target, GLint level, GLenu void glGetTexLevelParameteriv_enc(void *self , GLenum target, GLint level, GLenum pname, GLint* params) { + AEMU_SCOPED_TRACE("glGetTexLevelParameteriv encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11044,6 +11385,7 @@ void glGetTexLevelParameteriv_enc(void *self , GLenum target, GLint level, GLenu void glMapBufferRangeDMA_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr) { + AEMU_SCOPED_TRACE("glMapBufferRangeDMA encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11073,6 +11415,7 @@ void glMapBufferRangeDMA_enc(void *self , GLenum target, GLintptr offset, GLsize void glUnmapBufferDMA_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr, GLboolean* out_res) { + AEMU_SCOPED_TRACE("glUnmapBufferDMA encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11116,6 +11459,7 @@ void glUnmapBufferDMA_enc(void *self , GLenum target, GLintptr offset, GLsizeipt uint64_t glMapBufferRangeDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr) { + AEMU_SCOPED_TRACE("glMapBufferRangeDirect encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11160,6 +11504,7 @@ uint64_t glMapBufferRangeDirect_enc(void *self , GLenum target, GLintptr offset, void glUnmapBufferDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, uint64_t paddr, uint64_t guest_ptr, GLboolean* out_res) { + AEMU_SCOPED_TRACE("glUnmapBufferDirect encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11204,6 +11549,7 @@ void glUnmapBufferDirect_enc(void *self , GLenum target, GLintptr offset, GLsize void glFlushMappedBufferRangeDirect_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) { + AEMU_SCOPED_TRACE("glFlushMappedBufferRangeDirect encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11232,6 +11578,7 @@ void glFlushMappedBufferRangeDirect_enc(void *self , GLenum target, GLintptr off GLenum glGetGraphicsResetStatusEXT_enc(void *self ) { + AEMU_SCOPED_TRACE("glGetGraphicsResetStatusEXT encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11271,6 +11618,7 @@ GLenum glGetGraphicsResetStatusEXT_enc(void *self ) void glReadnPixelsEXT_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid* data) { + AEMU_SCOPED_TRACE("glReadnPixelsEXT encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11316,6 +11664,7 @@ void glReadnPixelsEXT_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei void glGetnUniformfvEXT_enc(void *self , GLuint program, GLint location, GLsizei bufSize, GLfloat* params) { + AEMU_SCOPED_TRACE("glGetnUniformfvEXT encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11357,6 +11706,7 @@ void glGetnUniformfvEXT_enc(void *self , GLuint program, GLint location, GLsizei void glGetnUniformivEXT_enc(void *self , GLuint program, GLint location, GLsizei bufSize, GLint* params) { + AEMU_SCOPED_TRACE("glGetnUniformivEXT encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11398,6 +11748,7 @@ void glGetnUniformivEXT_enc(void *self , GLuint program, GLint location, GLsizei void glDrawArraysNullAEMU_enc(void *self , GLenum mode, GLint first, GLsizei count) { + AEMU_SCOPED_TRACE("glDrawArraysNullAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11425,6 +11776,7 @@ void glDrawArraysNullAEMU_enc(void *self , GLenum mode, GLint first, GLsizei cou void glDrawElementsOffsetNullAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset) { + AEMU_SCOPED_TRACE("glDrawElementsOffsetNullAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11453,6 +11805,7 @@ void glDrawElementsOffsetNullAEMU_enc(void *self , GLenum mode, GLsizei count, G void glDrawElementsDataNullAEMU_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen) { + AEMU_SCOPED_TRACE("glDrawElementsDataNullAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11484,6 +11837,7 @@ void glDrawElementsDataNullAEMU_enc(void *self , GLenum mode, GLsizei count, GLe void glUnmapBufferAsyncAEMU_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer, GLboolean* out_res) { + AEMU_SCOPED_TRACE("glUnmapBufferAsyncAEMU encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -11528,6 +11882,7 @@ void glUnmapBufferAsyncAEMU_enc(void *self , GLenum target, GLintptr offset, GLs void glFlushMappedBufferRangeAEMU2_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer) { + AEMU_SCOPED_TRACE("glFlushMappedBufferRangeAEMU2 encode"); gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self; IOStream *stream = ctx->m_stream; diff --git a/system/OpenglSystemCommon/AddressSpaceStream.cpp b/system/OpenglSystemCommon/AddressSpaceStream.cpp index 4f26da97..ba9f2890 100644 --- a/system/OpenglSystemCommon/AddressSpaceStream.cpp +++ b/system/OpenglSystemCommon/AddressSpaceStream.cpp @@ -142,7 +142,7 @@ AddressSpaceStream* createAddressSpaceStream(size_t ignored_bufSize) { return res; } -#ifdef HOST_BUILD +#if defined(HOST_BUILD) || defined(__Fuchsia__) AddressSpaceStream* createVirtioGpuAddressSpaceStream(size_t ignored_bufSize) { // Ignore incoming ignored_bufSize (void)ignored_bufSize; @@ -259,7 +259,7 @@ AddressSpaceStream* createVirtioGpuAddressSpaceStream(size_t ignored_bufSize) { return res; } -#endif +#endif // HOST_BUILD || __Fuchsia__ AddressSpaceStream::AddressSpaceStream( diff --git a/system/OpenglSystemCommon/Android.mk b/system/OpenglSystemCommon/Android.mk index fa24719c..189e16b0 100644 --- a/system/OpenglSystemCommon/Android.mk +++ b/system/OpenglSystemCommon/Android.mk @@ -18,7 +18,7 @@ LOCAL_SRC_FILES := \ QemuPipeStream.cpp \ ProcessPipe.cpp \ -ifeq (true,$(BUILD_EMULATOR_VULKAN)) +ifeq (true,$(GFXSTREAM)) $(call emugl-import,libvulkan_enc) LOCAL_SRC_FILES += AddressSpaceStream.cpp @@ -34,7 +34,7 @@ LOCAL_SRC_FILES += \ else -ifeq (true,$(BUILD_EMULATOR_VULKAN)) +ifeq (true,$(GFXSTREAM)) LOCAL_HEADER_LIBRARIES += vulkan_headers diff --git a/system/OpenglSystemCommon/CMakeLists.txt b/system/OpenglSystemCommon/CMakeLists.txt index ff4947aa..0149f8b7 100644 --- a/system/OpenglSystemCommon/CMakeLists.txt +++ b/system/OpenglSystemCommon/CMakeLists.txt @@ -1,10 +1,10 @@ # This is an autogenerated file! Do not edit! # instead run make from .../device/generic/goldfish-opengl # which will re-generate this file. -android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/Android.mk" "1a769e79e22604f569e4345e4f432bb4bd41ca810d479b69887007b5d9bec528") +android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/Android.mk" "014a10fd6e8b1977ab8f66a6e7211136ea921d3c1692653988c894c7e87fee7a") set(OpenglSystemCommon_src FormatConversions.cpp HostConnection.cpp QemuPipeStream.cpp ProcessPipe.cpp AddressSpaceStream.cpp ThreadInfo_host.cpp) android_add_library(TARGET OpenglSystemCommon SHARED LICENSE Apache-2.0 SRC FormatConversions.cpp HostConnection.cpp QemuPipeStream.cpp ProcessPipe.cpp AddressSpaceStream.cpp ThreadInfo_host.cpp) -target_include_directories(OpenglSystemCommon PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) -target_compile_definitions(OpenglSystemCommon PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGOLDFISH_VULKAN") +target_include_directories(OpenglSystemCommon PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) +target_compile_definitions(OpenglSystemCommon PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM") target_compile_options(OpenglSystemCommon PRIVATE "-fvisibility=default" "-Wno-unused-parameter" "-Wno-unused-variable") -target_link_libraries(OpenglSystemCommon PRIVATE android-emu-shared vulkan_enc gui androidemu cutils utils log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file +target_link_libraries(OpenglSystemCommon PRIVATE android-emu-shared vulkan_enc gui log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host cutils utils androidemu PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file diff --git a/system/OpenglSystemCommon/EmulatorFeatureInfo.h b/system/OpenglSystemCommon/EmulatorFeatureInfo.h index d0ae8530..304ab363 100644 --- a/system/OpenglSystemCommon/EmulatorFeatureInfo.h +++ b/system/OpenglSystemCommon/EmulatorFeatureInfo.h @@ -114,6 +114,9 @@ static const char kVulkanShaderFloat16Int8[] = "ANDROID_EMU_vulkan_shader_float1 // Vulkan async queue submit static const char kVulkanAsyncQueueSubmit[] = "ANDROID_EMU_vulkan_async_queue_submit"; +// A flag to _not_ ignore host opengl errors (now host opengl errors are ignored by default) +static const char kGLESUseHostError[] = "ANDROID_EMU_gles_use_host_error"; + // Struct describing available emulator features struct EmulatorFeatureInfo { diff --git a/system/OpenglSystemCommon/FormatConversions.cpp b/system/OpenglSystemCommon/FormatConversions.cpp index cc976ed0..aae6bb98 100644 --- a/system/OpenglSystemCommon/FormatConversions.cpp +++ b/system/OpenglSystemCommon/FormatConversions.cpp @@ -35,11 +35,14 @@ static int get_rgb_offset(int row, int width, int rgbStride) { return row * width * rgbStride; } +#define OMX_COLOR_FormatYUV420Planar 0x13 + bool gralloc_is_yuv_format(const int format) { switch (format) { case HAL_PIXEL_FORMAT_YV12: case HAL_PIXEL_FORMAT_YCbCr_420_888: case HAL_PIXEL_FORMAT_YCrCb_420_SP: + case OMX_COLOR_FormatYUV420Planar: return true; default: diff --git a/system/OpenglSystemCommon/HostConnection.cpp b/system/OpenglSystemCommon/HostConnection.cpp index c371742e..7d309fbd 100644 --- a/system/OpenglSystemCommon/HostConnection.cpp +++ b/system/OpenglSystemCommon/HostConnection.cpp @@ -42,13 +42,14 @@ public: #include "GL2Encoder.h" #endif -#ifdef GOLDFISH_VULKAN +#ifdef GFXSTREAM #include "VkEncoder.h" #include "AddressSpaceStream.h" #else namespace goldfish_vk { struct VkEncoder { VkEncoder(IOStream*) { } + void decRef() { } int placeholder; }; } // namespace goldfish_vk @@ -346,6 +347,7 @@ public: { return ::processPipeInit(connType, rcEnc); } + }; static GoldfishGralloc m_goldfishGralloc; @@ -355,7 +357,7 @@ HostConnection::HostConnection() : m_checksumHelper(), m_glExtensions(), m_grallocOnly(true), - m_noHostError(false), + m_noHostError(true), m_rendernodeFd(-1), m_rendernodeFdOwned(false) { } @@ -373,6 +375,14 @@ HostConnection::~HostConnection() if (m_rendernodeFdOwned) { close(m_rendernodeFd); } + + if (m_vkEnc) { + m_vkEnc->decRef(); + } + + if (m_stream) { + m_stream->decRef(); + } } // static @@ -384,21 +394,20 @@ std::unique_ptr<HostConnection> HostConnection::connect() { auto con = std::unique_ptr<HostConnection>(new HostConnection); switch (connType) { case HOST_CONNECTION_ADDRESS_SPACE: { - auto stream = std::unique_ptr<AddressSpaceStream>( - createAddressSpaceStream(STREAM_BUFFER_SIZE)); + auto stream = createAddressSpaceStream(STREAM_BUFFER_SIZE); if (!stream) { ALOGE("Failed to create AddressSpaceStream for host connection!!!\n"); return nullptr; } con->m_connectionType = HOST_CONNECTION_ADDRESS_SPACE; con->m_grallocType = GRALLOC_TYPE_RANCHU; - con->m_stream = std::move(stream); + con->m_stream = stream; con->m_grallocHelper = &m_goldfishGralloc; con->m_processPipe = &m_goldfishProcessPipe; break; } case HOST_CONNECTION_QEMU_PIPE: { - auto stream = std::make_unique<QemuPipeStream>(STREAM_BUFFER_SIZE); + auto stream = new QemuPipeStream(STREAM_BUFFER_SIZE); if (!stream) { ALOGE("Failed to create QemuPipeStream for host connection!!!\n"); return nullptr; @@ -409,7 +418,7 @@ std::unique_ptr<HostConnection> HostConnection::connect() { } con->m_connectionType = HOST_CONNECTION_QEMU_PIPE; con->m_grallocType = GRALLOC_TYPE_RANCHU; - con->m_stream = std::move(stream); + con->m_stream = stream; con->m_grallocHelper = &m_goldfishGralloc; con->m_processPipe = &m_goldfishProcessPipe; break; @@ -420,7 +429,7 @@ std::unique_ptr<HostConnection> HostConnection::connect() { return nullptr; break; #else - auto stream = std::make_unique<TcpStream>(STREAM_BUFFER_SIZE); + auto stream = new TcpStream(STREAM_BUFFER_SIZE); if (!stream) { ALOGE("Failed to create TcpStream for host connection!!!\n"); return nullptr; @@ -432,7 +441,7 @@ std::unique_ptr<HostConnection> HostConnection::connect() { } con->m_connectionType = HOST_CONNECTION_TCP; con->m_grallocType = GRALLOC_TYPE_RANCHU; - con->m_stream = std::move(stream); + con->m_stream = stream; con->m_grallocHelper = &m_goldfishGralloc; con->m_processPipe = &m_goldfishProcessPipe; break; @@ -440,7 +449,7 @@ std::unique_ptr<HostConnection> HostConnection::connect() { } #ifdef VIRTIO_GPU case HOST_CONNECTION_VIRTIO_GPU: { - auto stream = std::make_unique<VirtioGpuStream>(STREAM_BUFFER_SIZE); + auto stream = new VirtioGpuStream(STREAM_BUFFER_SIZE); if (!stream) { ALOGE("Failed to create VirtioGpu for host connection!!!\n"); return nullptr; @@ -453,7 +462,7 @@ std::unique_ptr<HostConnection> HostConnection::connect() { con->m_grallocType = GRALLOC_TYPE_MINIGBM; auto rendernodeFd = stream->getRendernodeFd(); con->m_processPipe = stream->getProcessPipe(); - con->m_stream = std::move(stream); + con->m_stream = stream; con->m_rendernodeFdOwned = false; con->m_rendernodeFdOwned = rendernodeFd; MinigbmGralloc* m = new MinigbmGralloc; @@ -462,8 +471,7 @@ std::unique_ptr<HostConnection> HostConnection::connect() { break; } case HOST_CONNECTION_VIRTIO_GPU_PIPE: { - auto stream = - std::make_unique<VirtioGpuPipeStream>(STREAM_BUFFER_SIZE); + auto stream = new VirtioGpuPipeStream(STREAM_BUFFER_SIZE); if (!stream) { ALOGE("Failed to create VirtioGpu for host connection!!!\n"); return nullptr; @@ -476,7 +484,7 @@ std::unique_ptr<HostConnection> HostConnection::connect() { con->m_grallocType = getGrallocTypeFromProperty(); con->m_rendernodeFdOwned = false; auto rendernodeFd = stream->getRendernodeFd(); - con->m_stream = std::move(stream); + con->m_stream = stream; con->m_rendernodeFd = rendernodeFd; switch (con->m_grallocType) { case GRALLOC_TYPE_RANCHU: @@ -495,10 +503,9 @@ std::unique_ptr<HostConnection> HostConnection::connect() { con->m_processPipe = &m_goldfishProcessPipe; break; } -#ifndef HOST_BUILD +#if !defined(HOST_BUILD) && !defined(__Fuchsia__) case HOST_CONNECTION_VIRTIO_GPU_ADDRESS_SPACE: { - auto stream = std::unique_ptr<AddressSpaceStream>( - createVirtioGpuAddressSpaceStream(STREAM_BUFFER_SIZE)); + auto stream = createVirtioGpuAddressSpaceStream(STREAM_BUFFER_SIZE); if (!stream) { ALOGE("Failed to create virtgpu AddressSpaceStream for host connection!!!\n"); return nullptr; @@ -507,7 +514,7 @@ std::unique_ptr<HostConnection> HostConnection::connect() { con->m_grallocType = getGrallocTypeFromProperty(); con->m_rendernodeFdOwned = false; auto rendernodeFd = stream->getRendernodeFd(); - con->m_stream = std::move(stream); + con->m_stream = stream; con->m_rendernodeFd = rendernodeFd; switch (con->m_grallocType) { case GRALLOC_TYPE_RANCHU: @@ -526,7 +533,7 @@ std::unique_ptr<HostConnection> HostConnection::connect() { con->m_processPipe = &m_goldfishProcessPipe; break; } -#endif // !HOST_BUILD +#endif // !HOST_BUILD && !__Fuchsia__ #else default: break; @@ -581,7 +588,7 @@ std::unique_ptr<HostConnection> HostConnection::createUnique() { GLEncoder *HostConnection::glEncoder() { if (!m_glEnc) { - m_glEnc = std::make_unique<GLEncoder>(m_stream.get(), checksumHelper()); + m_glEnc = std::make_unique<GLEncoder>(m_stream, checksumHelper()); DBG("HostConnection::glEncoder new encoder %p, tid %d", m_glEnc, getCurrentThreadId()); m_glEnc->setContextAccessor(s_getGLContext); @@ -593,7 +600,7 @@ GL2Encoder *HostConnection::gl2Encoder() { if (!m_gl2Enc) { m_gl2Enc = - std::make_unique<GL2Encoder>(m_stream.get(), checksumHelper()); + std::make_unique<GL2Encoder>(m_stream, checksumHelper()); DBG("HostConnection::gl2Encoder new encoder %p, tid %d", m_gl2Enc, getCurrentThreadId()); m_gl2Enc->setContextAccessor(s_getGL2Context); @@ -608,15 +615,15 @@ GL2Encoder *HostConnection::gl2Encoder() VkEncoder *HostConnection::vkEncoder() { if (!m_vkEnc) { - m_vkEnc = std::make_unique<VkEncoder>(m_stream.get()); + m_vkEnc = new VkEncoder(m_stream); } - return m_vkEnc.get(); + return m_vkEnc; } ExtendedRCEncoderContext *HostConnection::rcEncoder() { if (!m_rcEnc) { - m_rcEnc = std::make_unique<ExtendedRCEncoderContext>(m_stream.get(), + m_rcEnc = std::make_unique<ExtendedRCEncoderContext>(m_stream, checksumHelper()); ExtendedRCEncoderContext* rcEnc = m_rcEnc.get(); @@ -800,8 +807,8 @@ void HostConnection::queryAndSetGLESMaxVersion(ExtendedRCEncoderContext* rcEnc) void HostConnection::queryAndSetNoErrorState(ExtendedRCEncoderContext* rcEnc) { std::string glExtensions = queryGLExtensions(rcEnc); - if (glExtensions.find(kGLESNoHostError) != std::string::npos) { - m_noHostError = true; + if (glExtensions.find(kGLESUseHostError) != std::string::npos) { + m_noHostError = false; } } diff --git a/system/OpenglSystemCommon/HostConnection.h b/system/OpenglSystemCommon/HostConnection.h index 69d8a16b..32a1521f 100644 --- a/system/OpenglSystemCommon/HostConnection.h +++ b/system/OpenglSystemCommon/HostConnection.h @@ -24,7 +24,7 @@ #include <cutils/native_handle.h> -#ifdef GOLDFISH_VULKAN +#ifdef GFXSTREAM #include <mutex> #else #include <utils/threads.h> @@ -222,10 +222,14 @@ private: HostConnectionType m_connectionType; GrallocType m_grallocType; - std::unique_ptr<IOStream> m_stream; + // intrusively refcounted + IOStream* m_stream = nullptr; + std::unique_ptr<GLEncoder> m_glEnc; std::unique_ptr<GL2Encoder> m_gl2Enc; - std::unique_ptr<goldfish_vk::VkEncoder> m_vkEnc; + + // intrusively refcounted + goldfish_vk::VkEncoder* m_vkEnc = nullptr; std::unique_ptr<ExtendedRCEncoderContext> m_rcEnc; ChecksumCalculator m_checksumHelper; @@ -234,7 +238,7 @@ private: std::string m_glExtensions; bool m_grallocOnly; bool m_noHostError; -#ifdef GOLDFISH_VULKAN +#ifdef GFXSTREAM mutable std::mutex m_lock; #else mutable android::Mutex m_lock; diff --git a/system/OpenglSystemCommon/ProcessPipe.cpp b/system/OpenglSystemCommon/ProcessPipe.cpp index 0d747890..c79bf172 100644 --- a/system/OpenglSystemCommon/ProcessPipe.cpp +++ b/system/OpenglSystemCommon/ProcessPipe.cpp @@ -28,11 +28,14 @@ #include <errno.h> #ifdef __Fuchsia__ -#include <fuchsia/hardware/goldfish/cpp/fidl.h> +#include <fuchsia/hardware/goldfish/llcpp/fidl.h> #include <lib/zx/vmo.h> #include "services/service_connector.h" +#define GET_STATUS_SAFE(result, member) \ + ((result).ok() ? ((result).Unwrap()->member) : ZX_OK) + static QEMU_PIPE_HANDLE sProcDevice = 0; #else // __Fuchsia__ @@ -64,18 +67,29 @@ static void processPipeInitOnce() { return; } - fuchsia::hardware::goldfish::PipeDeviceSyncPtr device; - device.Bind(std::move(channel)); + llcpp::fuchsia::hardware::goldfish::PipeDevice::SyncClient device( + std::move(channel)); - fuchsia::hardware::goldfish::PipeSyncPtr pipe; - device->OpenPipe(pipe.NewRequest()); + zx::channel pipe_server, pipe_client; + zx_status_t status = zx::channel::create(0, &pipe_server, &pipe_client); + if (status != ZX_OK) { + ALOGE("%s: zx_channel_create failed: %d", __FUNCTION__, status); + return; + } + + llcpp::fuchsia::hardware::goldfish::Pipe::SyncClient pipe( + std::move(pipe_client)); + device.OpenPipe(std::move(pipe_server)); - zx_status_t status, status2 = ZX_OK; zx::vmo vmo; - status = pipe->GetBuffer(&status2, &vmo); - if (status != ZX_OK || status2 != ZX_OK) { - ALOGE("%s: failed to get buffer: %d:%d", __FUNCTION__, status, status2); - return; + { + auto result = pipe.GetBuffer(); + if (!result.ok() || result.Unwrap()->res != ZX_OK) { + ALOGE("%s: failed to get buffer: %d:%d", __FUNCTION__, + result.status(), GET_STATUS_SAFE(result, res)); + return; + } + vmo = std::move(result.Unwrap()->vmo); } size_t len = strlen("pipe:GLProcessPipe"); @@ -84,12 +98,14 @@ static void processPipeInitOnce() { ALOGE("%s: failed write pipe name", __FUNCTION__); return; } - uint64_t actual; - status = pipe->Write(len + 1, 0, &status2, &actual); - if (status != ZX_OK || status2 != ZX_OK) { - ALOGD("%s: connecting to pipe service failed: %d:%d", __FUNCTION__, - status, status2); - return; + + { + auto result = pipe.Write(len + 1, 0); + if (!result.ok() || result.Unwrap()->res != ZX_OK) { + ALOGD("%s: connecting to pipe service failed: %d:%d", __FUNCTION__, + result.status(), GET_STATUS_SAFE(result, res)); + return; + } } // Send a confirmation int to the host and get per-process unique ID back @@ -99,19 +115,23 @@ static void processPipeInitOnce() { ALOGE("%s: failed write confirm int", __FUNCTION__); return; } - status = pipe->DoCall(sizeof(confirmInt), 0, sizeof(sProcUID), 0, &status2, &actual); - if (status != ZX_OK || status2 != ZX_OK) { - ALOGD("%s: failed to get per-process ID: %d:%d", __FUNCTION__, - status, status2); - return; + + { + auto result = pipe.DoCall(sizeof(confirmInt), 0, sizeof(sProcUID), 0); + if (!result.ok() || result.Unwrap()->res != ZX_OK) { + ALOGD("%s: failed to get per-process ID: %d:%d", __FUNCTION__, + result.status(), GET_STATUS_SAFE(result, res)); + return; + } } + status = vmo.read(&sProcUID, 0, sizeof(sProcUID)); if (status != ZX_OK) { ALOGE("%s: failed read per-process ID: %d", __FUNCTION__, status); return; } - sProcDevice = device.Unbind().TakeChannel().release(); - sProcPipe = pipe.Unbind().TakeChannel().release(); + sProcDevice = device.mutable_channel()->release(); + sProcPipe = pipe.mutable_channel()->release(); } #else // __Fuchsia__ @@ -155,7 +175,7 @@ static void sQemuPipeInit() { } static void processPipeInitOnce() { -#if defined(HOST_BUILD) || !defined(GOLDFISH_VULKAN) +#if defined(HOST_BUILD) || !defined(GFXSTREAM) sQemuPipeInit(); #else // HOST_BUILD switch (sConnType) { diff --git a/system/OpenglSystemCommon/QemuPipeStream.h b/system/OpenglSystemCommon/QemuPipeStream.h index 4e779eb8..312eaf95 100644 --- a/system/OpenglSystemCommon/QemuPipeStream.h +++ b/system/OpenglSystemCommon/QemuPipeStream.h @@ -21,12 +21,13 @@ * <hardware/qemu_pipe.h> for more details. */ #include <stdlib.h> +#include <memory> #include "IOStream.h" #include <qemu_pipe_bp.h> #ifdef __Fuchsia__ -#include <fuchsia/hardware/goldfish/cpp/fidl.h> +#include <fuchsia/hardware/goldfish/llcpp/fidl.h> #include <lib/zx/event.h> #include <lib/zx/vmo.h> #endif @@ -58,8 +59,10 @@ private: size_t m_read; size_t m_readLeft; #ifdef __Fuchsia__ - fuchsia::hardware::goldfish::PipeDeviceSyncPtr m_device; - fuchsia::hardware::goldfish::PipeSyncPtr m_pipe; + std::unique_ptr<llcpp::fuchsia::hardware::goldfish::PipeDevice::SyncClient> + m_device; + std::unique_ptr<llcpp::fuchsia::hardware::goldfish::Pipe::SyncClient> + m_pipe; zx::event m_event; zx::vmo m_vmo; #endif diff --git a/system/OpenglSystemCommon/QemuPipeStreamFuchsia.cpp b/system/OpenglSystemCommon/QemuPipeStreamFuchsia.cpp index 5472f308..6a236f1e 100644 --- a/system/OpenglSystemCommon/QemuPipeStreamFuchsia.cpp +++ b/system/OpenglSystemCommon/QemuPipeStreamFuchsia.cpp @@ -28,6 +28,9 @@ #include "services/service_connector.h" +#define GET_STATUS_SAFE(result, member) \ + ((result).ok() ? ((result).Unwrap()->member) : ZX_OK) + constexpr size_t kReadSize = 512 * 1024; constexpr size_t kWriteOffset = kReadSize; @@ -53,7 +56,7 @@ QemuPipeStream::QemuPipeStream(QEMU_PIPE_HANDLE sock, size_t bufSize) : QemuPipeStream::~QemuPipeStream() { - if (m_device.is_bound()) { + if (m_device) { flush(); } if (m_buf) { @@ -76,11 +79,23 @@ int QemuPipeStream::connect(void) return -1; } - m_device.Bind(std::move(channel)); - m_device->OpenPipe(m_pipe.NewRequest()); + m_device = std::make_unique< + llcpp::fuchsia::hardware::goldfish::PipeDevice::SyncClient>( + std::move(channel)); + + zx::channel pipe_client, pipe_server; + zx_status_t status = zx::channel::create(0, &pipe_server, &pipe_client); + if (status != ZX_OK) { + ALOGE("zx::channel::create failed: %d", status); + return ZX_HANDLE_INVALID; + } + m_device->OpenPipe(std::move(pipe_server)); + m_pipe = + std::make_unique<llcpp::fuchsia::hardware::goldfish::Pipe::SyncClient>( + std::move(pipe_client)); zx::event event; - zx_status_t status = zx::event::create(0, &event); + status = zx::event::create(0, &event); if (status != ZX_OK) { ALOGE("%s: failed to create event: %d", __FUNCTION__, status); return -1; @@ -92,10 +107,13 @@ int QemuPipeStream::connect(void) return -1; } - status = m_pipe->SetEvent(std::move(event_copy)); - if (status != ZX_OK) { - ALOGE("%s: failed to set event: %d:%d", __FUNCTION__, status); - return -1; + { + auto result = m_pipe->SetEvent(std::move(event_copy)); + if (!result.ok()) { + ALOGE("%s: failed to set event: %d:%d", __FUNCTION__, + result.status()); + return -1; + } } if (!allocBuffer(m_bufsize)) { @@ -110,13 +128,13 @@ int QemuPipeStream::connect(void) return -1; } - uint64_t actual; - zx_status_t status2 = ZX_OK; - status = m_pipe->Write(len + 1, 0, &status2, &actual); - if (status != ZX_OK || status2 != ZX_OK) { - ALOGD("%s: connecting to pipe service failed: %d:%d", __FUNCTION__, - status, status2); - return -1; + { + auto result = m_pipe->Write(len + 1, 0); + if (!result.ok() || result.Unwrap()->res != ZX_OK) { + ALOGD("%s: connecting to pipe service failed: %d:%d", __FUNCTION__, + result.status(), GET_STATUS_SAFE(result, res)); + return -1; + } } m_event = std::move(event); @@ -145,26 +163,32 @@ void *QemuPipeStream::allocBuffer(size_t minSize) size_t allocSize = m_bufsize < minSize ? minSize : m_bufsize; - zx_status_t status2 = ZX_OK; - status = m_pipe->SetBufferSize(allocSize, &status2); - if (status != ZX_OK || status2 != ZX_OK) { - ALOGE("%s: failed to get buffer: %d:%d", __FUNCTION__, status, status2); - return nullptr; + { + auto result = m_pipe->SetBufferSize(allocSize); + if (!result.ok() || result.Unwrap()->res != ZX_OK) { + ALOGE("%s: failed to get buffer: %d:%d", __FUNCTION__, + result.status(), GET_STATUS_SAFE(result, res)); + return nullptr; + } } zx::vmo vmo; - status = m_pipe->GetBuffer(&status2, &vmo); - if (status != ZX_OK || status2 != ZX_OK) { - ALOGE("%s: failed to get buffer: %d:%d", __FUNCTION__, status, status2); - return nullptr; + { + auto result = m_pipe->GetBuffer(); + if (!result.ok() || result.Unwrap()->res != ZX_OK) { + ALOGE("%s: failed to get buffer: %d:%d", __FUNCTION__, + result.status(), GET_STATUS_SAFE(result, res)); + return nullptr; + } + vmo = std::move(result.Unwrap()->vmo); } zx_vaddr_t mapped_addr; - status = zx_vmar_map(zx_vmar_root_self(), - ZX_VM_PERM_READ | ZX_VM_PERM_WRITE, - 0, vmo.get(), 0, allocSize, &mapped_addr); + status = + zx_vmar_map(zx_vmar_root_self(), ZX_VM_PERM_READ | ZX_VM_PERM_WRITE, 0, + vmo.get(), 0, allocSize, &mapped_addr); if (status != ZX_OK) { - ALOGE("%s: failed to map buffer: %d:%d", __FUNCTION__, status); + ALOGE("%s: failed to map buffer: %d", __FUNCTION__, status); return nullptr; } @@ -178,11 +202,10 @@ int QemuPipeStream::commitBuffer(size_t size) { if (size == 0) return 0; - uint64_t actual = 0; - zx_status_t status2 = ZX_OK; - zx_status_t status = m_pipe->DoCall(size, kWriteOffset, 0, 0, &status2, &actual); - if (status != ZX_OK || status2 != ZX_OK) { - ALOGD("%s: Pipe call failed: %d:%d", __FUNCTION__, status, status2); + auto result = m_pipe->DoCall(size, kWriteOffset, 0, 0); + if (!result.ok() || result.Unwrap()->res != ZX_OK) { + ALOGD("%s: Pipe call failed: %d:%d", __FUNCTION__, result.status(), + GET_STATUS_SAFE(result, res)); return -1; } @@ -207,7 +230,8 @@ const unsigned char *QemuPipeStream::readFully(void *buf, size_t len) const unsigned char *QemuPipeStream::commitBufferAndReadFully(size_t size, void *buf, size_t len) { - if (!m_device.is_bound()) return nullptr; + if (!m_device) + return nullptr; if (!buf) { if (len > 0) { @@ -236,17 +260,16 @@ const unsigned char *QemuPipeStream::commitBufferAndReadFully(size_t size, void // Read up to kReadSize bytes if all buffered read has been consumed. size_t maxRead = (m_readLeft || !remaining) ? 0 : kReadSize; - uint64_t actual = 0; - zx_status_t status2 = ZX_OK; - zx_status_t status = m_pipe->DoCall(size, kWriteOffset, maxRead, 0, &status2, &actual); - if (status != ZX_OK) { - ALOGD("%s: Pipe call failed: %d", __FUNCTION__, status); + + auto result = m_pipe->DoCall(size, kWriteOffset, maxRead, 0); + if (!result.ok()) { + ALOGD("%s: Pipe call failed: %d", __FUNCTION__, result.status()); return nullptr; } // Updated buffered read size. - if (actual) { - m_read = m_readLeft = actual; + if (result.Unwrap()->actual) { + m_read = m_readLeft = result.Unwrap()->actual; } // Consume buffered read and read more if neccessary. @@ -261,31 +284,33 @@ const unsigned char *QemuPipeStream::commitBufferAndReadFully(size_t size, void continue; } - status2 = ZX_OK; - actual = 0; - status = m_pipe->Read(kReadSize, 0, &status2, &actual); - if (status != ZX_OK) { - ALOGD("%s: Failed reading from pipe: %d", __FUNCTION__, status); + auto result = m_pipe->Read(kReadSize, 0); + if (!result.ok()) { + ALOGD("%s: Failed reading from pipe: %d:%d", __FUNCTION__, + result.status()); return nullptr; } - if (actual) { - m_read = m_readLeft = actual; + + if (result.Unwrap()->actual) { + m_read = m_readLeft = result.Unwrap()->actual; continue; } - if (status2 != ZX_ERR_SHOULD_WAIT) { - ALOGD("%s: Error reading from pipe: %d", __FUNCTION__, status2); + if (result.Unwrap()->res != ZX_ERR_SHOULD_WAIT) { + ALOGD("%s: Error reading from pipe: %d", __FUNCTION__, + result.Unwrap()->res); return nullptr; } + zx_signals_t observed = ZX_SIGNAL_NONE; - status = m_event.wait_one( - fuchsia::hardware::goldfish::SIGNAL_READABLE | - fuchsia::hardware::goldfish::SIGNAL_HANGUP, + zx_status_t status = m_event.wait_one( + llcpp::fuchsia::hardware::goldfish::SIGNAL_READABLE | + llcpp::fuchsia::hardware::goldfish::SIGNAL_HANGUP, zx::time::infinite(), &observed); if (status != ZX_OK) { ALOGD("%s: wait_one failed: %d", __FUNCTION__, status); return nullptr; } - if (observed & fuchsia::hardware::goldfish::SIGNAL_HANGUP) { + if (observed & llcpp::fuchsia::hardware::goldfish::SIGNAL_HANGUP) { ALOGD("%s: Remote end hungup", __FUNCTION__); return nullptr; } diff --git a/system/OpenglSystemCommon/ThreadInfo.cpp b/system/OpenglSystemCommon/ThreadInfo.cpp index 99b0b9b5..70837b20 100644 --- a/system/OpenglSystemCommon/ThreadInfo.cpp +++ b/system/OpenglSystemCommon/ThreadInfo.cpp @@ -13,9 +13,33 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + #include "ThreadInfo.h" #include "cutils/threads.h" +#ifdef GFXSTREAM + +thread_local EGLThreadInfo sEglThreadInfoThreadLocal; + +EGLThreadInfo *goldfish_get_egl_tls() +{ + return &sEglThreadInfoThreadLocal; +} + +EGLThreadInfo* getEGLThreadInfo() { + return goldfish_get_egl_tls(); +} + +int32_t getCurrentThreadId() { + return (int32_t)gettid(); +} + +void setTlsDestructor(tlsDtorCallback func) { + getEGLThreadInfo()->dtor = func; +} + +#else // GFXSTREAM + #ifdef __BIONIC__ #include <bionic/tls.h> #endif @@ -58,14 +82,14 @@ void setTlsDestructor(tlsDtorCallback func) { EGLThreadInfo *goldfish_get_egl_tls() { - EGLThreadInfo* ti = (EGLThreadInfo*)thread_store_get(&s_tls); + EGLThreadInfo* ti = (EGLThreadInfo*)thread_store_get(&s_tls); - if (ti) return ti; + if (ti) return ti; - ti = new EGLThreadInfo(); - thread_store_set(&s_tls, ti, tlsDestruct); + ti = new EGLThreadInfo(); + thread_store_set(&s_tls, ti, tlsDestruct); - return ti; + return ti; } EGLThreadInfo* getEGLThreadInfo() { @@ -85,3 +109,5 @@ EGLThreadInfo* getEGLThreadInfo() { int32_t getCurrentThreadId() { return (int32_t)gettid(); } + +#endif // !GFXSTREAM diff --git a/system/OpenglSystemCommon/ThreadInfo.h b/system/OpenglSystemCommon/ThreadInfo.h index fa6b44bc..7f492738 100644 --- a/system/OpenglSystemCommon/ThreadInfo.h +++ b/system/OpenglSystemCommon/ThreadInfo.h @@ -22,16 +22,19 @@ struct EGLContext_t; +typedef bool (*tlsDtorCallback)(void*); + struct EGLThreadInfo { - EGLThreadInfo() : currentContext(NULL), eglError(EGL_SUCCESS) {} + EGLThreadInfo() : currentContext(NULL), eglError(EGL_SUCCESS), dtor(0) {} + ~EGLThreadInfo() { if (dtor) dtor(this); } EGLContext_t *currentContext; std::unique_ptr<HostConnection> hostConn; int eglError; + tlsDtorCallback dtor; }; -typedef bool (*tlsDtorCallback)(void*); void setTlsDestructor(tlsDtorCallback); extern "C" __attribute__((visibility("default"))) EGLThreadInfo *goldfish_get_egl_tls(); diff --git a/system/OpenglSystemCommon/VirtioGpuPipeStream.cpp b/system/OpenglSystemCommon/VirtioGpuPipeStream.cpp index 238d5559..6143bd53 100644 --- a/system/OpenglSystemCommon/VirtioGpuPipeStream.cpp +++ b/system/OpenglSystemCommon/VirtioGpuPipeStream.cpp @@ -120,9 +120,9 @@ int VirtioGpuPipeStream::connect(const char* serviceName) } if (!m_virtio_mapped) { - drm_virtgpu_map map = { - .handle = m_virtio_bo, - }; + drm_virtgpu_map map; + memset(&map, 0, sizeof(map)); + map.handle = m_virtio_bo; int ret = drmIoctl(m_fd, DRM_IOCTL_VIRTGPU_MAP, &map); if (ret) { diff --git a/system/OpenglSystemCommon/VirtioGpuStream.cpp b/system/OpenglSystemCommon/VirtioGpuStream.cpp index 1b49244c..bbf9dd23 100644 --- a/system/OpenglSystemCommon/VirtioGpuStream.cpp +++ b/system/OpenglSystemCommon/VirtioGpuStream.cpp @@ -149,9 +149,10 @@ int VirtioGpuStream::connect() } if (!m_cmdResp) { - drm_virtgpu_map map = { - .handle = m_cmdResp_bo, - }; + drm_virtgpu_map map; + memset(&map, 0, sizeof(map)); + map.handle = m_cmdResp_bo; + int ret = drmIoctl(m_fd, DRM_IOCTL_VIRTGPU_MAP, &map); if (ret) { ERR("%s: failed with %d mapping command response buffer (%s)", diff --git a/system/OpenglSystemCommon/address_space_graphics_types.h b/system/OpenglSystemCommon/address_space_graphics_types.h index 5f0e9b67..753644bf 100644 --- a/system/OpenglSystemCommon/address_space_graphics_types.h +++ b/system/OpenglSystemCommon/address_space_graphics_types.h @@ -124,7 +124,7 @@ struct asg_context { // ptrs into RingStorage // Helper function that will be common between guest and host: // Given ring storage and a write buffer, returns asg_context that // is the correct view into it. -static struct asg_context asg_context_create( +static inline struct asg_context asg_context_create( char* ring_storage, char* buffer, uint32_t buffer_size) { diff --git a/system/codecs/omx/common/Android.mk b/system/codecs/omx/common/Android.mk index 4daf0b73..1ebdff93 100644 --- a/system/codecs/omx/common/Android.mk +++ b/system/codecs/omx/common/Android.mk @@ -34,7 +34,7 @@ $(call emugl-import,libGoldfishAddressSpace$(GOLDFISH_OPENGL_LIB_SUFFIX)) else $(call emugl-export,STATIC_LIBRARIES,libGoldfishAddressSpace) -ifeq (true,$(BUILD_EMULATOR_VULKAN)) +ifeq (true,$(GFXSTREAM)) LOCAL_CFLAGS += -DVIRTIO_GPU LOCAL_C_INCLUDES += external/libdrm external/minigbm/cros_gralloc diff --git a/system/egl/Android.mk b/system/egl/Android.mk index a5e1c1fd..f312efba 100644 --- a/system/egl/Android.mk +++ b/system/egl/Android.mk @@ -23,11 +23,11 @@ LOCAL_SRC_FILES := \ ifneq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST)) LOCAL_SHARED_LIBRARIES += libdl -ifeq (true,$(BUILD_EMULATOR_VULKAN)) +ifeq (true,$(GFXSTREAM)) LOCAL_CFLAGS += -DVIRTIO_GPU LOCAL_C_INCLUDES += external/libdrm LOCAL_SHARED_LIBRARIES += libdrm -endif # BUILD_EMULATOR_VULKAN +endif # GFXSTREAM endif # GOLDFISH_OPENGL_BUILD_FOR_HOST ifneq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST)) diff --git a/system/egl/CMakeLists.txt b/system/egl/CMakeLists.txt index 301ef627..cf649a22 100644 --- a/system/egl/CMakeLists.txt +++ b/system/egl/CMakeLists.txt @@ -1,10 +1,10 @@ # This is an autogenerated file! Do not edit! # instead run make from .../device/generic/goldfish-opengl # which will re-generate this file. -android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/egl/Android.mk" "729a65bbc7934fa79a239b55b801e4ebaa44d02c2deeab7ab43e42196376c7c7") +android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/egl/Android.mk" "0d72068bb429ec9da33f7086a879a08b540b887538f21d0a9f468cead76c45df") set(EGL_emulation_src eglDisplay.cpp egl.cpp ClientAPIExts.cpp) android_add_library(TARGET EGL_emulation SHARED LICENSE Apache-2.0 SRC eglDisplay.cpp egl.cpp ClientAPIExts.cpp) -target_include_directories(EGL_emulation PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) -target_compile_definitions(EGL_emulation PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGOLDFISH_VULKAN" "-DLOG_TAG=\"EGL_emulation\"" "-DEGL_EGLEXT_PROTOTYPES") +target_include_directories(EGL_emulation PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) +target_compile_definitions(EGL_emulation PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM" "-DLOG_TAG=\"EGL_emulation\"" "-DEGL_EGLEXT_PROTOTYPES") target_compile_options(EGL_emulation PRIVATE "-fvisibility=default" "-Wno-unused-parameter" "-Wno-gnu-designator") -target_link_libraries(EGL_emulation PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc gui androidemu cutils utils log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file +target_link_libraries(EGL_emulation PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc gui log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host cutils utils androidemu PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file diff --git a/system/egl/egl.cpp b/system/egl/egl.cpp index fbd2405f..601ad9d9 100644 --- a/system/egl/egl.cpp +++ b/system/egl/egl.cpp @@ -1210,6 +1210,7 @@ EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLin case EGL_VG_COLORSPACE: break; default: + ALOGE("%s:%d unknown attribute: 0x%x\n", __func__, __LINE__, attrib_list[0]); setErrorReturn(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); }; attrib_list+=2; @@ -1703,6 +1704,8 @@ EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_c } break; default: + ALOGE("%s:%d EGL_BAD_CONFIG: invalid major GLES version: %d\n", + __func__, __LINE__, majorVersion); setErrorReturn(EGL_BAD_CONFIG, EGL_NO_CONTEXT); } @@ -1856,41 +1859,25 @@ EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLC context->minorVersion, context->deviceMajorVersion, context->deviceMinorVersion); - // Get caps for indexed buffers from host. - // Some need a current context. - int max_transform_feedback_separate_attribs = 0; - int max_uniform_buffer_bindings = 0; - int max_atomic_counter_buffer_bindings = 0; - int max_shader_storage_buffer_bindings = 0; - int max_vertex_attrib_bindings = 0; - int max_color_attachments = 1; - int max_draw_buffers = 1; - if (context->majorVersion > 2) { - s_display.gles2_iface()->getIntegerv( - GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, &max_transform_feedback_separate_attribs); - s_display.gles2_iface()->getIntegerv( - GL_MAX_UNIFORM_BUFFER_BINDINGS, &max_uniform_buffer_bindings); - if (context->minorVersion > 0) { - s_display.gles2_iface()->getIntegerv( - GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, &max_atomic_counter_buffer_bindings); - s_display.gles2_iface()->getIntegerv( - GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, &max_shader_storage_buffer_bindings); - s_display.gles2_iface()->getIntegerv( - GL_MAX_VERTEX_ATTRIB_BINDINGS, &max_vertex_attrib_bindings); - } - s_display.gles2_iface()->getIntegerv( - GL_MAX_COLOR_ATTACHMENTS, &max_color_attachments); - s_display.gles2_iface()->getIntegerv( - GL_MAX_DRAW_BUFFERS, &max_draw_buffers); + hostCon->gl2Encoder()->setClientState(contextState); + if (context->majorVersion > 1) { + HostDriverCaps caps = s_display.getHostDriverCaps( + context->majorVersion, + context->minorVersion); + contextState->initFromCaps(caps); + } else { + // Just put some stuff here to make gles1 happy + HostDriverCaps gles1Caps = { + .max_vertex_attribs = 16, + .max_combined_texture_image_units = 8, + .max_color_attachments = 8, + + .max_texture_size = 4096, + .max_texture_size_cube_map = 2048, + .max_renderbuffer_size = 4096, + }; + contextState->initFromCaps(gles1Caps); } - contextState->initFromCaps( - max_transform_feedback_separate_attribs, - max_uniform_buffer_bindings, - max_atomic_counter_buffer_bindings, - max_shader_storage_buffer_bindings, - max_vertex_attrib_bindings, - max_color_attachments, - max_draw_buffers); } // update the client state, share group, and version @@ -1977,6 +1964,7 @@ EGLSurface eglGetCurrentSurface(EGLint readdraw) case EGL_DRAW: return context->draw; default: + ALOGE("%s:%d unknown parameter: 0x%x\n", __func__, __LINE__, readdraw); setErrorReturn(EGL_BAD_PARAMETER, EGL_NO_SURFACE); } } @@ -2127,7 +2115,11 @@ EGLImageKHR eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EG case HAL_PIXEL_FORMAT_YCBCR_420_888: #endif break; + case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: + ALOGW("%s:%d using HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED\n", __func__, __LINE__); + break; default: + ALOGE("%s:%d unknown parameter: 0x%x\n", __func__, __LINE__, format); setErrorReturn(EGL_BAD_PARAMETER, EGL_NO_IMAGE_KHR); } diff --git a/system/egl/eglDisplay.cpp b/system/egl/eglDisplay.cpp index 2508f487..7f4800c3 100644 --- a/system/egl/eglDisplay.cpp +++ b/system/egl/eglDisplay.cpp @@ -26,6 +26,8 @@ #include <dlfcn.h> +#include <GLES3/gl31.h> + static const int systemEGLVersionMajor = 1; static const int systemEGLVersionMinor = 4; static const char systemEGLVendor[] = "Google Android emulator"; @@ -73,7 +75,9 @@ eglDisplay::eglDisplay() : m_gles2_iface(NULL), m_versionString(NULL), m_vendorString(NULL), - m_extensionString(NULL) + m_extensionString(NULL), + m_hostDriverCaps_knownMajorVersion(0), + m_hostDriverCaps_knownMinorVersion(0) { pthread_mutex_init(&m_lock, NULL); pthread_mutex_init(&m_ctxLock, NULL); @@ -171,7 +175,6 @@ bool eglDisplay::initialize(EGLClient_eglInterface *eglIface) uint32_t nInts = m_numConfigAttribs * (m_numConfigs + 1); EGLint tmp_buf[nInts]; - uint32_t configCount = nInts - m_numConfigAttribs; m_configs = new EGLint[nInts-m_numConfigAttribs]; @@ -654,3 +657,55 @@ bool eglDisplay::isSurface(EGLSurface surface) { pthread_mutex_unlock(&m_surfaceLock); return res; } + +HostDriverCaps eglDisplay::getHostDriverCaps(int majorVersion, int minorVersion) { + pthread_mutex_lock(&m_lock); + if (majorVersion <= m_hostDriverCaps_knownMajorVersion && + minorVersion <= m_hostDriverCaps_knownMinorVersion) { + pthread_mutex_unlock(&m_lock); + return m_hostDriverCaps; + } + + memset(&m_hostDriverCaps, 0x0, sizeof(m_hostDriverCaps)); + + m_hostDriverCaps.max_color_attachments = 8; + + // Can we query gles2? + if (majorVersion >= 1) { + m_gles2_iface->getIntegerv(GL_MAX_VERTEX_ATTRIBS, &m_hostDriverCaps.max_vertex_attribs); + m_gles2_iface->getIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &m_hostDriverCaps.max_combined_texture_image_units); + + m_gles2_iface->getIntegerv(GL_MAX_TEXTURE_SIZE, &m_hostDriverCaps.max_texture_size); + m_gles2_iface->getIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, &m_hostDriverCaps.max_texture_size_cube_map); + m_gles2_iface->getIntegerv(GL_MAX_RENDERBUFFER_SIZE, &m_hostDriverCaps.max_renderbuffer_size); + m_hostDriverCaps_knownMajorVersion = 2; + } + + // Can we query gles3.0? + if (majorVersion >= 3) { + m_gles2_iface->getIntegerv(GL_MAX_COLOR_ATTACHMENTS, &m_hostDriverCaps.max_color_attachments); + m_gles2_iface->getIntegerv(GL_MAX_DRAW_BUFFERS, &m_hostDriverCaps.max_draw_buffers); + m_gles2_iface->getIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, &m_hostDriverCaps.ubo_offset_alignment); + m_gles2_iface->getIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS, &m_hostDriverCaps.max_uniform_buffer_bindings); + m_gles2_iface->getIntegerv(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, &m_hostDriverCaps.max_transform_feedback_separate_attribs); + m_gles2_iface->getIntegerv(GL_MAX_3D_TEXTURE_SIZE, &m_hostDriverCaps.max_texture_size_3d); + m_gles2_iface->getIntegerv(GL_MAX_ARRAY_TEXTURE_LAYERS, &m_hostDriverCaps.max_array_texture_layers); + + m_hostDriverCaps_knownMajorVersion = 3; + + // Can we query gles3.1? + if (minorVersion >= 1) { + m_gles2_iface->getIntegerv(GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, &m_hostDriverCaps.max_atomic_counter_buffer_bindings); + m_gles2_iface->getIntegerv(GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, &m_hostDriverCaps.max_shader_storage_buffer_bindings); + m_gles2_iface->getIntegerv(GL_MAX_VERTEX_ATTRIB_BINDINGS, &m_hostDriverCaps.max_vertex_attrib_bindings); + m_gles2_iface->getIntegerv(GL_MAX_VERTEX_ATTRIB_STRIDE, &m_hostDriverCaps.max_vertex_attrib_stride); + m_gles2_iface->getIntegerv(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, &m_hostDriverCaps.ssbo_offset_alignment); + m_hostDriverCaps_knownMinorVersion = 1; + } + } + + pthread_mutex_unlock(&m_lock); + + return m_hostDriverCaps; +} + diff --git a/system/egl/eglDisplay.h b/system/egl/eglDisplay.h index 951075d4..25494e15 100644 --- a/system/egl/eglDisplay.h +++ b/system/egl/eglDisplay.h @@ -22,6 +22,7 @@ #include <EGL/egl.h> #include <EGL/eglext.h> #include "EGLClientIface.h" +#include "GLClientState.h" #if __cplusplus >= 201103L #include <unordered_set> @@ -76,6 +77,10 @@ public: bool isContext(EGLContext ctx); bool isSurface(EGLSurface ctx); + + // Needs a current context (put this near eglMakeCurrent) + HostDriverCaps getHostDriverCaps(int majorVersion, int minorVersion); + private: EGLClient_glesInterface *loadGLESClientAPI(const char *libName, EGLClient_eglInterface *eglIface, @@ -118,6 +123,10 @@ private: EGLSurfaceSet m_surfaces; pthread_mutex_t m_ctxLock; pthread_mutex_t m_surfaceLock; + + int m_hostDriverCaps_knownMajorVersion; + int m_hostDriverCaps_knownMinorVersion; + HostDriverCaps m_hostDriverCaps; }; #endif diff --git a/system/gralloc/Android.mk b/system/gralloc/Android.mk index 38ae3946..5d5667ea 100644 --- a/system/gralloc/Android.mk +++ b/system/gralloc/Android.mk @@ -20,7 +20,7 @@ endif ifneq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST)) LOCAL_SHARED_LIBRARIES += libdl -ifeq (true,$(BUILD_EMULATOR_VULKAN)) +ifeq (true,$(GFXSTREAM)) LOCAL_CFLAGS += -DVIRTIO_GPU LOCAL_C_INCLUDES += external/libdrm external/minigbm/cros_gralloc LOCAL_SHARED_LIBRARIES += libdrm diff --git a/system/gralloc/CMakeLists.txt b/system/gralloc/CMakeLists.txt index 21bcde2b..c090eb37 100644 --- a/system/gralloc/CMakeLists.txt +++ b/system/gralloc/CMakeLists.txt @@ -1,20 +1,20 @@ # This is an autogenerated file! Do not edit! # instead run make from .../device/generic/goldfish-opengl # which will re-generate this file. -android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/gralloc/Android.mk" "c6313719aae414d05f6f4e8c6eb9039dd5cb120ae0a63818e25bfbe0cebcc702") +android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/gralloc/Android.mk" "4c44a906197808b25fde953a476e026aac725e5286e0f91d5f8a3083f40f49da") set(gralloc.goldfish_src gralloc_old.cpp) android_add_library(TARGET gralloc.goldfish SHARED LICENSE Apache-2.0 SRC gralloc_old.cpp) -target_include_directories(gralloc.goldfish PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) -target_compile_definitions(gralloc.goldfish PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGOLDFISH_VULKAN" "-DLOG_TAG=\"gralloc_goldfish\"") +target_include_directories(gralloc.goldfish PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) +target_compile_definitions(gralloc.goldfish PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM" "-DLOG_TAG=\"gralloc_goldfish\"") target_compile_options(gralloc.goldfish PRIVATE "-fvisibility=default" "-Wno-unused-parameter" "-Wno-missing-field-initializers" "-Wno-gnu-designator") -target_link_libraries(gralloc.goldfish PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc gui androidemu cutils utils log GLESv2_enc _renderControl_enc GLESv1_enc OpenglCodecCommon_host PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host) +target_link_libraries(gralloc.goldfish PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc gui log GLESv2_enc _renderControl_enc GLESv1_enc OpenglCodecCommon_host cutils utils androidemu PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host) # This is an autogenerated file! Do not edit! # instead run make from .../device/generic/goldfish-opengl # which will re-generate this file. -android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/gralloc/Android.mk" "c6313719aae414d05f6f4e8c6eb9039dd5cb120ae0a63818e25bfbe0cebcc702") +android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/gralloc/Android.mk" "4c44a906197808b25fde953a476e026aac725e5286e0f91d5f8a3083f40f49da") set(gralloc.ranchu_src gralloc_old.cpp) android_add_library(TARGET gralloc.ranchu SHARED LICENSE Apache-2.0 SRC gralloc_old.cpp) -target_include_directories(gralloc.ranchu PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) -target_compile_definitions(gralloc.ranchu PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGOLDFISH_VULKAN" "-DLOG_TAG=\"gralloc_ranchu\"") +target_include_directories(gralloc.ranchu PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) +target_compile_definitions(gralloc.ranchu PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM" "-DLOG_TAG=\"gralloc_ranchu\"") target_compile_options(gralloc.ranchu PRIVATE "-fvisibility=default" "-Wno-unused-parameter" "-Wno-missing-field-initializers" "-Wno-gnu-designator") -target_link_libraries(gralloc.ranchu PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc gui androidemu cutils utils log GLESv2_enc _renderControl_enc GLESv1_enc OpenglCodecCommon_host PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file +target_link_libraries(gralloc.ranchu PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc gui log GLESv2_enc _renderControl_enc GLESv1_enc OpenglCodecCommon_host cutils utils androidemu PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file diff --git a/system/renderControl_enc/CMakeLists.txt b/system/renderControl_enc/CMakeLists.txt index 8a42acb0..a2b42219 100644 --- a/system/renderControl_enc/CMakeLists.txt +++ b/system/renderControl_enc/CMakeLists.txt @@ -4,7 +4,7 @@ android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc/Android.mk" "780a007ac7a3d2255372ddf40e03aeb10e4c759343d2532f6ddf769f4df73810") set(_renderControl_enc_src renderControl_client_context.cpp renderControl_enc.cpp renderControl_entry.cpp) android_add_library(TARGET _renderControl_enc SHARED LICENSE Apache-2.0 SRC renderControl_client_context.cpp renderControl_enc.cpp renderControl_entry.cpp) -target_include_directories(_renderControl_enc PRIVATE ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) -target_compile_definitions(_renderControl_enc PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGOLDFISH_VULKAN") +target_include_directories(_renderControl_enc PRIVATE ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest) +target_compile_definitions(_renderControl_enc PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM") target_compile_options(_renderControl_enc PRIVATE "-fvisibility=default" "-Wno-unused-parameter" "-Wno-unused-function") -target_link_libraries(_renderControl_enc PRIVATE OpenglCodecCommon_host cutils utils log android-emu-shared PRIVATE qemupipe_host)
\ No newline at end of file +target_link_libraries(_renderControl_enc PRIVATE OpenglCodecCommon_host cutils utils log androidemu android-emu-shared PRIVATE qemupipe_host)
\ No newline at end of file diff --git a/system/renderControl_enc/renderControl_client_context.cpp b/system/renderControl_enc/renderControl_client_context.cpp index ca388840..5b1f14ee 100644 --- a/system/renderControl_enc/renderControl_client_context.cpp +++ b/system/renderControl_enc/renderControl_client_context.cpp @@ -61,6 +61,10 @@ int renderControl_client_context_t::initDispatchByName(void *(*getProc)(const ch rcCreateColorBufferWithHandle = (rcCreateColorBufferWithHandle_client_proc_t) getProc("rcCreateColorBufferWithHandle", userData); rcCreateBuffer = (rcCreateBuffer_client_proc_t) getProc("rcCreateBuffer", userData); rcCloseBuffer = (rcCloseBuffer_client_proc_t) getProc("rcCloseBuffer", userData); + rcSetColorBufferVulkanMode2 = (rcSetColorBufferVulkanMode2_client_proc_t) getProc("rcSetColorBufferVulkanMode2", userData); + rcMapGpaToBufferHandle = (rcMapGpaToBufferHandle_client_proc_t) getProc("rcMapGpaToBufferHandle", userData); + rcCreateBuffer2 = (rcCreateBuffer2_client_proc_t) getProc("rcCreateBuffer2", userData); + rcMapGpaToBufferHandle2 = (rcMapGpaToBufferHandle2_client_proc_t) getProc("rcMapGpaToBufferHandle2", userData); return 0; } diff --git a/system/renderControl_enc/renderControl_client_context.h b/system/renderControl_enc/renderControl_client_context.h index c9dc4109..2032a324 100644 --- a/system/renderControl_enc/renderControl_client_context.h +++ b/system/renderControl_enc/renderControl_client_context.h @@ -61,6 +61,10 @@ struct renderControl_client_context_t { rcCreateColorBufferWithHandle_client_proc_t rcCreateColorBufferWithHandle; rcCreateBuffer_client_proc_t rcCreateBuffer; rcCloseBuffer_client_proc_t rcCloseBuffer; + rcSetColorBufferVulkanMode2_client_proc_t rcSetColorBufferVulkanMode2; + rcMapGpaToBufferHandle_client_proc_t rcMapGpaToBufferHandle; + rcCreateBuffer2_client_proc_t rcCreateBuffer2; + rcMapGpaToBufferHandle2_client_proc_t rcMapGpaToBufferHandle2; virtual ~renderControl_client_context_t() {} typedef renderControl_client_context_t *CONTEXT_ACCESSOR_TYPE(void); diff --git a/system/renderControl_enc/renderControl_client_proc.h b/system/renderControl_enc/renderControl_client_proc.h index 4192b0e4..c0b9a7fd 100644 --- a/system/renderControl_enc/renderControl_client_proc.h +++ b/system/renderControl_enc/renderControl_client_proc.h @@ -63,6 +63,10 @@ typedef int (renderControl_APIENTRY *rcIsSyncSignaled_client_proc_t) (void * ctx typedef void (renderControl_APIENTRY *rcCreateColorBufferWithHandle_client_proc_t) (void * ctx, uint32_t, uint32_t, GLenum, uint32_t); typedef uint32_t (renderControl_APIENTRY *rcCreateBuffer_client_proc_t) (void * ctx, uint32_t); typedef void (renderControl_APIENTRY *rcCloseBuffer_client_proc_t) (void * ctx, uint32_t); +typedef GLint (renderControl_APIENTRY *rcSetColorBufferVulkanMode2_client_proc_t) (void * ctx, uint32_t, uint32_t, uint32_t); +typedef int (renderControl_APIENTRY *rcMapGpaToBufferHandle_client_proc_t) (void * ctx, uint32_t, uint64_t); +typedef uint32_t (renderControl_APIENTRY *rcCreateBuffer2_client_proc_t) (void * ctx, uint64_t, uint32_t); +typedef int (renderControl_APIENTRY *rcMapGpaToBufferHandle2_client_proc_t) (void * ctx, uint32_t, uint64_t, uint64_t); #endif diff --git a/system/renderControl_enc/renderControl_enc.cpp b/system/renderControl_enc/renderControl_enc.cpp index b841bf13..6b2680c2 100644 --- a/system/renderControl_enc/renderControl_enc.cpp +++ b/system/renderControl_enc/renderControl_enc.cpp @@ -12,6 +12,7 @@ #include <stdio.h> +#include "android/base/Tracing.h" namespace { void enc_unsupported() @@ -21,6 +22,7 @@ void enc_unsupported() GLint rcGetRendererVersion_enc(void *self ) { + AEMU_SCOPED_TRACE("rcGetRendererVersion encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -60,6 +62,7 @@ GLint rcGetRendererVersion_enc(void *self ) EGLint rcGetEGLVersion_enc(void *self , EGLint* major, EGLint* minor) { + AEMU_SCOPED_TRACE("rcGetEGLVersion encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -107,6 +110,7 @@ EGLint rcGetEGLVersion_enc(void *self , EGLint* major, EGLint* minor) EGLint rcQueryEGLString_enc(void *self , EGLenum name, void* buffer, EGLint bufferSize) { + AEMU_SCOPED_TRACE("rcQueryEGLString encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -152,6 +156,7 @@ EGLint rcQueryEGLString_enc(void *self , EGLenum name, void* buffer, EGLint buff EGLint rcGetGLString_enc(void *self , EGLenum name, void* buffer, EGLint bufferSize) { + AEMU_SCOPED_TRACE("rcGetGLString encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -197,6 +202,7 @@ EGLint rcGetGLString_enc(void *self , EGLenum name, void* buffer, EGLint bufferS EGLint rcGetNumConfigs_enc(void *self , uint32_t* numAttribs) { + AEMU_SCOPED_TRACE("rcGetNumConfigs encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -240,6 +246,7 @@ EGLint rcGetNumConfigs_enc(void *self , uint32_t* numAttribs) EGLint rcGetConfigs_enc(void *self , uint32_t bufSize, GLuint* buffer) { + AEMU_SCOPED_TRACE("rcGetConfigs encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -284,6 +291,7 @@ EGLint rcGetConfigs_enc(void *self , uint32_t bufSize, GLuint* buffer) EGLint rcChooseConfig_enc(void *self , EGLint* attribs, uint32_t attribs_size, uint32_t* configs, uint32_t configs_size) { + AEMU_SCOPED_TRACE("rcChooseConfig encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -334,6 +342,7 @@ EGLint rcChooseConfig_enc(void *self , EGLint* attribs, uint32_t attribs_size, u EGLint rcGetFBParam_enc(void *self , EGLint param) { + AEMU_SCOPED_TRACE("rcGetFBParam encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -374,6 +383,7 @@ EGLint rcGetFBParam_enc(void *self , EGLint param) uint32_t rcCreateContext_enc(void *self , uint32_t config, uint32_t share, uint32_t glVersion) { + AEMU_SCOPED_TRACE("rcCreateContext encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -416,6 +426,7 @@ uint32_t rcCreateContext_enc(void *self , uint32_t config, uint32_t share, uint3 void rcDestroyContext_enc(void *self , uint32_t context) { + AEMU_SCOPED_TRACE("rcDestroyContext encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -441,6 +452,7 @@ void rcDestroyContext_enc(void *self , uint32_t context) uint32_t rcCreateWindowSurface_enc(void *self , uint32_t config, uint32_t width, uint32_t height) { + AEMU_SCOPED_TRACE("rcCreateWindowSurface encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -483,6 +495,7 @@ uint32_t rcCreateWindowSurface_enc(void *self , uint32_t config, uint32_t width, void rcDestroyWindowSurface_enc(void *self , uint32_t windowSurface) { + AEMU_SCOPED_TRACE("rcDestroyWindowSurface encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -508,6 +521,7 @@ void rcDestroyWindowSurface_enc(void *self , uint32_t windowSurface) uint32_t rcCreateColorBuffer_enc(void *self , uint32_t width, uint32_t height, GLenum internalFormat) { + AEMU_SCOPED_TRACE("rcCreateColorBuffer encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -550,6 +564,7 @@ uint32_t rcCreateColorBuffer_enc(void *self , uint32_t width, uint32_t height, G void rcOpenColorBuffer_enc(void *self , uint32_t colorbuffer) { + AEMU_SCOPED_TRACE("rcOpenColorBuffer encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -575,6 +590,7 @@ void rcOpenColorBuffer_enc(void *self , uint32_t colorbuffer) void rcCloseColorBuffer_enc(void *self , uint32_t colorbuffer) { + AEMU_SCOPED_TRACE("rcCloseColorBuffer encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -601,6 +617,7 @@ void rcCloseColorBuffer_enc(void *self , uint32_t colorbuffer) void rcSetWindowColorBuffer_enc(void *self , uint32_t windowSurface, uint32_t colorBuffer) { + AEMU_SCOPED_TRACE("rcSetWindowColorBuffer encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -627,6 +644,7 @@ void rcSetWindowColorBuffer_enc(void *self , uint32_t windowSurface, uint32_t co int rcFlushWindowColorBuffer_enc(void *self , uint32_t windowSurface) { + AEMU_SCOPED_TRACE("rcFlushWindowColorBuffer encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -667,6 +685,7 @@ int rcFlushWindowColorBuffer_enc(void *self , uint32_t windowSurface) EGLint rcMakeCurrent_enc(void *self , uint32_t context, uint32_t drawSurf, uint32_t readSurf) { + AEMU_SCOPED_TRACE("rcMakeCurrent encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -709,6 +728,7 @@ EGLint rcMakeCurrent_enc(void *self , uint32_t context, uint32_t drawSurf, uint3 void rcFBPost_enc(void *self , uint32_t colorBuffer) { + AEMU_SCOPED_TRACE("rcFBPost encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -734,6 +754,7 @@ void rcFBPost_enc(void *self , uint32_t colorBuffer) void rcFBSetSwapInterval_enc(void *self , EGLint interval) { + AEMU_SCOPED_TRACE("rcFBSetSwapInterval encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -759,6 +780,7 @@ void rcFBSetSwapInterval_enc(void *self , EGLint interval) void rcBindTexture_enc(void *self , uint32_t colorBuffer) { + AEMU_SCOPED_TRACE("rcBindTexture encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -784,6 +806,7 @@ void rcBindTexture_enc(void *self , uint32_t colorBuffer) void rcBindRenderbuffer_enc(void *self , uint32_t colorBuffer) { + AEMU_SCOPED_TRACE("rcBindRenderbuffer encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -809,6 +832,7 @@ void rcBindRenderbuffer_enc(void *self , uint32_t colorBuffer) EGLint rcColorBufferCacheFlush_enc(void *self , uint32_t colorbuffer, EGLint postCount, int forRead) { + AEMU_SCOPED_TRACE("rcColorBufferCacheFlush encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -851,6 +875,7 @@ EGLint rcColorBufferCacheFlush_enc(void *self , uint32_t colorbuffer, EGLint pos void rcReadColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels) { + AEMU_SCOPED_TRACE("rcReadColorBuffer encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -896,6 +921,7 @@ void rcReadColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y, int rcUpdateColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels) { + AEMU_SCOPED_TRACE("rcUpdateColorBuffer encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -949,6 +975,7 @@ int rcUpdateColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y, int rcOpenColorBuffer2_enc(void *self , uint32_t colorbuffer) { + AEMU_SCOPED_TRACE("rcOpenColorBuffer2 encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -989,6 +1016,7 @@ int rcOpenColorBuffer2_enc(void *self , uint32_t colorbuffer) uint32_t rcCreateClientImage_enc(void *self , uint32_t context, EGLenum target, GLuint buffer) { + AEMU_SCOPED_TRACE("rcCreateClientImage encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1031,6 +1059,7 @@ uint32_t rcCreateClientImage_enc(void *self , uint32_t context, EGLenum target, int rcDestroyClientImage_enc(void *self , uint32_t image) { + AEMU_SCOPED_TRACE("rcDestroyClientImage encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1071,6 +1100,7 @@ int rcDestroyClientImage_enc(void *self , uint32_t image) void rcSelectChecksumHelper_enc(void *self , uint32_t newProtocol, uint32_t reserved) { + AEMU_SCOPED_TRACE("rcSelectChecksumHelper encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1097,6 +1127,7 @@ void rcSelectChecksumHelper_enc(void *self , uint32_t newProtocol, uint32_t rese void rcCreateSyncKHR_enc(void *self , EGLenum type, EGLint* attribs, uint32_t num_attribs, int destroy_when_signaled, uint64_t* glsync_out, uint64_t* syncthread_out) { + AEMU_SCOPED_TRACE("rcCreateSyncKHR encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1145,6 +1176,7 @@ void rcCreateSyncKHR_enc(void *self , EGLenum type, EGLint* attribs, uint32_t nu EGLint rcClientWaitSyncKHR_enc(void *self , uint64_t sync, EGLint flags, uint64_t timeout) { + AEMU_SCOPED_TRACE("rcClientWaitSyncKHR encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1187,6 +1219,7 @@ EGLint rcClientWaitSyncKHR_enc(void *self , uint64_t sync, EGLint flags, uint64_ void rcFlushWindowColorBufferAsync_enc(void *self , uint32_t windowSurface) { + AEMU_SCOPED_TRACE("rcFlushWindowColorBufferAsync encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1212,6 +1245,7 @@ void rcFlushWindowColorBufferAsync_enc(void *self , uint32_t windowSurface) int rcDestroySyncKHR_enc(void *self , uint64_t sync) { + AEMU_SCOPED_TRACE("rcDestroySyncKHR encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1252,6 +1286,7 @@ int rcDestroySyncKHR_enc(void *self , uint64_t sync) void rcSetPuid_enc(void *self , uint64_t puid) { + AEMU_SCOPED_TRACE("rcSetPuid encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1277,6 +1312,7 @@ void rcSetPuid_enc(void *self , uint64_t puid) int rcUpdateColorBufferDMA_enc(void *self , uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels, uint32_t pixels_size) { + AEMU_SCOPED_TRACE("rcUpdateColorBufferDMA encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1326,6 +1362,7 @@ int rcUpdateColorBufferDMA_enc(void *self , uint32_t colorbuffer, GLint x, GLint uint32_t rcCreateColorBufferDMA_enc(void *self , uint32_t width, uint32_t height, GLenum internalFormat, int frameworkFormat) { + AEMU_SCOPED_TRACE("rcCreateColorBufferDMA encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1369,6 +1406,7 @@ uint32_t rcCreateColorBufferDMA_enc(void *self , uint32_t width, uint32_t height void rcWaitSyncKHR_enc(void *self , uint64_t sync, EGLint flags) { + AEMU_SCOPED_TRACE("rcWaitSyncKHR encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1395,6 +1433,7 @@ void rcWaitSyncKHR_enc(void *self , uint64_t sync, EGLint flags) GLint rcCompose_enc(void *self , uint32_t bufferSize, void* buffer) { + AEMU_SCOPED_TRACE("rcCompose encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1438,6 +1477,7 @@ GLint rcCompose_enc(void *self , uint32_t bufferSize, void* buffer) int rcCreateDisplay_enc(void *self , uint32_t* displayId) { + AEMU_SCOPED_TRACE("rcCreateDisplay encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1481,6 +1521,7 @@ int rcCreateDisplay_enc(void *self , uint32_t* displayId) int rcDestroyDisplay_enc(void *self , uint32_t displayId) { + AEMU_SCOPED_TRACE("rcDestroyDisplay encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1521,6 +1562,7 @@ int rcDestroyDisplay_enc(void *self , uint32_t displayId) int rcSetDisplayColorBuffer_enc(void *self , uint32_t displayId, uint32_t colorBuffer) { + AEMU_SCOPED_TRACE("rcSetDisplayColorBuffer encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1562,6 +1604,7 @@ int rcSetDisplayColorBuffer_enc(void *self , uint32_t displayId, uint32_t colorB int rcGetDisplayColorBuffer_enc(void *self , uint32_t displayId, uint32_t* colorBuffer) { + AEMU_SCOPED_TRACE("rcGetDisplayColorBuffer encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1606,6 +1649,7 @@ int rcGetDisplayColorBuffer_enc(void *self , uint32_t displayId, uint32_t* color int rcGetColorBufferDisplay_enc(void *self , uint32_t colorBuffer, uint32_t* displayId) { + AEMU_SCOPED_TRACE("rcGetColorBufferDisplay encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1650,6 +1694,7 @@ int rcGetColorBufferDisplay_enc(void *self , uint32_t colorBuffer, uint32_t* dis int rcGetDisplayPose_enc(void *self , uint32_t displayId, GLint* x, GLint* y, uint32_t* w, uint32_t* h) { + AEMU_SCOPED_TRACE("rcGetDisplayPose encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1706,6 +1751,7 @@ int rcGetDisplayPose_enc(void *self , uint32_t displayId, GLint* x, GLint* y, ui int rcSetDisplayPose_enc(void *self , uint32_t displayId, GLint x, GLint y, uint32_t w, uint32_t h) { + AEMU_SCOPED_TRACE("rcSetDisplayPose encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1750,6 +1796,7 @@ int rcSetDisplayPose_enc(void *self , uint32_t displayId, GLint x, GLint y, uint GLint rcSetColorBufferVulkanMode_enc(void *self , uint32_t colorBuffer, uint32_t mode) { + AEMU_SCOPED_TRACE("rcSetColorBufferVulkanMode encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1791,6 +1838,7 @@ GLint rcSetColorBufferVulkanMode_enc(void *self , uint32_t colorBuffer, uint32_t void rcReadColorBufferYUV_enc(void *self , uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, void* pixels, uint32_t pixels_size) { + AEMU_SCOPED_TRACE("rcReadColorBufferYUV encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1835,6 +1883,7 @@ void rcReadColorBufferYUV_enc(void *self , uint32_t colorbuffer, GLint x, GLint int rcIsSyncSignaled_enc(void *self , uint64_t sync) { + AEMU_SCOPED_TRACE("rcIsSyncSignaled encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1875,6 +1924,7 @@ int rcIsSyncSignaled_enc(void *self , uint64_t sync) void rcCreateColorBufferWithHandle_enc(void *self , uint32_t width, uint32_t height, GLenum internalFormat, uint32_t handle) { + AEMU_SCOPED_TRACE("rcCreateColorBufferWithHandle encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1903,6 +1953,7 @@ void rcCreateColorBufferWithHandle_enc(void *self , uint32_t width, uint32_t hei uint32_t rcCreateBuffer_enc(void *self , uint32_t size) { + AEMU_SCOPED_TRACE("rcCreateBuffer encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1943,6 +1994,7 @@ uint32_t rcCreateBuffer_enc(void *self , uint32_t size) void rcCloseBuffer_enc(void *self , uint32_t buffer) { + AEMU_SCOPED_TRACE("rcCloseBuffer encode"); renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; IOStream *stream = ctx->m_stream; @@ -1966,6 +2018,176 @@ void rcCloseBuffer_enc(void *self , uint32_t buffer) } +GLint rcSetColorBufferVulkanMode2_enc(void *self , uint32_t colorBuffer, uint32_t mode, uint32_t memoryProperty) +{ + AEMU_SCOPED_TRACE("rcSetColorBufferVulkanMode2 encode"); + + renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; + IOStream *stream = ctx->m_stream; + ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator; + bool useChecksum = checksumCalculator->getVersion() > 0; + + unsigned char *ptr; + unsigned char *buf; + const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4; + const size_t checksumSize = checksumCalculator->checksumByteSize(); + const size_t totalSize = sizeWithoutChecksum + checksumSize; + buf = stream->alloc(totalSize); + ptr = buf; + int tmp = OP_rcSetColorBufferVulkanMode2;memcpy(ptr, &tmp, 4); ptr += 4; + memcpy(ptr, &totalSize, 4); ptr += 4; + + memcpy(ptr, &colorBuffer, 4); ptr += 4; + memcpy(ptr, &mode, 4); ptr += 4; + memcpy(ptr, &memoryProperty, 4); ptr += 4; + + if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf); + if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize; + + + GLint retval; + stream->readback(&retval, 4); + if (useChecksum) checksumCalculator->addBuffer(&retval, 4); + if (useChecksum) { + unsigned char *checksumBufPtr = NULL; + unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize]; + if (checksumSize > 0) checksumBufPtr = &checksumBuf[0]; + stream->readback(checksumBufPtr, checksumSize); + if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) { + ALOGE("rcSetColorBufferVulkanMode2: GL communication error, please report this issue to b.android.com.\n"); + abort(); + } + } + return retval; +} + +int rcMapGpaToBufferHandle_enc(void *self , uint32_t bufferHandle, uint64_t gpa) +{ + AEMU_SCOPED_TRACE("rcMapGpaToBufferHandle encode"); + + renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; + IOStream *stream = ctx->m_stream; + ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator; + bool useChecksum = checksumCalculator->getVersion() > 0; + + unsigned char *ptr; + unsigned char *buf; + const size_t sizeWithoutChecksum = 8 + 4 + 8; + const size_t checksumSize = checksumCalculator->checksumByteSize(); + const size_t totalSize = sizeWithoutChecksum + checksumSize; + buf = stream->alloc(totalSize); + ptr = buf; + int tmp = OP_rcMapGpaToBufferHandle;memcpy(ptr, &tmp, 4); ptr += 4; + memcpy(ptr, &totalSize, 4); ptr += 4; + + memcpy(ptr, &bufferHandle, 4); ptr += 4; + memcpy(ptr, &gpa, 8); ptr += 8; + + if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf); + if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize; + + + int retval; + stream->readback(&retval, 4); + if (useChecksum) checksumCalculator->addBuffer(&retval, 4); + if (useChecksum) { + unsigned char *checksumBufPtr = NULL; + unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize]; + if (checksumSize > 0) checksumBufPtr = &checksumBuf[0]; + stream->readback(checksumBufPtr, checksumSize); + if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) { + ALOGE("rcMapGpaToBufferHandle: GL communication error, please report this issue to b.android.com.\n"); + abort(); + } + } + return retval; +} + +uint32_t rcCreateBuffer2_enc(void *self , uint64_t size, uint32_t memoryProperty) +{ + AEMU_SCOPED_TRACE("rcCreateBuffer2 encode"); + + renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; + IOStream *stream = ctx->m_stream; + ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator; + bool useChecksum = checksumCalculator->getVersion() > 0; + + unsigned char *ptr; + unsigned char *buf; + const size_t sizeWithoutChecksum = 8 + 8 + 4; + const size_t checksumSize = checksumCalculator->checksumByteSize(); + const size_t totalSize = sizeWithoutChecksum + checksumSize; + buf = stream->alloc(totalSize); + ptr = buf; + int tmp = OP_rcCreateBuffer2;memcpy(ptr, &tmp, 4); ptr += 4; + memcpy(ptr, &totalSize, 4); ptr += 4; + + memcpy(ptr, &size, 8); ptr += 8; + memcpy(ptr, &memoryProperty, 4); ptr += 4; + + if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf); + if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize; + + + uint32_t retval; + stream->readback(&retval, 4); + if (useChecksum) checksumCalculator->addBuffer(&retval, 4); + if (useChecksum) { + unsigned char *checksumBufPtr = NULL; + unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize]; + if (checksumSize > 0) checksumBufPtr = &checksumBuf[0]; + stream->readback(checksumBufPtr, checksumSize); + if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) { + ALOGE("rcCreateBuffer2: GL communication error, please report this issue to b.android.com.\n"); + abort(); + } + } + return retval; +} + +int rcMapGpaToBufferHandle2_enc(void *self , uint32_t bufferHandle, uint64_t gpa, uint64_t size) +{ + AEMU_SCOPED_TRACE("rcMapGpaToBufferHandle2 encode"); + + renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; + IOStream *stream = ctx->m_stream; + ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator; + bool useChecksum = checksumCalculator->getVersion() > 0; + + unsigned char *ptr; + unsigned char *buf; + const size_t sizeWithoutChecksum = 8 + 4 + 8 + 8; + const size_t checksumSize = checksumCalculator->checksumByteSize(); + const size_t totalSize = sizeWithoutChecksum + checksumSize; + buf = stream->alloc(totalSize); + ptr = buf; + int tmp = OP_rcMapGpaToBufferHandle2;memcpy(ptr, &tmp, 4); ptr += 4; + memcpy(ptr, &totalSize, 4); ptr += 4; + + memcpy(ptr, &bufferHandle, 4); ptr += 4; + memcpy(ptr, &gpa, 8); ptr += 8; + memcpy(ptr, &size, 8); ptr += 8; + + if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf); + if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize; + + + int retval; + stream->readback(&retval, 4); + if (useChecksum) checksumCalculator->addBuffer(&retval, 4); + if (useChecksum) { + unsigned char *checksumBufPtr = NULL; + unsigned char checksumBuf[ChecksumCalculator::kMaxChecksumSize]; + if (checksumSize > 0) checksumBufPtr = &checksumBuf[0]; + stream->readback(checksumBufPtr, checksumSize); + if (!checksumCalculator->validate(checksumBufPtr, checksumSize)) { + ALOGE("rcMapGpaToBufferHandle2: GL communication error, please report this issue to b.android.com.\n"); + abort(); + } + } + return retval; +} + } // namespace renderControl_encoder_context_t::renderControl_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator) @@ -2024,5 +2246,9 @@ renderControl_encoder_context_t::renderControl_encoder_context_t(IOStream *strea this->rcCreateColorBufferWithHandle = &rcCreateColorBufferWithHandle_enc; this->rcCreateBuffer = &rcCreateBuffer_enc; this->rcCloseBuffer = &rcCloseBuffer_enc; + this->rcSetColorBufferVulkanMode2 = &rcSetColorBufferVulkanMode2_enc; + this->rcMapGpaToBufferHandle = &rcMapGpaToBufferHandle_enc; + this->rcCreateBuffer2 = &rcCreateBuffer2_enc; + this->rcMapGpaToBufferHandle2 = &rcMapGpaToBufferHandle2_enc; } diff --git a/system/renderControl_enc/renderControl_entry.cpp b/system/renderControl_enc/renderControl_entry.cpp index ffa0cdd6..0ea37d61 100644 --- a/system/renderControl_enc/renderControl_entry.cpp +++ b/system/renderControl_enc/renderControl_entry.cpp @@ -56,6 +56,10 @@ extern "C" { void rcCreateColorBufferWithHandle(uint32_t width, uint32_t height, GLenum internalFormat, uint32_t handle); uint32_t rcCreateBuffer(uint32_t size); void rcCloseBuffer(uint32_t buffer); + GLint rcSetColorBufferVulkanMode2(uint32_t colorBuffer, uint32_t mode, uint32_t memoryProperty); + int rcMapGpaToBufferHandle(uint32_t bufferHandle, uint64_t gpa); + uint32_t rcCreateBuffer2(uint64_t size, uint32_t memoryProperty); + int rcMapGpaToBufferHandle2(uint32_t bufferHandle, uint64_t gpa, uint64_t size); }; #ifndef GET_CONTEXT @@ -370,3 +374,27 @@ void rcCloseBuffer(uint32_t buffer) ctx->rcCloseBuffer(ctx, buffer); } +GLint rcSetColorBufferVulkanMode2(uint32_t colorBuffer, uint32_t mode, uint32_t memoryProperty) +{ + GET_CONTEXT; + return ctx->rcSetColorBufferVulkanMode2(ctx, colorBuffer, mode, memoryProperty); +} + +int rcMapGpaToBufferHandle(uint32_t bufferHandle, uint64_t gpa) +{ + GET_CONTEXT; + return ctx->rcMapGpaToBufferHandle(ctx, bufferHandle, gpa); +} + +uint32_t rcCreateBuffer2(uint64_t size, uint32_t memoryProperty) +{ + GET_CONTEXT; + return ctx->rcCreateBuffer2(ctx, size, memoryProperty); +} + +int rcMapGpaToBufferHandle2(uint32_t bufferHandle, uint64_t gpa, uint64_t size) +{ + GET_CONTEXT; + return ctx->rcMapGpaToBufferHandle2(ctx, bufferHandle, gpa, size); +} + diff --git a/system/renderControl_enc/renderControl_ftable.h b/system/renderControl_enc/renderControl_ftable.h index 13aebedc..247a0bd1 100644 --- a/system/renderControl_enc/renderControl_ftable.h +++ b/system/renderControl_enc/renderControl_ftable.h @@ -59,6 +59,10 @@ static const struct _renderControl_funcs_by_name { {"rcCreateColorBufferWithHandle", (void*)rcCreateColorBufferWithHandle}, {"rcCreateBuffer", (void*)rcCreateBuffer}, {"rcCloseBuffer", (void*)rcCloseBuffer}, + {"rcSetColorBufferVulkanMode2", (void*)rcSetColorBufferVulkanMode2}, + {"rcMapGpaToBufferHandle", (void*)rcMapGpaToBufferHandle}, + {"rcCreateBuffer2", (void*)rcCreateBuffer2}, + {"rcMapGpaToBufferHandle2", (void*)rcMapGpaToBufferHandle2}, }; static const int renderControl_num_funcs = sizeof(renderControl_funcs_by_name) / sizeof(struct _renderControl_funcs_by_name); diff --git a/system/renderControl_enc/renderControl_opcodes.h b/system/renderControl_enc/renderControl_opcodes.h index f1207f26..16c02141 100644 --- a/system/renderControl_enc/renderControl_opcodes.h +++ b/system/renderControl_enc/renderControl_opcodes.h @@ -54,7 +54,11 @@ #define OP_rcCreateColorBufferWithHandle 10048 #define OP_rcCreateBuffer 10049 #define OP_rcCloseBuffer 10050 -#define OP_last 10051 +#define OP_rcSetColorBufferVulkanMode2 10051 +#define OP_rcMapGpaToBufferHandle 10052 +#define OP_rcCreateBuffer2 10053 +#define OP_rcMapGpaToBufferHandle2 10054 +#define OP_last 10055 #endif diff --git a/system/vulkan/CMakeLists.txt b/system/vulkan/CMakeLists.txt index 65bc00a5..eb2f6122 100644 --- a/system/vulkan/CMakeLists.txt +++ b/system/vulkan/CMakeLists.txt @@ -4,7 +4,7 @@ android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/vulkan/Android.mk" "5cb873c72cc859fac3800961059c1b203ed1abb400ee643178c18e04961d49e8") set(vulkan.ranchu_src func_table.cpp goldfish_vulkan.cpp) android_add_library(TARGET vulkan.ranchu SHARED LICENSE Apache-2.0 SRC func_table.cpp goldfish_vulkan.cpp) -target_include_directories(vulkan.ranchu PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/system/vulkan ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/host/include) -target_compile_definitions(vulkan.ranchu PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGOLDFISH_VULKAN" "-DLOG_TAG=\"goldfish_vulkan\"" "-DVK_USE_PLATFORM_ANDROID_KHR" "-DVK_NO_PROTOTYPES") +target_include_directories(vulkan.ranchu PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon/bionic-include ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/bionic/libc/platform ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/shared/gralloc_cb/include ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/system/vulkan ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/host/include) +target_compile_definitions(vulkan.ranchu PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM" "-DLOG_TAG=\"goldfish_vulkan\"" "-DVK_USE_PLATFORM_ANDROID_KHR" "-DVK_NO_PROTOTYPES") target_compile_options(vulkan.ranchu PRIVATE "-fvisibility=default" "-Wno-unused-parameter" "-Wno-missing-field-initializers" "-fvisibility=hidden" "-fstrict-aliasing" "-Wno-unused-function") -target_link_libraries(vulkan.ranchu PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc gui androidemu cutils utils log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file +target_link_libraries(vulkan.ranchu PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc gui log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host cutils utils androidemu PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file diff --git a/system/vulkan/func_table.cpp b/system/vulkan/func_table.cpp index 51913e8e..6a4a1289 100644 --- a/system/vulkan/func_table.cpp +++ b/system/vulkan/func_table.cpp @@ -5338,6 +5338,33 @@ static void entry_vkQueueBindSparseAsyncGOOGLE( vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence); } #endif +#ifdef VK_GOOGLE_linear_image_layout +static void entry_vkGetLinearImageLayoutGOOGLE( + VkDevice device, + VkFormat format, + VkDeviceSize* pOffset, + VkDeviceSize* pRowPitchAlignment) +{ + AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE"); + auto vkEnc = HostConnection::get()->vkEncoder(); + vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment); +} +static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE( + VkDevice device, + VkFormat format, + VkDeviceSize* pOffset, + VkDeviceSize* pRowPitchAlignment) +{ + auto resources = ResourceTracker::get(); + if (!resources->hasDeviceExtension(device, "VK_GOOGLE_linear_image_layout")) + { + sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_linear_image_layout"); + } + AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE"); + auto vkEnc = HostConnection::get()->vkEncoder(); + vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment); +} +#endif void* goldfish_vulkan_get_proc_address(const char* name){ #ifdef VK_VERSION_1_0 if (!strcmp(name, "vkCreateInstance")) @@ -6813,6 +6840,12 @@ void* goldfish_vulkan_get_proc_address(const char* name){ return nullptr; } #endif +#ifdef VK_GOOGLE_linear_image_layout + if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE")) + { + return nullptr; + } +#endif return nullptr; } void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){ @@ -8389,6 +8422,12 @@ void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr; } #endif +#ifdef VK_GOOGLE_linear_image_layout + if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE")) + { + return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE; + } +#endif return nullptr; } void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){ @@ -10036,6 +10075,13 @@ void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name) return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr; } #endif +#ifdef VK_GOOGLE_linear_image_layout + if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE")) + { + bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_linear_image_layout"); + return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr; + } +#endif return nullptr; } diff --git a/system/vulkan/func_table.h b/system/vulkan/func_table.h index 9c2e5beb..a3a7f990 100644 --- a/system/vulkan/func_table.h +++ b/system/vulkan/func_table.h @@ -294,6 +294,8 @@ namespace goldfish_vk { #endif #ifdef VK_GOOGLE_async_queue_submit #endif +#ifdef VK_GOOGLE_linear_image_layout +#endif void* goldfish_vulkan_get_proc_address(const char* name); void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name); void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name); diff --git a/system/vulkan_enc/CMakeLists.txt b/system/vulkan_enc/CMakeLists.txt index 5b970156..44886583 100644 --- a/system/vulkan_enc/CMakeLists.txt +++ b/system/vulkan_enc/CMakeLists.txt @@ -4,7 +4,7 @@ android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc/Android.mk" "103f3f10c8af73d3d5c4263c4faa5bb70ebdbfbc9ed6f068a338d57344e2aa45") set(vulkan_enc_src AndroidHardwareBuffer.cpp HostVisibleMemoryVirtualization.cpp Resources.cpp Validation.cpp VulkanStreamGuest.cpp VulkanHandleMapping.cpp ResourceTracker.cpp VkEncoder.cpp goldfish_vk_extension_structs_guest.cpp goldfish_vk_marshaling_guest.cpp goldfish_vk_deepcopy_guest.cpp goldfish_vk_handlemap_guest.cpp goldfish_vk_transform_guest.cpp) android_add_library(TARGET vulkan_enc SHARED LICENSE Apache-2.0 SRC AndroidHardwareBuffer.cpp HostVisibleMemoryVirtualization.cpp Resources.cpp Validation.cpp VulkanStreamGuest.cpp VulkanHandleMapping.cpp ResourceTracker.cpp VkEncoder.cpp goldfish_vk_extension_structs_guest.cpp goldfish_vk_marshaling_guest.cpp goldfish_vk_deepcopy_guest.cpp goldfish_vk_handlemap_guest.cpp goldfish_vk_transform_guest.cpp) -target_include_directories(vulkan_enc PRIVATE ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/host/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/host/include/vulkan) -target_compile_definitions(vulkan_enc PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGOLDFISH_VULKAN" "-DLOG_TAG=\"goldfish_vulkan\"" "-DVK_ANDROID_native_buffer" "-DVK_GOOGLE_address_space" "-DVK_USE_PLATFORM_ANDROID_KHR" "-DVK_NO_PROTOTYPES" "-D__ANDROID_API__=28") +target_include_directories(vulkan_enc PRIVATE ${GOLDFISH_DEVICE_ROOT}/shared/GoldfishAddressSpace/include ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include-types ${GOLDFISH_DEVICE_ROOT}/shared/qemupipe/include ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/host/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/host/include/vulkan) +target_compile_definitions(vulkan_enc PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM" "-DLOG_TAG=\"goldfish_vulkan\"" "-DVK_ANDROID_native_buffer" "-DVK_GOOGLE_address_space" "-DVK_USE_PLATFORM_ANDROID_KHR" "-DVK_NO_PROTOTYPES" "-D__ANDROID_API__=28") target_compile_options(vulkan_enc PRIVATE "-fvisibility=default" "-Wno-unused-parameter" "-Wno-missing-field-initializers" "-Werror" "-fstrict-aliasing") -target_link_libraries(vulkan_enc PRIVATE gui log android-emu-shared androidemu cutils utils _renderControl_enc OpenglCodecCommon_host PRIVATE GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file +target_link_libraries(vulkan_enc PRIVATE gui log android-emu-shared _renderControl_enc OpenglCodecCommon_host cutils utils androidemu PRIVATE GoldfishAddressSpace_host qemupipe_host)
\ No newline at end of file diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp index 2293df01..b00a5627 100644 --- a/system/vulkan_enc/ResourceTracker.cpp +++ b/system/vulkan_enc/ResourceTracker.cpp @@ -46,16 +46,21 @@ void zx_event_create(int, zx_handle_t*) { } #ifdef VK_USE_PLATFORM_FUCHSIA #include <cutils/native_handle.h> -#include <fuchsia/hardware/goldfish/cpp/fidl.h> -#include <fuchsia/sysmem/cpp/fidl.h> +#include <fuchsia/hardware/goldfish/llcpp/fidl.h> +#include <fuchsia/sysmem/llcpp/fidl.h> #include <lib/zx/channel.h> #include <lib/zx/vmo.h> +#include <zircon/errors.h> #include <zircon/process.h> +#include <zircon/rights.h> #include <zircon/syscalls.h> #include <zircon/syscalls/object.h> #include "services/service_connector.h" +#define GET_STATUS_SAFE(result, member) \ + ((result).ok() ? ((result).Unwrap()->member) : ZX_OK) + struct AHardwareBuffer; void AHardwareBuffer_release(AHardwareBuffer*) { } @@ -271,12 +276,12 @@ public: }; struct VkCommandBuffer_Info { - VkEncoder** lastUsedEncoderPtr = nullptr; + VkEncoder* lastUsedEncoder = nullptr; uint32_t sequenceNumber = 0; }; struct VkQueue_Info { - VkEncoder** lastUsedEncoderPtr = nullptr; + VkEncoder* lastUsedEncoder = nullptr; uint32_t sequenceNumber = 0; }; @@ -394,15 +399,10 @@ public: auto it = info_VkCommandBuffer.find(commandBuffer); if (it == info_VkCommandBuffer.end()) return; auto& info = it->second; - auto lastUsedEncoder = - info.lastUsedEncoderPtr ? - *(info.lastUsedEncoderPtr) : nullptr; - - if (lastUsedEncoder) { - delete info.lastUsedEncoderPtr; - info.lastUsedEncoderPtr = nullptr; + if (info.lastUsedEncoder) { + info.lastUsedEncoder->decRef(); } - + info.lastUsedEncoder = nullptr; info_VkCommandBuffer.erase(commandBuffer); } @@ -412,15 +412,11 @@ public: auto it = info_VkQueue.find(queue); if (it == info_VkQueue.end()) return; auto& info = it->second; - auto lastUsedEncoder = - info.lastUsedEncoderPtr ? - *(info.lastUsedEncoderPtr) : nullptr; - - if (lastUsedEncoder) { - delete info.lastUsedEncoderPtr; - info.lastUsedEncoderPtr = nullptr; + auto lastUsedEncoder = info.lastUsedEncoder; + if (info.lastUsedEncoder) { + info.lastUsedEncoder->decRef(); } - + info.lastUsedEncoder = nullptr; info_VkQueue.erase(queue); } @@ -811,13 +807,17 @@ public: ALOGE("failed to open control device"); abort(); } - mControlDevice.Bind(std::move(channel)); + mControlDevice = std::make_unique< + llcpp::fuchsia::hardware::goldfish::ControlDevice::SyncClient>( + std::move(channel)); zx::channel sysmem_channel(GetConnectToServiceFunction()("/svc/fuchsia.sysmem.Allocator")); if (!sysmem_channel) { ALOGE("failed to open sysmem connection"); } - mSysmemAllocator.Bind(std::move(sysmem_channel)); + mSysmemAllocator = + std::make_unique<llcpp::fuchsia::sysmem::Allocator::SyncClient>( + std::move(sysmem_channel)); } #endif @@ -1676,24 +1676,47 @@ public: const VkBufferCollectionCreateInfoFUCHSIA* pInfo, const VkAllocationCallbacks*, VkBufferCollectionFUCHSIA* pCollection) { - fuchsia::sysmem::BufferCollectionTokenSyncPtr token; + zx::channel token_client; + if (pInfo->collectionToken) { - token.Bind(zx::channel(pInfo->collectionToken)); + token_client = zx::channel(pInfo->collectionToken); } else { - zx_status_t status = mSysmemAllocator->AllocateSharedCollection(token.NewRequest()); + zx::channel token_server; + zx_status_t status = + zx::channel::create(0, &token_server, &token_client); if (status != ZX_OK) { - ALOGE("AllocateSharedCollection failed: %d", status); + ALOGE("zx_channel_create failed: %d", status); + return VK_ERROR_INITIALIZATION_FAILED; + } + + auto result = mSysmemAllocator->AllocateSharedCollection( + std::move(token_server)); + if (!result.ok()) { + ALOGE("AllocateSharedCollection failed: %d", result.status()); return VK_ERROR_INITIALIZATION_FAILED; } } - auto sysmem_collection = new fuchsia::sysmem::BufferCollectionSyncPtr; - zx_status_t status = mSysmemAllocator->BindSharedCollection( - std::move(token), sysmem_collection->NewRequest()); + + zx::channel collection_client, collection_server; + zx_status_t status = + zx::channel::create(0, &collection_client, &collection_server); if (status != ZX_OK) { - ALOGE("BindSharedCollection failed: %d", status); + ALOGE("zx_channel_create failed: %d", status); + return VK_ERROR_INITIALIZATION_FAILED; + } + + auto result = mSysmemAllocator->BindSharedCollection( + std::move(token_client), std::move(collection_server)); + if (!result.ok()) { + ALOGE("BindSharedCollection failed: %d", result.status()); return VK_ERROR_INITIALIZATION_FAILED; } + + auto sysmem_collection = + new llcpp::fuchsia::sysmem::BufferCollection::SyncClient( + std::move(collection_client)); *pCollection = reinterpret_cast<VkBufferCollectionFUCHSIA>(sysmem_collection); + return VK_SUCCESS; } @@ -1701,32 +1724,37 @@ public: void*, VkResult, VkDevice, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks*) { - auto sysmem_collection = reinterpret_cast<fuchsia::sysmem::BufferCollectionSyncPtr*>(collection); - if (sysmem_collection->is_bound()) { - (*sysmem_collection)->Close(); + auto sysmem_collection = reinterpret_cast< + llcpp::fuchsia::sysmem::BufferCollection::SyncClient*>(collection); + if (sysmem_collection) { + sysmem_collection->Close(); } delete sysmem_collection; } - inline fuchsia::sysmem::BufferCollectionConstraints - defaultBufferCollectionConstraints(size_t min_size_bytes, - size_t buffer_count) { - fuchsia::sysmem::BufferCollectionConstraints constraints = {}; + inline llcpp::fuchsia::sysmem::BufferCollectionConstraints defaultBufferCollectionConstraints( + size_t min_size_bytes, + size_t buffer_count) { + llcpp::fuchsia::sysmem::BufferCollectionConstraints constraints = {}; constraints.min_buffer_count = buffer_count; constraints.has_buffer_memory_constraints = true; - fuchsia::sysmem::BufferMemoryConstraints& buffer_constraints = + llcpp::fuchsia::sysmem::BufferMemoryConstraints& buffer_constraints = constraints.buffer_memory_constraints; buffer_constraints.min_size_bytes = min_size_bytes; buffer_constraints.max_size_bytes = 0xffffffff; buffer_constraints.physically_contiguous_required = false; buffer_constraints.secure_required = false; - buffer_constraints.ram_domain_supported = false; - buffer_constraints.cpu_domain_supported = false; + + // No restrictions on coherency domain or Heaps. + buffer_constraints.ram_domain_supported = true; + buffer_constraints.cpu_domain_supported = true; buffer_constraints.inaccessible_domain_supported = true; - buffer_constraints.heap_permitted_count = 1; + buffer_constraints.heap_permitted_count = 2; buffer_constraints.heap_permitted[0] = - fuchsia::sysmem::HeapType::GOLDFISH_DEVICE_LOCAL; + llcpp::fuchsia::sysmem::HeapType::GOLDFISH_DEVICE_LOCAL; + buffer_constraints.heap_permitted[1] = + llcpp::fuchsia::sysmem::HeapType::GOLDFISH_HOST_VISIBLE; return constraints; } @@ -1736,9 +1764,9 @@ public: uint32_t usage = 0u; VkImageUsageFlags imageUsage = pImageInfo->usage; -#define SetUsageBit(USAGE) \ - if (imageUsage & VK_IMAGE_USAGE_##USAGE##_BIT) { \ - usage |= fuchsia::sysmem::VULKAN_IMAGE_USAGE_##USAGE; \ +#define SetUsageBit(USAGE) \ + if (imageUsage & VK_IMAGE_USAGE_##USAGE##_BIT) { \ + usage |= llcpp::fuchsia::sysmem::VULKAN_IMAGE_USAGE_##USAGE; \ } SetUsageBit(COLOR_ATTACHMENT); @@ -1756,9 +1784,9 @@ public: VkBufferUsageFlags bufferUsage = pBufferConstraintsInfo->pBufferCreateInfo->usage; -#define SetUsageBit(USAGE) \ - if (bufferUsage & VK_BUFFER_USAGE_##USAGE##_BIT) { \ - usage |= fuchsia::sysmem::VULKAN_BUFFER_USAGE_##USAGE; \ +#define SetUsageBit(USAGE) \ + if (bufferUsage & VK_BUFFER_USAGE_##USAGE##_BIT) { \ + usage |= llcpp::fuchsia::sysmem::VULKAN_BUFFER_USAGE_##USAGE; \ } SetUsageBit(TRANSFER_SRC); @@ -1776,20 +1804,17 @@ public: } VkResult setBufferCollectionConstraints( - fuchsia::sysmem::BufferCollectionSyncPtr* collection, + VkEncoder* enc, VkDevice device, + llcpp::fuchsia::sysmem::BufferCollection::SyncClient* collection, const VkImageCreateInfo* pImageInfo) { if (pImageInfo == nullptr) { ALOGE("setBufferCollectionConstraints: pImageInfo cannot be null."); return VK_ERROR_OUT_OF_DEVICE_MEMORY; } - // TODO(liyl): Currently the size only works for RGBA8 and BGRA8 images. - // We should set the size based on its actual format. - fuchsia::sysmem::BufferCollectionConstraints constraints = + llcpp::fuchsia::sysmem::BufferCollectionConstraints constraints = defaultBufferCollectionConstraints( - /* min_size_bytes */ pImageInfo->extent.width * - pImageInfo->extent.height * 4, - /* buffer_count */ 1u); + /* min_size_bytes */ 0, /* buffer_count */ 1u); constraints.usage.vulkan = getBufferCollectionConstraintsVulkanImageUsage(pImageInfo); @@ -1805,11 +1830,46 @@ public: VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_R8G8B8A8_UNORM, }; + } else { + // If image format is predefined, check on host if the format, + // tiling and usage is supported. + AutoLock lock(mLock); + auto deviceIt = info_VkDevice.find(device); + if (deviceIt == info_VkDevice.end()) { + return VK_ERROR_INITIALIZATION_FAILED; + } + auto& deviceInfo = deviceIt->second; + + VkImageFormatProperties format_properties; + auto result = enc->vkGetPhysicalDeviceImageFormatProperties( + deviceInfo.physdev, pImageInfo->format, pImageInfo->imageType, + pImageInfo->tiling, pImageInfo->usage, pImageInfo->flags, &format_properties); + if (result != VK_SUCCESS) { + ALOGE( + "%s: Image format (%u) type (%u) tiling (%u) " + "usage (%u) flags (%u) not supported by physical " + "device", + __func__, static_cast<uint32_t>(pImageInfo->format), + static_cast<uint32_t>(pImageInfo->imageType), + static_cast<uint32_t>(pImageInfo->tiling), + static_cast<uint32_t>(pImageInfo->usage), + static_cast<uint32_t>(pImageInfo->flags)); + return VK_ERROR_FORMAT_NOT_SUPPORTED; + } } constraints.image_format_constraints_count = formats.size(); uint32_t format_index = 0; for (VkFormat format : formats) { - fuchsia::sysmem::ImageFormatConstraints& image_constraints = + // Get row alignment from host GPU. + VkDeviceSize offset; + VkDeviceSize rowPitchAlignment; + enc->vkGetLinearImageLayoutGOOGLE(device, format, &offset, &rowPitchAlignment); + + ALOGD("vkGetLinearImageLayoutGOOGLE: format %d offset %lu rowPitchAlignment = %lu", + (int)format, offset, rowPitchAlignment); + + llcpp::fuchsia::sysmem::ImageFormatConstraints& + image_constraints = constraints.image_format_constraints[format_index++]; switch (format) { case VK_FORMAT_B8G8R8A8_SINT: @@ -1819,7 +1879,7 @@ public: case VK_FORMAT_B8G8R8A8_SSCALED: case VK_FORMAT_B8G8R8A8_USCALED: image_constraints.pixel_format.type = - fuchsia::sysmem::PixelFormatType::BGRA32; + llcpp::fuchsia::sysmem::PixelFormatType::BGRA32; break; case VK_FORMAT_R8G8B8A8_SINT: case VK_FORMAT_R8G8B8A8_UNORM: @@ -1828,39 +1888,45 @@ public: case VK_FORMAT_R8G8B8A8_SSCALED: case VK_FORMAT_R8G8B8A8_USCALED: image_constraints.pixel_format.type = - fuchsia::sysmem::PixelFormatType::R8G8B8A8; + llcpp::fuchsia::sysmem::PixelFormatType::R8G8B8A8; break; default: return VK_ERROR_FORMAT_NOT_SUPPORTED; } image_constraints.color_spaces_count = 1; image_constraints.color_space[0].type = - fuchsia::sysmem::ColorSpaceType::SRGB; + llcpp::fuchsia::sysmem::ColorSpaceType::SRGB; image_constraints.min_coded_width = pImageInfo->extent.width; image_constraints.max_coded_width = 0xfffffff; image_constraints.min_coded_height = pImageInfo->extent.height; image_constraints.max_coded_height = 0xffffffff; - image_constraints.min_bytes_per_row = - pImageInfo->extent.width * 4; + // The min_bytes_per_row can be calculated by sysmem using + // |min_coded_width|, |bytes_per_row_divisor| and color format. + image_constraints.min_bytes_per_row = 0; image_constraints.max_bytes_per_row = 0xffffffff; image_constraints.max_coded_width_times_coded_height = 0xffffffff; image_constraints.layers = 1; image_constraints.coded_width_divisor = 1; image_constraints.coded_height_divisor = 1; - image_constraints.bytes_per_row_divisor = 1; + image_constraints.bytes_per_row_divisor = rowPitchAlignment; image_constraints.start_offset_divisor = 1; image_constraints.display_width_divisor = 1; image_constraints.display_height_divisor = 1; } } - (*collection)->SetConstraints(true, constraints); + auto result = collection->SetConstraints(true, std::move(constraints)); + if (!result.ok()) { + ALOGE("setBufferCollectionConstraints: SetConstraints failed: %d", + result.status()); + return VK_ERROR_OUT_OF_DEVICE_MEMORY; + } return VK_SUCCESS; } VkResult setBufferCollectionBufferConstraints( - fuchsia::sysmem::BufferCollectionSyncPtr* collection, + llcpp::fuchsia::sysmem::BufferCollection::SyncClient* collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo) { if (pBufferConstraintsInfo == nullptr) { ALOGE( @@ -1869,26 +1935,31 @@ public: return VK_ERROR_OUT_OF_DEVICE_MEMORY; } - fuchsia::sysmem::BufferCollectionConstraints constraints = + llcpp::fuchsia::sysmem::BufferCollectionConstraints constraints = defaultBufferCollectionConstraints( - /* min_size_bytes */ pBufferConstraintsInfo->pBufferCreateInfo - ->size, + /* min_size_bytes */ pBufferConstraintsInfo->pBufferCreateInfo->size, /* buffer_count */ pBufferConstraintsInfo->minCount); constraints.usage.vulkan = getBufferCollectionConstraintsVulkanBufferUsage( pBufferConstraintsInfo); - (*collection)->SetConstraints(true, constraints); + auto result = collection->SetConstraints(true, std::move(constraints)); + if (!result.ok()) { + ALOGE("setBufferCollectionConstraints: SetConstraints failed: %d", + result.status()); + return VK_ERROR_OUT_OF_DEVICE_MEMORY; + } return VK_SUCCESS; } VkResult on_vkSetBufferCollectionConstraintsFUCHSIA( - void*, VkResult, VkDevice, + void* context, VkResult, VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageCreateInfo* pImageInfo) { - auto sysmem_collection = - reinterpret_cast<fuchsia::sysmem::BufferCollectionSyncPtr*>(collection); - return setBufferCollectionConstraints(sysmem_collection, pImageInfo); + VkEncoder* enc = (VkEncoder*)context; + auto sysmem_collection = reinterpret_cast< + llcpp::fuchsia::sysmem::BufferCollection::SyncClient*>(collection); + return setBufferCollectionConstraints(enc, device, sysmem_collection, pImageInfo); } VkResult on_vkSetBufferCollectionBufferConstraintsFUCHSIA( @@ -1897,9 +1968,8 @@ public: VkDevice, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo) { - auto sysmem_collection = - reinterpret_cast<fuchsia::sysmem::BufferCollectionSyncPtr*>( - collection); + auto sysmem_collection = reinterpret_cast< + llcpp::fuchsia::sysmem::BufferCollection::SyncClient*>(collection); return setBufferCollectionBufferConstraints(sysmem_collection, pBufferConstraintsInfo); } @@ -1909,17 +1979,28 @@ public: VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties) { - auto sysmem_collection = reinterpret_cast<fuchsia::sysmem::BufferCollectionSyncPtr*>(collection); - fuchsia::sysmem::BufferCollectionInfo_2 info; - zx_status_t status2; - zx_status_t status = (*sysmem_collection)->WaitForBuffersAllocated(&status2, &info); - if (status != ZX_OK || status2 != ZX_OK) { - ALOGE("Failed wait for allocation: %d %d", status, status2); + auto sysmem_collection = reinterpret_cast< + llcpp::fuchsia::sysmem::BufferCollection::SyncClient*>(collection); + + auto result = sysmem_collection->WaitForBuffersAllocated(); + if (!result.ok() || result.Unwrap()->status != ZX_OK) { + ALOGE("Failed wait for allocation: %d %d", result.status(), + GET_STATUS_SAFE(result, status)); return VK_ERROR_INITIALIZATION_FAILED; } - if (!info.settings.has_image_format_constraints) { + llcpp::fuchsia::sysmem::BufferCollectionInfo_2 info = + std::move(result.Unwrap()->buffer_collection_info); + + bool is_host_visible = info.settings.buffer_settings.heap == + llcpp::fuchsia::sysmem::HeapType::GOLDFISH_HOST_VISIBLE; + bool is_device_local = info.settings.buffer_settings.heap == + llcpp::fuchsia::sysmem::HeapType::GOLDFISH_DEVICE_LOCAL; + if (!is_host_visible && !is_device_local) { + ALOGE("buffer collection uses a non-goldfish heap (type 0x%lu)", + static_cast<uint64_t>(info.settings.buffer_settings.heap)); return VK_ERROR_INITIALIZATION_FAILED; } + pProperties->count = info.buffer_count; AutoLock lock(mLock); @@ -1935,8 +2016,10 @@ public: // Device local memory type supported. pProperties->memoryTypeBits = 0; for (uint32_t i = 0; i < deviceInfo.memProps.memoryTypeCount; ++i) { - if (deviceInfo.memProps.memoryTypes[i].propertyFlags & - VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) { + if ((is_device_local && (deviceInfo.memProps.memoryTypes[i].propertyFlags & + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT)) || + (is_host_visible && (deviceInfo.memProps.memoryTypes[i].propertyFlags & + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT))) { pProperties->memoryTypeBits |= 1ull << i; } } @@ -2057,9 +2140,9 @@ public: abort(); } - struct drm_virtgpu_map map_info = { - .handle = drm_rc_blob.bo_handle, - }; + drm_virtgpu_map map_info; + memset(&map_info, 0, sizeof(map_info)); + map_info.handle = drm_rc_blob.bo_handle; res = drmIoctl(mRendernodeFd, DRM_IOCTL_VIRTGPU_MAP, &map_info); if (res) { @@ -2298,15 +2381,17 @@ public: if (importBufferCollection) { #ifdef VK_USE_PLATFORM_FUCHSIA - auto collection = reinterpret_cast<fuchsia::sysmem::BufferCollectionSyncPtr*>( + auto collection = reinterpret_cast< + llcpp::fuchsia::sysmem::BufferCollection::SyncClient*>( importBufferCollectionInfoPtr->collection); - fuchsia::sysmem::BufferCollectionInfo_2 info; - zx_status_t status2; - zx_status_t status = (*collection)->WaitForBuffersAllocated(&status2, &info); - if (status != ZX_OK || status2 != ZX_OK) { - ALOGE("WaitForBuffersAllocated failed: %d %d", status); + auto result = collection->WaitForBuffersAllocated(); + if (!result.ok() || result.Unwrap()->status != ZX_OK) { + ALOGE("WaitForBuffersAllocated failed: %d %d", result.status(), + GET_STATUS_SAFE(result, status)); return VK_ERROR_INITIALIZATION_FAILED; } + llcpp::fuchsia::sysmem::BufferCollectionInfo_2& info = + result.Unwrap()->buffer_collection_info; uint32_t index = importBufferCollectionInfoPtr->index; if (info.buffer_count < index) { ALOGE("Invalid buffer index: %d %d", index); @@ -2381,25 +2466,52 @@ public: pBufferConstraintsInfo); if (hasDedicatedImage || hasDedicatedBuffer) { - fuchsia::sysmem::BufferCollectionTokenSyncPtr token; - zx_status_t status = mSysmemAllocator->AllocateSharedCollection( - token.NewRequest()); + zx::channel token_server, token_client; + zx_status_t status = + zx::channel::create(0, &token_server, &token_client); if (status != ZX_OK) { - ALOGE("AllocateSharedCollection failed: %d", status); + ALOGE("zx_channel_create failed: %d", status); abort(); } - fuchsia::sysmem::BufferCollectionSyncPtr collection; - status = mSysmemAllocator->BindSharedCollection( - std::move(token), collection.NewRequest()); + { + auto result = mSysmemAllocator->AllocateSharedCollection( + std::move(token_server)); + if (!result.ok()) { + ALOGE("AllocateSharedCollection failed: %d", + result.status()); + abort(); + } + } + + zx::channel collection_server, collection_client; + status = zx::channel::create(0, &collection_server, + &collection_client); if (status != ZX_OK) { - ALOGE("BindSharedCollection failed: %d", status); + ALOGE("zx_channel_create failed: %d", status); abort(); } + { + auto result = mSysmemAllocator->BindSharedCollection( + std::move(token_client), std::move(collection_server)); + if (!result.ok()) { + ALOGE("BindSharedCollection failed: %d", + result.status()); + abort(); + } + } + + llcpp::fuchsia::sysmem::BufferCollection::SyncClient collection( + std::move(collection_client)); if (hasDedicatedImage) { VkResult res = setBufferCollectionConstraints( - &collection, pImageCreateInfo); + enc, device, &collection, pImageCreateInfo); + if (res == VK_ERROR_FORMAT_NOT_SUPPORTED) { + ALOGE("setBufferCollectionConstraints failed: format %u is not supported", + pImageCreateInfo->format); + return VK_ERROR_OUT_OF_DEVICE_MEMORY; + } if (res != VK_SUCCESS) { ALOGE("setBufferCollectionConstraints failed: %d", res); abort(); @@ -2416,25 +2528,30 @@ public: } } - fuchsia::sysmem::BufferCollectionInfo_2 info; - zx_status_t status2; - status = collection->WaitForBuffersAllocated(&status2, &info); - if (status == ZX_OK && status2 == ZX_OK) { - if (!info.buffer_count) { - ALOGE("WaitForBuffersAllocated returned invalid count: %d", status); - abort(); + { + auto result = collection.WaitForBuffersAllocated(); + if (result.ok() && result.Unwrap()->status == ZX_OK) { + llcpp::fuchsia::sysmem::BufferCollectionInfo_2& info = + result.Unwrap()->buffer_collection_info; + if (!info.buffer_count) { + ALOGE( + "WaitForBuffersAllocated returned " + "invalid count: %d", + info.buffer_count); + abort(); + } + vmo_handle = info.buffers[0].vmo.release(); + } else { + ALOGE("WaitForBuffersAllocated failed: %d %d", + result.status(), GET_STATUS_SAFE(result, status)); + abort(); } - vmo_handle = info.buffers[0].vmo.release(); - } else { - ALOGE("WaitForBuffersAllocated failed: %d %d", status, status2); - abort(); } - collection->Close(); + collection.Close(); zx::vmo vmo_copy; - status = zx_handle_duplicate(vmo_handle, - ZX_RIGHT_SAME_RIGHTS, + status = zx_handle_duplicate(vmo_handle, ZX_RIGHT_SAME_RIGHTS, vmo_copy.reset_and_get_address()); if (status != ZX_OK) { ALOGE("Failed to duplicate VMO: %d", status); @@ -2442,7 +2559,8 @@ public: } if (pImageCreateInfo) { - fuchsia::hardware::goldfish::ColorBufferFormatType format; + llcpp::fuchsia::hardware::goldfish::ColorBufferFormatType + format; switch (pImageCreateInfo->format) { case VK_FORMAT_B8G8R8A8_SINT: case VK_FORMAT_B8G8R8A8_UNORM: @@ -2450,7 +2568,7 @@ public: case VK_FORMAT_B8G8R8A8_SNORM: case VK_FORMAT_B8G8R8A8_SSCALED: case VK_FORMAT_B8G8R8A8_USCALED: - format = fuchsia::hardware::goldfish:: + format = llcpp::fuchsia::hardware::goldfish:: ColorBufferFormatType::BGRA; break; case VK_FORMAT_R8G8B8A8_SINT: @@ -2459,7 +2577,7 @@ public: case VK_FORMAT_R8G8B8A8_SNORM: case VK_FORMAT_R8G8B8A8_SSCALED: case VK_FORMAT_R8G8B8A8_USCALED: - format = fuchsia::hardware::goldfish:: + format = llcpp::fuchsia::hardware::goldfish:: ColorBufferFormatType::RGBA; break; default: @@ -2468,23 +2586,42 @@ public: abort(); } - status = mControlDevice->CreateColorBuffer( - std::move(vmo_copy), pImageCreateInfo->extent.width, - pImageCreateInfo->extent.height, format, &status2); - if (status != ZX_OK || status2 != ZX_OK) { - ALOGE("CreateColorBuffer failed: %d:%d", status, - status2); - abort(); + auto createParams = + llcpp::fuchsia::hardware::goldfish::CreateColorBuffer2Params::Builder( + std::make_unique<llcpp::fuchsia::hardware::goldfish:: + CreateColorBuffer2Params::Frame>()) + .set_width(std::make_unique<uint32_t>(pImageCreateInfo->extent.width)) + .set_height(std::make_unique<uint32_t>(pImageCreateInfo->extent.height)) + .set_format(std::make_unique< + llcpp::fuchsia::hardware::goldfish::ColorBufferFormatType>( + format)) + .set_memory_property(std::make_unique<uint32_t>( + llcpp::fuchsia::hardware::goldfish::MEMORY_PROPERTY_DEVICE_LOCAL)) + .build(); + + auto result = mControlDevice->CreateColorBuffer2(std::move(vmo_copy), + std::move(createParams)); + if (!result.ok() || result.Unwrap()->res != ZX_OK) { + if (result.ok() && + result.Unwrap()->res == ZX_ERR_ALREADY_EXISTS) { + ALOGD("CreateColorBuffer: color buffer already " + "exists\n"); + } else { + ALOGE("CreateColorBuffer failed: %d:%d", + result.status(), + GET_STATUS_SAFE(result, res)); + abort(); + } } } if (pBufferConstraintsInfo) { - status = mControlDevice->CreateBuffer( + auto result = mControlDevice->CreateBuffer( std::move(vmo_copy), - pBufferConstraintsInfo->pBufferCreateInfo->size, - &status2); - if (status != ZX_OK || status2 != ZX_OK) { - ALOGE("CreateBuffer failed: %d:%d", status, status2); + pBufferConstraintsInfo->pBufferCreateInfo->size); + if (!result.ok() || result.Unwrap()->res != ZX_OK) { + ALOGE("CreateBuffer failed: %d:%d", result.status(), + GET_STATUS_SAFE(result, res)); abort(); } } @@ -2502,23 +2639,23 @@ public: } zx_status_t status2 = ZX_OK; - fuchsia::hardware::goldfish::BufferHandleType handle_type; - uint32_t buffer_handle; - - status = mControlDevice->GetBufferHandle(std::move(vmo_copy), - &status2, &buffer_handle, - &handle_type); - if (status != ZX_OK || status2 != ZX_OK) { - ALOGE("GetBufferHandle failed: %d:%d", status, status2); - } - - if (handle_type == - fuchsia::hardware::goldfish::BufferHandleType::BUFFER) { - importBufferInfo.buffer = buffer_handle; - vk_append_struct(&structChainIter, &importBufferInfo); + auto result = mControlDevice->GetBufferHandle(std::move(vmo_copy)); + if (!result.ok() || result.Unwrap()->res != ZX_OK) { + ALOGE("GetBufferHandle failed: %d:%d", result.status(), + GET_STATUS_SAFE(result, res)); } else { - importCbInfo.colorBuffer = buffer_handle; - vk_append_struct(&structChainIter, &importCbInfo); + llcpp::fuchsia::hardware::goldfish::BufferHandleType + handle_type = result.Unwrap()->type; + uint32_t buffer_handle = result.Unwrap()->id; + + if (handle_type == llcpp::fuchsia::hardware::goldfish:: + BufferHandleType::BUFFER) { + importBufferInfo.buffer = buffer_handle; + vk_append_struct(&structChainIter, &importBufferInfo); + } else { + importCbInfo.colorBuffer = buffer_handle; + vk_append_struct(&structChainIter, &importCbInfo); + } } } #endif @@ -2554,12 +2691,44 @@ public: abort(); } +#ifdef VK_USE_PLATFORM_FUCHSIA if (vmo_handle != ZX_HANDLE_INVALID) { - ALOGE("%s: Host visible export/import allocation " - "of VMO is not supported yet.", - __func__); - abort(); + input_result = enc->vkAllocateMemory(device, &finalAllocInfo, pAllocator, pMemory); + + // Get VMO handle rights, and only use allowed rights to map the + // host memory. + zx_info_handle_basic handle_info; + zx_status_t status = zx_object_get_info(vmo_handle, ZX_INFO_HANDLE_BASIC, &handle_info, + sizeof(handle_info), nullptr, nullptr); + if (status != ZX_OK) { + ALOGE("%s: cannot get vmo object info: vmo = %u status: %d.", __func__, vmo_handle, + status); + return VK_ERROR_OUT_OF_HOST_MEMORY; + } + + zx_vm_option_t vm_permission = 0u; + vm_permission |= (handle_info.rights & ZX_RIGHT_READ) ? ZX_VM_PERM_READ : 0; + vm_permission |= (handle_info.rights & ZX_RIGHT_WRITE) ? ZX_VM_PERM_WRITE : 0; + + zx_paddr_t addr; + status = zx_vmar_map(zx_vmar_root_self(), vm_permission, 0, vmo_handle, 0, + finalAllocInfo.allocationSize, &addr); + if (status != ZX_OK) { + ALOGE("%s: cannot map vmar: status %d.", __func__, status); + return VK_ERROR_OUT_OF_HOST_MEMORY; + } + + D("host visible alloc (external): " + "size 0x%llx host ptr %p mapped size 0x%llx", + (unsigned long long)finalAllocInfo.allocationSize, mappedPtr, + (unsigned long long)mappedSize); + setDeviceMemoryInfo(device, *pMemory, + finalAllocInfo.allocationSize, finalAllocInfo.allocationSize, + reinterpret_cast<uint8_t*>(addr), finalAllocInfo.memoryTypeIndex, + /*ahw=*/nullptr, vmo_handle); + return VK_SUCCESS; } +#endif // Host visible memory, non external bool directMappingSupported = usingDirectMapping(); @@ -2655,6 +2824,17 @@ public: if (it == info_VkDeviceMemory.end()) return; auto& info = it->second; +#ifdef VK_USE_PLATFORM_FUCHSIA + if (info.vmoHandle && info.mappedPtr) { + zx_status_t status = zx_vmar_unmap( + zx_vmar_root_self(), reinterpret_cast<zx_paddr_t>(info.mappedPtr), info.mappedSize); + if (status != ZX_OK) { + ALOGE("%s: Cannot unmap mappedPtr: status %d", status); + } + info.mappedPtr = nullptr; + } +#endif + if (!info.directMapped) { lock.unlock(); VkEncoder* enc = (VkEncoder*)context; @@ -2893,35 +3073,90 @@ public: const VkBufferCollectionImageCreateInfoFUCHSIA* extBufferCollectionPtr = vk_find_struct<VkBufferCollectionImageCreateInfoFUCHSIA>(pCreateInfo); bool isSysmemBackedMemory = false; + + if (extImgCiPtr && + (extImgCiPtr->handleTypes & + VK_EXTERNAL_MEMORY_HANDLE_TYPE_TEMP_ZIRCON_VMO_BIT_FUCHSIA)) { + isSysmemBackedMemory = true; + } + if (extBufferCollectionPtr) { - auto collection = reinterpret_cast<fuchsia::sysmem::BufferCollectionSyncPtr*>( + auto collection = reinterpret_cast< + llcpp::fuchsia::sysmem::BufferCollection::SyncClient*>( extBufferCollectionPtr->collection); uint32_t index = extBufferCollectionPtr->index; zx::vmo vmo; - fuchsia::sysmem::BufferCollectionInfo_2 info; - zx_status_t status2; - zx_status_t status = (*collection)->WaitForBuffersAllocated(&status2, &info); - if (status == ZX_OK && status2 == ZX_OK) { + llcpp::fuchsia::sysmem::BufferCollectionInfo_2 info; + + auto result = collection->WaitForBuffersAllocated(); + if (result.ok() && result.Unwrap()->status == ZX_OK) { + info = std::move(result.Unwrap()->buffer_collection_info); if (index < info.buffer_count && info.settings.has_image_format_constraints) { vmo = std::move(info.buffers[index].vmo); } } else { - ALOGE("WaitForBuffersAllocated failed: %d %d", status, status2); + ALOGE("WaitForBuffersAllocated failed: %d %d", result.status(), + GET_STATUS_SAFE(result, status)); } if (vmo.is_valid()) { - zx_status_t status2 = ZX_OK; - status = mControlDevice->CreateColorBuffer( - std::move(vmo), - info.settings.image_format_constraints.min_coded_width, - info.settings.image_format_constraints.min_coded_height, - info.settings.image_format_constraints.pixel_format.type == fuchsia::sysmem::PixelFormatType::R8G8B8A8 - ? fuchsia::hardware::goldfish::ColorBufferFormatType::RGBA - : fuchsia::hardware::goldfish::ColorBufferFormatType::BGRA, - &status2); - if (status != ZX_OK || (status2 != ZX_OK && status2 != ZX_ERR_ALREADY_EXISTS)) { - ALOGE("CreateColorBuffer failed: %d:%d", status, status2); + zx::vmo vmo_dup; + if (zx_status_t status = vmo.duplicate(ZX_RIGHT_SAME_RIGHTS, &vmo_dup); + status != ZX_OK) { + ALOGE("%s: zx_vmo_duplicate failed: %d", __func__, status); + abort(); + } + + auto buffer_handle_result = mControlDevice->GetBufferHandle(std::move(vmo_dup)); + if (!buffer_handle_result.ok()) { + ALOGE("%s: GetBufferHandle FIDL error: %d", __func__, + buffer_handle_result.status()); + abort(); + } + if (buffer_handle_result.value().res == ZX_OK) { + // Buffer handle already exists. + // If it is a ColorBuffer, no-op; Otherwise return error. + if (buffer_handle_result.value().type != + llcpp::fuchsia::hardware::goldfish::BufferHandleType::COLOR_BUFFER) { + ALOGE("%s: BufferHandle %u is not a ColorBuffer", __func__, + buffer_handle_result.value().id); + return VK_ERROR_OUT_OF_HOST_MEMORY; + } + } else if (buffer_handle_result.value().res == ZX_ERR_NOT_FOUND) { + // Buffer handle not found. Create ColorBuffer based on buffer settings. + auto format = + info.settings.image_format_constraints.pixel_format.type == + llcpp::fuchsia::sysmem::PixelFormatType::R8G8B8A8 + ? llcpp::fuchsia::hardware::goldfish::ColorBufferFormatType::RGBA + : llcpp::fuchsia::hardware::goldfish::ColorBufferFormatType::BGRA; + + uint32_t memory_property = + info.settings.buffer_settings.heap == + llcpp::fuchsia::sysmem::HeapType::GOLDFISH_DEVICE_LOCAL + ? llcpp::fuchsia::hardware::goldfish::MEMORY_PROPERTY_DEVICE_LOCAL + : llcpp::fuchsia::hardware::goldfish::MEMORY_PROPERTY_HOST_VISIBLE; + + auto createParams = + llcpp::fuchsia::hardware::goldfish::CreateColorBuffer2Params::Builder( + std::make_unique<llcpp::fuchsia::hardware::goldfish:: + CreateColorBuffer2Params::Frame>()) + .set_width(std::make_unique<uint32_t>( + info.settings.image_format_constraints.min_coded_width)) + .set_height(std::make_unique<uint32_t>( + info.settings.image_format_constraints.min_coded_height)) + .set_format(std::make_unique< + llcpp::fuchsia::hardware::goldfish::ColorBufferFormatType>( + format)) + .set_memory_property(std::make_unique<uint32_t>(memory_property)) + .build(); + + auto result = + mControlDevice->CreateColorBuffer2(std::move(vmo), std::move(createParams)); + if (!result.ok() || result.Unwrap()->res != ZX_OK) { + ALOGE("CreateColorBuffer failed: %d:%d", result.status(), + GET_STATUS_SAFE(result, res)); + } } } isSysmemBackedMemory = true; @@ -3733,37 +3968,44 @@ public: Optional<zx::vmo> vmo; bool isSysmemBackedMemory = false; + const VkExternalMemoryBufferCreateInfo* extBufCiPtr = + vk_find_struct<VkExternalMemoryBufferCreateInfo>(pCreateInfo); + if (extBufCiPtr && + (extBufCiPtr->handleTypes & + VK_EXTERNAL_MEMORY_HANDLE_TYPE_TEMP_ZIRCON_VMO_BIT_FUCHSIA)) { + isSysmemBackedMemory = true; + } + const auto* extBufferCollectionPtr = vk_find_struct<VkBufferCollectionBufferCreateInfoFUCHSIA>( pCreateInfo); if (extBufferCollectionPtr) { - auto collection = - reinterpret_cast<fuchsia::sysmem::BufferCollectionSyncPtr*>( - extBufferCollectionPtr->collection); + auto collection = reinterpret_cast< + llcpp::fuchsia::sysmem::BufferCollection::SyncClient*>( + extBufferCollectionPtr->collection); uint32_t index = extBufferCollectionPtr->index; - fuchsia::sysmem::BufferCollectionInfo_2 info; - zx_status_t status2; - zx_status_t status = - (*collection)->WaitForBuffersAllocated(&status2, &info); - - if (status == ZX_OK && status2 == ZX_OK) { + auto result = collection->WaitForBuffersAllocated(); + if (result.ok() && result.Unwrap()->status == ZX_OK) { + auto& info = result.Unwrap()->buffer_collection_info; if (index < info.buffer_count) { vmo = android::base::makeOptional( std::move(info.buffers[index].vmo)); } } else { - ALOGE("WaitForBuffersAllocated failed: %d %d", status, status2); + ALOGE("WaitForBuffersAllocated failed: %d %d", result.status(), + GET_STATUS_SAFE(result, status)); } if (vmo && vmo->is_valid()) { - zx_status_t status2 = ZX_OK; - status = mControlDevice->CreateBuffer( - std::move(*vmo), pCreateInfo->size, &status2); - if (status != ZX_OK || - (status2 != ZX_OK && status2 != ZX_ERR_ALREADY_EXISTS)) { - ALOGE("CreateBuffer failed: %d:%d", status, status2); + auto result = mControlDevice->CreateBuffer(std::move(*vmo), + pCreateInfo->size); + if (!result.ok() || + (result.Unwrap()->res != ZX_OK && + result.Unwrap()->res != ZX_ERR_ALREADY_EXISTS)) { + ALOGE("CreateBuffer failed: %d:%d", result.status(), + GET_STATUS_SAFE(result, res)); } isSysmemBackedMemory = true; } @@ -4583,6 +4825,35 @@ public: VkEncoder* enc = (VkEncoder*)context; (void)input_result; +#ifdef VK_USE_PLATFORM_FUCHSIA + + constexpr VkFormat kExternalImageSupportedFormats[] = { + VK_FORMAT_B8G8R8A8_SINT, + VK_FORMAT_B8G8R8A8_UNORM, + VK_FORMAT_B8G8R8A8_SRGB, + VK_FORMAT_B8G8R8A8_SNORM, + VK_FORMAT_B8G8R8A8_SSCALED, + VK_FORMAT_B8G8R8A8_USCALED, + VK_FORMAT_R8G8B8A8_SINT, + VK_FORMAT_R8G8B8A8_UNORM, + VK_FORMAT_R8G8B8A8_SRGB, + VK_FORMAT_R8G8B8A8_SNORM, + VK_FORMAT_R8G8B8A8_SSCALED, + VK_FORMAT_R8G8B8A8_USCALED, + }; + + VkExternalImageFormatProperties* ext_img_properties = + vk_find_struct<VkExternalImageFormatProperties>(pImageFormatProperties); + + if (ext_img_properties) { + if (std::find(std::begin(kExternalImageSupportedFormats), + std::end(kExternalImageSupportedFormats), + pImageFormatInfo->format) == std::end(kExternalImageSupportedFormats)) { + return VK_ERROR_FORMAT_NOT_SUPPORTED; + } + } +#endif + VkAndroidHardwareBufferUsageANDROID* output_ahw_usage = vk_find_struct<VkAndroidHardwareBufferUsageANDROID>(pImageFormatProperties); @@ -4663,48 +4934,39 @@ public: auto& info = it->second; - if (!info.lastUsedEncoderPtr) { - info.lastUsedEncoderPtr = new VkEncoder*; - *(info.lastUsedEncoderPtr) = currentEncoder; - } - - auto lastUsedEncoderPtr = info.lastUsedEncoderPtr; - - auto lastEncoder = *(lastUsedEncoderPtr); - - // We always make lastUsedEncoderPtr track - // the current encoder, even if the last encoder - // is null. - *(lastUsedEncoderPtr) = currentEncoder; + currentEncoder->incRef(); + auto lastEncoder = info.lastUsedEncoder; + info.lastUsedEncoder = currentEncoder; if (!lastEncoder) return 0; - if (lastEncoder == currentEncoder) return 0; - auto oldSeq = info.sequenceNumber; + bool lookupAgain = false; - lock.unlock(); + if (lastEncoder != currentEncoder) { + info.sequenceNumber += 2; + lookupAgain = true; + lock.unlock(); - lastEncoder->vkCommandBufferHostSyncGOOGLE(commandBuffer, false, oldSeq + 1); - lastEncoder->flush(); - currentEncoder->vkCommandBufferHostSyncGOOGLE(commandBuffer, true, oldSeq + 2); + lastEncoder->vkCommandBufferHostSyncGOOGLE(commandBuffer, false, oldSeq + 1); + lastEncoder->flush(); - unregisterEncoderCleanupCallback(lastEncoder, commandBuffer); + currentEncoder->vkCommandBufferHostSyncGOOGLE(commandBuffer, true, oldSeq + 2); - registerEncoderCleanupCallback(currentEncoder, commandBuffer, [this, currentEncoder, commandBuffer]() { - AutoLock lock(mLock); - auto it = info_VkCommandBuffer.find(commandBuffer); - if (it == info_VkCommandBuffer.end()) return; - - auto& info = it->second; - if (!info.lastUsedEncoderPtr) return; - if (!*(info.lastUsedEncoderPtr)) return; + lock.lock(); + } - if (currentEncoder == *(info.lastUsedEncoderPtr)) { - *(info.lastUsedEncoderPtr) = nullptr; + if (lastEncoder->decRef()) { + if (lookupAgain) { + auto it2 = info_VkCommandBuffer.find(commandBuffer); + if (it2 == info_VkCommandBuffer.end()) return 0; + auto& info2 = it2->second; + info2.lastUsedEncoder = nullptr; + } else { + info.lastUsedEncoder = nullptr; } - }); + } - return 1; + return 0; } uint32_t syncEncodersForQueue(VkQueue queue, VkEncoder* currentEncoder) { @@ -4719,52 +4981,38 @@ public: auto& info = it->second; - if (!info.lastUsedEncoderPtr) { - info.lastUsedEncoderPtr = new VkEncoder*; - *(info.lastUsedEncoderPtr) = currentEncoder; - } - - auto lastUsedEncoderPtr = info.lastUsedEncoderPtr; - - auto lastEncoder = *(lastUsedEncoderPtr); - - // We always make lastUsedEncoderPtr track - // the current encoder, even if the last encoder - // is null. - *(lastUsedEncoderPtr) = currentEncoder; + currentEncoder->incRef(); + auto lastEncoder = info.lastUsedEncoder; + info.lastUsedEncoder = currentEncoder; if (!lastEncoder) return 0; - if (lastEncoder == currentEncoder) return 0; - auto oldSeq = info.sequenceNumber; + bool lookupAgain = false; - info.sequenceNumber += 2; - - lock.unlock(); - - // at this point the seqno for the old thread is determined - - lastEncoder->vkQueueHostSyncGOOGLE(queue, false, oldSeq + 1); - lastEncoder->flush(); - currentEncoder->vkQueueHostSyncGOOGLE(queue, true, oldSeq + 2); - - unregisterEncoderCleanupCallback(lastEncoder, queue); + if (lastEncoder != currentEncoder) { + info.sequenceNumber += 2; + lookupAgain = true; + lock.unlock(); - registerEncoderCleanupCallback(currentEncoder, queue, [this, currentEncoder, queue]() { - AutoLock lock(mLock); - auto it = info_VkQueue.find(queue); - if (it == info_VkQueue.end()) return; + lastEncoder->vkQueueHostSyncGOOGLE(queue, false, oldSeq + 1); + lastEncoder->flush(); + currentEncoder->vkQueueHostSyncGOOGLE(queue, true, oldSeq + 2); - auto& info = it->second; - if (!info.lastUsedEncoderPtr) return; - if (!*(info.lastUsedEncoderPtr)) return; + lock.lock(); + } - if (currentEncoder == *(info.lastUsedEncoderPtr)) { - *(info.lastUsedEncoderPtr) = nullptr; + if (lastEncoder->decRef()) { + if (lookupAgain) { + auto it2 = info_VkQueue.find(queue); + if (it2 == info_VkQueue.end()) return 0; + auto& info2 = it2->second; + info2.lastUsedEncoder = nullptr; + } else { + info.lastUsedEncoder = nullptr; } - }); + } - return 1; + return 0; } VkResult on_vkBeginCommandBuffer( @@ -4904,8 +5152,11 @@ private: #endif #ifdef VK_USE_PLATFORM_FUCHSIA - fuchsia::hardware::goldfish::ControlDeviceSyncPtr mControlDevice; - fuchsia::sysmem::AllocatorSyncPtr mSysmemAllocator; + std::unique_ptr< + llcpp::fuchsia::hardware::goldfish::ControlDevice::SyncClient> + mControlDevice; + std::unique_ptr<llcpp::fuchsia::sysmem::Allocator::SyncClient> + mSysmemAllocator; #endif WorkPool mWorkPool { 4 }; diff --git a/system/vulkan_enc/VkEncoder.cpp b/system/vulkan_enc/VkEncoder.cpp index 0eeba153..8f16a528 100644 --- a/system/vulkan_enc/VkEncoder.cpp +++ b/system/vulkan_enc/VkEncoder.cpp @@ -59,105 +59,7 @@ using android::base::guest::AutoLock; using android::base::guest::Lock; using android::base::Pool; -class VkEncoder::Impl { -public: - Impl(IOStream* stream) : m_stream(stream), m_logEncodes(false) { - const char* emuVkLogEncodesPropName = "qemu.vk.log"; - char encodeProp[PROPERTY_VALUE_MAX]; - if (property_get(emuVkLogEncodesPropName, encodeProp, nullptr) > 0) { - m_logEncodes = atoi(encodeProp) > 0; - } - } - - ~Impl() { } - - VulkanCountingStream* countingStream() { return &m_countingStream; } - VulkanStreamGuest* stream() { return &m_stream; } - Pool* pool() { return &m_pool; } - ResourceTracker* resources() { return ResourceTracker::get(); } - Validation* validation() { return &m_validation; } - - void log(const char* text) { - if (!m_logEncodes) return; - ALOGD("encoder log: %s", text); - } - - void flush() { - lock(); - m_stream.flush(); - unlock(); - } - - // can be recursive - void lock() { - if (this == sAcquiredEncoderThreadLocal) { - ++sAcquiredEncoderThreadLockLevels; - return; // recursive - } - while (mLock.test_and_set(std::memory_order_acquire)); - sAcquiredEncoderThreadLocal = this; - sAcquiredEncoderThreadLockLevels = 1; - } - - void unlock() { - if (this != sAcquiredEncoderThreadLocal) { - // error, trying to unlock without having locked first - return; - } - - --sAcquiredEncoderThreadLockLevels; - if (0 == sAcquiredEncoderThreadLockLevels) { - mLock.clear(std::memory_order_release); - sAcquiredEncoderThreadLocal = nullptr; - } - } - -private: - VulkanCountingStream m_countingStream; - VulkanStreamGuest m_stream; - Pool m_pool { 8, 4096, 64 }; - - Validation m_validation; - bool m_logEncodes; - std::atomic_flag mLock = ATOMIC_FLAG_INIT; - static thread_local Impl* sAcquiredEncoderThreadLocal; - static thread_local uint32_t sAcquiredEncoderThreadLockLevels; -}; - -VkEncoder::~VkEncoder() { - auto rt = ResourceTracker::get(); - if (!rt) return; - rt->onEncoderDeleted(this); -} - -// static -thread_local VkEncoder::Impl* VkEncoder::Impl::sAcquiredEncoderThreadLocal = nullptr; -thread_local uint32_t VkEncoder::Impl::sAcquiredEncoderThreadLockLevels = 0; - -struct EncoderAutoLock { - EncoderAutoLock(VkEncoder* enc) : mEnc(enc) { - mEnc->lock(); - } - ~EncoderAutoLock() { - mEnc->unlock(); - } - VkEncoder* mEnc; -}; - -VkEncoder::VkEncoder(IOStream *stream) : - mImpl(new VkEncoder::Impl(stream)) { } - -void VkEncoder::flush() { - mImpl->flush(); -} - -void VkEncoder::lock() { - mImpl->lock(); -} - -void VkEncoder::unlock() { - mImpl->unlock(); -} +#include "VkEncoder.cpp.inl" #define VALIDATE_RET(retType, success, validate) \ retType goldfish_vk_validateResult = validate; \ @@ -174,7 +76,6 @@ VkResult VkEncoder::vkCreateInstance( VkInstance* pInstance) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateInstance encode"); mImpl->log("start vkCreateInstance"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -236,13 +137,11 @@ VkResult VkEncoder::vkCreateInstance( stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1); stream->write((uint64_t*)&cgen_var_3, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateInstance readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_4; stream->read((uint64_t*)&cgen_var_4, 8); stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateInstance returnUnmarshal"); VkResult vkCreateInstance_VkResult_return = (VkResult)0; stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult)); mImpl->resources()->on_vkCreateInstance(this, vkCreateInstance_VkResult_return, pCreateInfo, pAllocator, pInstance); @@ -258,7 +157,6 @@ void VkEncoder::vkDestroyInstance( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyInstance encode"); mImpl->log("start vkDestroyInstance"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -307,8 +205,6 @@ void VkEncoder::vkDestroyInstance( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyInstance readParams"); - AEMU_SCOPED_TRACE("vkDestroyInstance returnUnmarshal"); resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance); pool->freeAll(); countingStream->clearPool(); @@ -322,7 +218,6 @@ VkResult VkEncoder::vkEnumeratePhysicalDevices( VkPhysicalDevice* pPhysicalDevices) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices encode"); mImpl->log("start vkEnumeratePhysicalDevices"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -387,7 +282,6 @@ VkResult VkEncoder::vkEnumeratePhysicalDevices( } } stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices readParams"); // WARNING PTR CHECK uint32_t* check_pPhysicalDeviceCount; check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -418,7 +312,6 @@ VkResult VkEncoder::vkEnumeratePhysicalDevices( } } stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices returnUnmarshal"); VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0; stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -433,7 +326,6 @@ void VkEncoder::vkGetPhysicalDeviceFeatures( VkPhysicalDeviceFeatures* pFeatures) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures encode"); mImpl->log("start vkGetPhysicalDeviceFeatures"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -458,13 +350,11 @@ void VkEncoder::vkGetPhysicalDeviceFeatures( stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1); stream->write((uint64_t*)&cgen_var_21, 1 * 8); marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures readParams"); unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures)); if (pFeatures) { transform_fromhost_VkPhysicalDeviceFeatures(mImpl->resources(), (VkPhysicalDeviceFeatures*)(pFeatures)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -477,7 +367,6 @@ void VkEncoder::vkGetPhysicalDeviceFormatProperties( VkFormatProperties* pFormatProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties encode"); mImpl->log("start vkGetPhysicalDeviceFormatProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -506,13 +395,11 @@ void VkEncoder::vkGetPhysicalDeviceFormatProperties( stream->write((uint64_t*)&cgen_var_23, 1 * 8); stream->write((VkFormat*)&local_format, sizeof(VkFormat)); marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties readParams"); unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties)); if (pFormatProperties) { transform_fromhost_VkFormatProperties(mImpl->resources(), (VkFormatProperties*)(pFormatProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -529,7 +416,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties( VkImageFormatProperties* pImageFormatProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties encode"); mImpl->log("start vkGetPhysicalDeviceImageFormatProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -574,13 +460,11 @@ VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties( stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags)); stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags)); marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties readParams"); unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties)); if (pImageFormatProperties) { transform_fromhost_VkImageFormatProperties(mImpl->resources(), (VkImageFormatProperties*)(pImageFormatProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties returnUnmarshal"); VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -595,7 +479,6 @@ void VkEncoder::vkGetPhysicalDeviceProperties( VkPhysicalDeviceProperties* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties encode"); mImpl->log("start vkGetPhysicalDeviceProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -620,13 +503,11 @@ void VkEncoder::vkGetPhysicalDeviceProperties( stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1); stream->write((uint64_t*)&cgen_var_27, 1 * 8); marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties readParams"); unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties)); if (pProperties) { transform_fromhost_VkPhysicalDeviceProperties(mImpl->resources(), (VkPhysicalDeviceProperties*)(pProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties returnUnmarshal"); mImpl->resources()->on_vkGetPhysicalDeviceProperties(this, physicalDevice, pProperties); pool->freeAll(); countingStream->clearPool(); @@ -640,7 +521,6 @@ void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties( VkQueueFamilyProperties* pQueueFamilyProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties encode"); mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -697,7 +577,6 @@ void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties( marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties readParams"); // WARNING PTR CHECK uint32_t* check_pQueueFamilyPropertyCount; check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -730,7 +609,6 @@ void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties( transform_fromhost_VkQueueFamilyProperties(mImpl->resources(), (VkQueueFamilyProperties*)(pQueueFamilyProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -742,7 +620,6 @@ void VkEncoder::vkGetPhysicalDeviceMemoryProperties( VkPhysicalDeviceMemoryProperties* pMemoryProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties encode"); mImpl->log("start vkGetPhysicalDeviceMemoryProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -767,13 +644,11 @@ void VkEncoder::vkGetPhysicalDeviceMemoryProperties( stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1); stream->write((uint64_t*)&cgen_var_37, 1 * 8); marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties readParams"); unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties)); if (pMemoryProperties) { transform_fromhost_VkPhysicalDeviceMemoryProperties(mImpl->resources(), (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties returnUnmarshal"); mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties(this, physicalDevice, pMemoryProperties); pool->freeAll(); countingStream->clearPool(); @@ -786,7 +661,6 @@ PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr( const char* pName) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetInstanceProcAddr encode"); mImpl->log("start vkGetInstanceProcAddr"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -817,8 +691,6 @@ PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr( stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1); stream->write((uint64_t*)&cgen_var_39, 1 * 8); stream->putString(local_pName); - AEMU_SCOPED_TRACE("vkGetInstanceProcAddr readParams"); - AEMU_SCOPED_TRACE("vkGetInstanceProcAddr returnUnmarshal"); PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0; stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction)); pool->freeAll(); @@ -833,7 +705,6 @@ PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr( const char* pName) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDeviceProcAddr encode"); mImpl->log("start vkGetDeviceProcAddr"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -864,8 +735,6 @@ PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr( stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1); stream->write((uint64_t*)&cgen_var_41, 1 * 8); stream->putString(local_pName); - AEMU_SCOPED_TRACE("vkGetDeviceProcAddr readParams"); - AEMU_SCOPED_TRACE("vkGetDeviceProcAddr returnUnmarshal"); PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0; stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction)); pool->freeAll(); @@ -882,7 +751,6 @@ VkResult VkEncoder::vkCreateDevice( VkDevice* pDevice) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateDevice encode"); mImpl->log("start vkCreateDevice"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -952,13 +820,11 @@ VkResult VkEncoder::vkCreateDevice( stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1); stream->write((uint64_t*)&cgen_var_47, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateDevice readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_48; stream->read((uint64_t*)&cgen_var_48, 8); stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateDevice returnUnmarshal"); VkResult vkCreateDevice_VkResult_return = (VkResult)0; stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult)); mImpl->resources()->on_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice); @@ -974,7 +840,6 @@ void VkEncoder::vkDestroyDevice( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyDevice encode"); mImpl->log("start vkDestroyDevice"); mImpl->resources()->on_vkDestroyDevice_pre(this, device, pAllocator); auto stream = mImpl->stream(); @@ -1024,8 +889,6 @@ void VkEncoder::vkDestroyDevice( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyDevice readParams"); - AEMU_SCOPED_TRACE("vkDestroyDevice returnUnmarshal"); resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device); stream->flush(); pool->freeAll(); @@ -1040,7 +903,6 @@ VkResult VkEncoder::vkEnumerateInstanceExtensionProperties( VkExtensionProperties* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties encode"); mImpl->log("start vkEnumerateInstanceExtensionProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -1123,7 +985,6 @@ VkResult VkEncoder::vkEnumerateInstanceExtensionProperties( marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -1156,7 +1017,6 @@ VkResult VkEncoder::vkEnumerateInstanceExtensionProperties( transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties returnUnmarshal"); VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0; stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -1173,7 +1033,6 @@ VkResult VkEncoder::vkEnumerateDeviceExtensionProperties( VkExtensionProperties* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties encode"); mImpl->log("start vkEnumerateDeviceExtensionProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -1264,7 +1123,6 @@ VkResult VkEncoder::vkEnumerateDeviceExtensionProperties( marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -1297,7 +1155,6 @@ VkResult VkEncoder::vkEnumerateDeviceExtensionProperties( transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties returnUnmarshal"); VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0; stream->read(&vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -1312,7 +1169,6 @@ VkResult VkEncoder::vkEnumerateInstanceLayerProperties( VkLayerProperties* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties encode"); mImpl->log("start vkEnumerateInstanceLayerProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -1361,7 +1217,6 @@ VkResult VkEncoder::vkEnumerateInstanceLayerProperties( marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -1394,7 +1249,6 @@ VkResult VkEncoder::vkEnumerateInstanceLayerProperties( transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties returnUnmarshal"); VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0; stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -1410,7 +1264,6 @@ VkResult VkEncoder::vkEnumerateDeviceLayerProperties( VkLayerProperties* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties encode"); mImpl->log("start vkEnumerateDeviceLayerProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -1467,7 +1320,6 @@ VkResult VkEncoder::vkEnumerateDeviceLayerProperties( marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -1500,7 +1352,6 @@ VkResult VkEncoder::vkEnumerateDeviceLayerProperties( transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties returnUnmarshal"); VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0; stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -1517,7 +1368,6 @@ void VkEncoder::vkGetDeviceQueue( VkQueue* pQueue) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDeviceQueue encode"); mImpl->log("start vkGetDeviceQueue"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -1556,13 +1406,11 @@ void VkEncoder::vkGetDeviceQueue( stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_88, 1); stream->write((uint64_t*)&cgen_var_88, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkGetDeviceQueue readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_89; stream->read((uint64_t*)&cgen_var_89, 8); stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_89, (VkQueue*)pQueue, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkGetDeviceQueue returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -1576,7 +1424,6 @@ VkResult VkEncoder::vkQueueSubmit( VkFence fence) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkQueueSubmit encode"); mImpl->log("start vkQueueSubmit"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -1636,8 +1483,6 @@ VkResult VkEncoder::vkQueueSubmit( uint64_t cgen_var_93; stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_93, 1); stream->write((uint64_t*)&cgen_var_93, 1 * 8); - AEMU_SCOPED_TRACE("vkQueueSubmit readParams"); - AEMU_SCOPED_TRACE("vkQueueSubmit returnUnmarshal"); VkResult vkQueueSubmit_VkResult_return = (VkResult)0; stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -1651,7 +1496,6 @@ VkResult VkEncoder::vkQueueWaitIdle( VkQueue queue) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkQueueWaitIdle encode"); mImpl->log("start vkQueueWaitIdle"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -1674,8 +1518,6 @@ VkResult VkEncoder::vkQueueWaitIdle( uint64_t cgen_var_95; stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_95, 1); stream->write((uint64_t*)&cgen_var_95, 1 * 8); - AEMU_SCOPED_TRACE("vkQueueWaitIdle readParams"); - AEMU_SCOPED_TRACE("vkQueueWaitIdle returnUnmarshal"); VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0; stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -1689,7 +1531,6 @@ VkResult VkEncoder::vkDeviceWaitIdle( VkDevice device) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDeviceWaitIdle encode"); mImpl->log("start vkDeviceWaitIdle"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -1712,8 +1553,6 @@ VkResult VkEncoder::vkDeviceWaitIdle( uint64_t cgen_var_97; stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_97, 1); stream->write((uint64_t*)&cgen_var_97, 1 * 8); - AEMU_SCOPED_TRACE("vkDeviceWaitIdle readParams"); - AEMU_SCOPED_TRACE("vkDeviceWaitIdle returnUnmarshal"); VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0; stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -1730,7 +1569,6 @@ VkResult VkEncoder::vkAllocateMemory( VkDeviceMemory* pMemory) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkAllocateMemory encode"); mImpl->log("start vkAllocateMemory"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -1800,13 +1638,11 @@ VkResult VkEncoder::vkAllocateMemory( stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_103, 1); stream->write((uint64_t*)&cgen_var_103, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkAllocateMemory readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_104; stream->read((uint64_t*)&cgen_var_104, 8); stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_104, (VkDeviceMemory*)pMemory, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkAllocateMemory returnUnmarshal"); VkResult vkAllocateMemory_VkResult_return = (VkResult)0; stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -1822,7 +1658,6 @@ void VkEncoder::vkFreeMemory( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkFreeMemory encode"); mImpl->log("start vkFreeMemory"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -1876,8 +1711,6 @@ void VkEncoder::vkFreeMemory( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkFreeMemory readParams"); - AEMU_SCOPED_TRACE("vkFreeMemory returnUnmarshal"); resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory); pool->freeAll(); countingStream->clearPool(); @@ -1893,7 +1726,6 @@ VkResult VkEncoder::vkMapMemory( VkMemoryMapFlags flags, void** ppData) { - AEMU_SCOPED_TRACE("vkMapMemory resourceEvent"); VkResult vkMapMemory_VkResult_return = (VkResult)0; vkMapMemory_VkResult_return = mImpl->resources()->on_vkMapMemory(this, VK_SUCCESS, device, memory, offset, size, flags, ppData); mImpl->log("finish vkMapMemory");; @@ -1904,7 +1736,6 @@ void VkEncoder::vkUnmapMemory( VkDevice device, VkDeviceMemory memory) { - AEMU_SCOPED_TRACE("vkUnmapMemory resourceEvent"); mImpl->resources()->on_vkUnmapMemory(this, device, memory); } @@ -1914,7 +1745,6 @@ VkResult VkEncoder::vkFlushMappedMemoryRanges( const VkMappedMemoryRange* pMemoryRanges) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges encode"); mImpl->log("start vkFlushMappedMemoryRanges"); VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges)); auto stream = mImpl->stream(); @@ -2005,8 +1835,6 @@ VkResult VkEncoder::vkFlushMappedMemoryRanges( stream->write(targetRange, actualSize); } } - AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges readParams"); - AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges returnUnmarshal"); VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0; stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -2022,7 +1850,6 @@ VkResult VkEncoder::vkInvalidateMappedMemoryRanges( const VkMappedMemoryRange* pMemoryRanges) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges encode"); mImpl->log("start vkInvalidateMappedMemoryRanges"); VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges)); auto stream = mImpl->stream(); @@ -2075,8 +1902,6 @@ VkResult VkEncoder::vkInvalidateMappedMemoryRanges( { marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i)); } - AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges readParams"); - AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges returnUnmarshal"); VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0; stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult)); if (!resources->usingDirectMapping()) @@ -2111,7 +1936,6 @@ void VkEncoder::vkGetDeviceMemoryCommitment( VkDeviceSize* pCommittedMemoryInBytes) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment encode"); mImpl->log("start vkGetDeviceMemoryCommitment"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -2145,9 +1969,7 @@ void VkEncoder::vkGetDeviceMemoryCommitment( stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_118, 1); stream->write((uint64_t*)&cgen_var_118, 1 * 8); stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize)); - AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment readParams"); stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize)); - AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -2161,7 +1983,6 @@ VkResult VkEncoder::vkBindBufferMemory( VkDeviceSize memoryOffset) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkBindBufferMemory encode"); mImpl->log("start vkBindBufferMemory"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -2205,8 +2026,6 @@ VkResult VkEncoder::vkBindBufferMemory( stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_124, 1); stream->write((uint64_t*)&cgen_var_124, 1 * 8); stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize)); - AEMU_SCOPED_TRACE("vkBindBufferMemory readParams"); - AEMU_SCOPED_TRACE("vkBindBufferMemory returnUnmarshal"); VkResult vkBindBufferMemory_VkResult_return = (VkResult)0; stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -2223,7 +2042,6 @@ VkResult VkEncoder::vkBindImageMemory( VkDeviceSize memoryOffset) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkBindImageMemory encode"); mImpl->log("start vkBindImageMemory"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -2267,8 +2085,6 @@ VkResult VkEncoder::vkBindImageMemory( stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_130, 1); stream->write((uint64_t*)&cgen_var_130, 1 * 8); stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize)); - AEMU_SCOPED_TRACE("vkBindImageMemory readParams"); - AEMU_SCOPED_TRACE("vkBindImageMemory returnUnmarshal"); VkResult vkBindImageMemory_VkResult_return = (VkResult)0; stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -2284,7 +2100,6 @@ void VkEncoder::vkGetBufferMemoryRequirements( VkMemoryRequirements* pMemoryRequirements) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements encode"); mImpl->log("start vkGetBufferMemoryRequirements"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -2317,13 +2132,11 @@ void VkEncoder::vkGetBufferMemoryRequirements( stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_134, 1); stream->write((uint64_t*)&cgen_var_134, 1 * 8); marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); - AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements readParams"); unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); if (pMemoryRequirements) { transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements)); } - AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -2336,7 +2149,6 @@ void VkEncoder::vkGetImageMemoryRequirements( VkMemoryRequirements* pMemoryRequirements) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements encode"); mImpl->log("start vkGetImageMemoryRequirements"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -2369,13 +2181,11 @@ void VkEncoder::vkGetImageMemoryRequirements( stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_138, 1); stream->write((uint64_t*)&cgen_var_138, 1 * 8); marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); - AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements readParams"); unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); if (pMemoryRequirements) { transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements)); } - AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -2389,7 +2199,6 @@ void VkEncoder::vkGetImageSparseMemoryRequirements( VkSparseImageMemoryRequirements* pSparseMemoryRequirements) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements encode"); mImpl->log("start vkGetImageSparseMemoryRequirements"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -2454,7 +2263,6 @@ void VkEncoder::vkGetImageSparseMemoryRequirements( marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i)); } } - AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements readParams"); // WARNING PTR CHECK uint32_t* check_pSparseMemoryRequirementCount; check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -2487,7 +2295,6 @@ void VkEncoder::vkGetImageSparseMemoryRequirements( transform_fromhost_VkSparseImageMemoryRequirements(mImpl->resources(), (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i)); } } - AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -2505,7 +2312,6 @@ void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties( VkSparseImageFormatProperties* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties encode"); mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -2582,7 +2388,6 @@ void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties( marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -2615,7 +2420,6 @@ void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties( transform_fromhost_VkSparseImageFormatProperties(mImpl->resources(), (VkSparseImageFormatProperties*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -2629,7 +2433,6 @@ VkResult VkEncoder::vkQueueBindSparse( VkFence fence) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkQueueBindSparse encode"); mImpl->log("start vkQueueBindSparse"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -2689,8 +2492,6 @@ VkResult VkEncoder::vkQueueBindSparse( uint64_t cgen_var_160; stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_160, 1); stream->write((uint64_t*)&cgen_var_160, 1 * 8); - AEMU_SCOPED_TRACE("vkQueueBindSparse readParams"); - AEMU_SCOPED_TRACE("vkQueueBindSparse returnUnmarshal"); VkResult vkQueueBindSparse_VkResult_return = (VkResult)0; stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -2707,7 +2508,6 @@ VkResult VkEncoder::vkCreateFence( VkFence* pFence) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateFence encode"); mImpl->log("start vkCreateFence"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -2777,13 +2577,11 @@ VkResult VkEncoder::vkCreateFence( stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_166, 1); stream->write((uint64_t*)&cgen_var_166, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateFence readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_167; stream->read((uint64_t*)&cgen_var_167, 8); stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_167, (VkFence*)pFence, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateFence returnUnmarshal"); VkResult vkCreateFence_VkResult_return = (VkResult)0; stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -2799,7 +2597,6 @@ void VkEncoder::vkDestroyFence( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyFence encode"); mImpl->log("start vkDestroyFence"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -2856,8 +2653,6 @@ void VkEncoder::vkDestroyFence( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyFence readParams"); - AEMU_SCOPED_TRACE("vkDestroyFence returnUnmarshal"); resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence); pool->freeAll(); countingStream->clearPool(); @@ -2871,7 +2666,6 @@ VkResult VkEncoder::vkResetFences( const VkFence* pFences) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkResetFences encode"); mImpl->log("start vkResetFences"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -2918,8 +2712,6 @@ VkResult VkEncoder::vkResetFences( stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_177, ((fenceCount))); stream->write((uint64_t*)cgen_var_177, ((fenceCount)) * 8); } - AEMU_SCOPED_TRACE("vkResetFences readParams"); - AEMU_SCOPED_TRACE("vkResetFences returnUnmarshal"); VkResult vkResetFences_VkResult_return = (VkResult)0; stream->read(&vkResetFences_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -2934,7 +2726,6 @@ VkResult VkEncoder::vkGetFenceStatus( VkFence fence) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetFenceStatus encode"); mImpl->log("start vkGetFenceStatus"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -2965,8 +2756,6 @@ VkResult VkEncoder::vkGetFenceStatus( uint64_t cgen_var_181; stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_181, 1); stream->write((uint64_t*)&cgen_var_181, 1 * 8); - AEMU_SCOPED_TRACE("vkGetFenceStatus readParams"); - AEMU_SCOPED_TRACE("vkGetFenceStatus returnUnmarshal"); VkResult vkGetFenceStatus_VkResult_return = (VkResult)0; stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -2984,7 +2773,6 @@ VkResult VkEncoder::vkWaitForFences( uint64_t timeout) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkWaitForFences encode"); mImpl->log("start vkWaitForFences"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3039,8 +2827,6 @@ VkResult VkEncoder::vkWaitForFences( } stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32)); stream->write((uint64_t*)&local_timeout, sizeof(uint64_t)); - AEMU_SCOPED_TRACE("vkWaitForFences readParams"); - AEMU_SCOPED_TRACE("vkWaitForFences returnUnmarshal"); VkResult vkWaitForFences_VkResult_return = (VkResult)0; stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -3057,7 +2843,6 @@ VkResult VkEncoder::vkCreateSemaphore( VkSemaphore* pSemaphore) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateSemaphore encode"); mImpl->log("start vkCreateSemaphore"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3127,13 +2912,11 @@ VkResult VkEncoder::vkCreateSemaphore( stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_191, 1); stream->write((uint64_t*)&cgen_var_191, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateSemaphore readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_192; stream->read((uint64_t*)&cgen_var_192, 8); stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_192, (VkSemaphore*)pSemaphore, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateSemaphore returnUnmarshal"); VkResult vkCreateSemaphore_VkResult_return = (VkResult)0; stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -3149,7 +2932,6 @@ void VkEncoder::vkDestroySemaphore( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroySemaphore encode"); mImpl->log("start vkDestroySemaphore"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3206,8 +2988,6 @@ void VkEncoder::vkDestroySemaphore( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroySemaphore readParams"); - AEMU_SCOPED_TRACE("vkDestroySemaphore returnUnmarshal"); resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore); pool->freeAll(); countingStream->clearPool(); @@ -3222,7 +3002,6 @@ VkResult VkEncoder::vkCreateEvent( VkEvent* pEvent) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateEvent encode"); mImpl->log("start vkCreateEvent"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3292,13 +3071,11 @@ VkResult VkEncoder::vkCreateEvent( stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_204, 1); stream->write((uint64_t*)&cgen_var_204, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateEvent readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_205; stream->read((uint64_t*)&cgen_var_205, 8); stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_205, (VkEvent*)pEvent, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateEvent returnUnmarshal"); VkResult vkCreateEvent_VkResult_return = (VkResult)0; stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -3314,7 +3091,6 @@ void VkEncoder::vkDestroyEvent( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyEvent encode"); mImpl->log("start vkDestroyEvent"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3371,8 +3147,6 @@ void VkEncoder::vkDestroyEvent( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyEvent readParams"); - AEMU_SCOPED_TRACE("vkDestroyEvent returnUnmarshal"); resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event); pool->freeAll(); countingStream->clearPool(); @@ -3385,7 +3159,6 @@ VkResult VkEncoder::vkGetEventStatus( VkEvent event) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetEventStatus encode"); mImpl->log("start vkGetEventStatus"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3416,8 +3189,6 @@ VkResult VkEncoder::vkGetEventStatus( uint64_t cgen_var_215; stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_215, 1); stream->write((uint64_t*)&cgen_var_215, 1 * 8); - AEMU_SCOPED_TRACE("vkGetEventStatus readParams"); - AEMU_SCOPED_TRACE("vkGetEventStatus returnUnmarshal"); VkResult vkGetEventStatus_VkResult_return = (VkResult)0; stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -3432,7 +3203,6 @@ VkResult VkEncoder::vkSetEvent( VkEvent event) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkSetEvent encode"); mImpl->log("start vkSetEvent"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3463,8 +3233,6 @@ VkResult VkEncoder::vkSetEvent( uint64_t cgen_var_219; stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_219, 1); stream->write((uint64_t*)&cgen_var_219, 1 * 8); - AEMU_SCOPED_TRACE("vkSetEvent readParams"); - AEMU_SCOPED_TRACE("vkSetEvent returnUnmarshal"); VkResult vkSetEvent_VkResult_return = (VkResult)0; stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -3479,7 +3247,6 @@ VkResult VkEncoder::vkResetEvent( VkEvent event) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkResetEvent encode"); mImpl->log("start vkResetEvent"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3510,8 +3277,6 @@ VkResult VkEncoder::vkResetEvent( uint64_t cgen_var_223; stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_223, 1); stream->write((uint64_t*)&cgen_var_223, 1 * 8); - AEMU_SCOPED_TRACE("vkResetEvent readParams"); - AEMU_SCOPED_TRACE("vkResetEvent returnUnmarshal"); VkResult vkResetEvent_VkResult_return = (VkResult)0; stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -3528,7 +3293,6 @@ VkResult VkEncoder::vkCreateQueryPool( VkQueryPool* pQueryPool) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateQueryPool encode"); mImpl->log("start vkCreateQueryPool"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3598,13 +3362,11 @@ VkResult VkEncoder::vkCreateQueryPool( stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_229, 1); stream->write((uint64_t*)&cgen_var_229, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateQueryPool readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_230; stream->read((uint64_t*)&cgen_var_230, 8); stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_230, (VkQueryPool*)pQueryPool, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateQueryPool returnUnmarshal"); VkResult vkCreateQueryPool_VkResult_return = (VkResult)0; stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -3620,7 +3382,6 @@ void VkEncoder::vkDestroyQueryPool( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyQueryPool encode"); mImpl->log("start vkDestroyQueryPool"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3677,8 +3438,6 @@ void VkEncoder::vkDestroyQueryPool( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyQueryPool readParams"); - AEMU_SCOPED_TRACE("vkDestroyQueryPool returnUnmarshal"); resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool); pool->freeAll(); countingStream->clearPool(); @@ -3697,7 +3456,6 @@ VkResult VkEncoder::vkGetQueryPoolResults( VkQueryResultFlags flags) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetQueryPoolResults encode"); mImpl->log("start vkGetQueryPoolResults"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3752,9 +3510,7 @@ VkResult VkEncoder::vkGetQueryPoolResults( stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t)); stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize)); stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags)); - AEMU_SCOPED_TRACE("vkGetQueryPoolResults readParams"); stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t)); - AEMU_SCOPED_TRACE("vkGetQueryPoolResults returnUnmarshal"); VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0; stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -3771,7 +3527,6 @@ VkResult VkEncoder::vkCreateBuffer( VkBuffer* pBuffer) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateBuffer encode"); mImpl->log("start vkCreateBuffer"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3841,13 +3596,11 @@ VkResult VkEncoder::vkCreateBuffer( stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_248, 1); stream->write((uint64_t*)&cgen_var_248, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateBuffer readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_249; stream->read((uint64_t*)&cgen_var_249, 8); stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_249, (VkBuffer*)pBuffer, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateBuffer returnUnmarshal"); VkResult vkCreateBuffer_VkResult_return = (VkResult)0; stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -3863,7 +3616,6 @@ void VkEncoder::vkDestroyBuffer( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyBuffer encode"); mImpl->log("start vkDestroyBuffer"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -3920,8 +3672,6 @@ void VkEncoder::vkDestroyBuffer( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyBuffer readParams"); - AEMU_SCOPED_TRACE("vkDestroyBuffer returnUnmarshal"); resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer); pool->freeAll(); countingStream->clearPool(); @@ -3936,7 +3686,6 @@ VkResult VkEncoder::vkCreateBufferView( VkBufferView* pView) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateBufferView encode"); mImpl->log("start vkCreateBufferView"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4006,13 +3755,11 @@ VkResult VkEncoder::vkCreateBufferView( stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_261, 1); stream->write((uint64_t*)&cgen_var_261, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateBufferView readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_262; stream->read((uint64_t*)&cgen_var_262, 8); stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_262, (VkBufferView*)pView, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateBufferView returnUnmarshal"); VkResult vkCreateBufferView_VkResult_return = (VkResult)0; stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -4028,7 +3775,6 @@ void VkEncoder::vkDestroyBufferView( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyBufferView encode"); mImpl->log("start vkDestroyBufferView"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4085,8 +3831,6 @@ void VkEncoder::vkDestroyBufferView( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyBufferView readParams"); - AEMU_SCOPED_TRACE("vkDestroyBufferView returnUnmarshal"); resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView); pool->freeAll(); countingStream->clearPool(); @@ -4101,7 +3845,6 @@ VkResult VkEncoder::vkCreateImage( VkImage* pImage) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateImage encode"); mImpl->log("start vkCreateImage"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4172,13 +3915,11 @@ VkResult VkEncoder::vkCreateImage( stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_274, 1); stream->write((uint64_t*)&cgen_var_274, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateImage readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_275; stream->read((uint64_t*)&cgen_var_275, 8); stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_275, (VkImage*)pImage, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateImage returnUnmarshal"); VkResult vkCreateImage_VkResult_return = (VkResult)0; stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -4194,7 +3935,6 @@ void VkEncoder::vkDestroyImage( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyImage encode"); mImpl->log("start vkDestroyImage"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4251,8 +3991,6 @@ void VkEncoder::vkDestroyImage( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyImage readParams"); - AEMU_SCOPED_TRACE("vkDestroyImage returnUnmarshal"); resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image); pool->freeAll(); countingStream->clearPool(); @@ -4267,7 +4005,6 @@ void VkEncoder::vkGetImageSubresourceLayout( VkSubresourceLayout* pLayout) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout encode"); mImpl->log("start vkGetImageSubresourceLayout"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4313,13 +4050,11 @@ void VkEncoder::vkGetImageSubresourceLayout( stream->write((uint64_t*)&cgen_var_285, 1 * 8); marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource)); marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout)); - AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout readParams"); unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout)); if (pLayout) { transform_fromhost_VkSubresourceLayout(mImpl->resources(), (VkSubresourceLayout*)(pLayout)); } - AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -4333,7 +4068,6 @@ VkResult VkEncoder::vkCreateImageView( VkImageView* pView) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateImageView encode"); mImpl->log("start vkCreateImageView"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4403,13 +4137,11 @@ VkResult VkEncoder::vkCreateImageView( stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_291, 1); stream->write((uint64_t*)&cgen_var_291, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateImageView readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_292; stream->read((uint64_t*)&cgen_var_292, 8); stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_292, (VkImageView*)pView, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateImageView returnUnmarshal"); VkResult vkCreateImageView_VkResult_return = (VkResult)0; stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -4425,7 +4157,6 @@ void VkEncoder::vkDestroyImageView( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyImageView encode"); mImpl->log("start vkDestroyImageView"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4482,8 +4213,6 @@ void VkEncoder::vkDestroyImageView( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyImageView readParams"); - AEMU_SCOPED_TRACE("vkDestroyImageView returnUnmarshal"); resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView); pool->freeAll(); countingStream->clearPool(); @@ -4498,7 +4227,6 @@ VkResult VkEncoder::vkCreateShaderModule( VkShaderModule* pShaderModule) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateShaderModule encode"); mImpl->log("start vkCreateShaderModule"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4568,13 +4296,11 @@ VkResult VkEncoder::vkCreateShaderModule( stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_304, 1); stream->write((uint64_t*)&cgen_var_304, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateShaderModule readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_305; stream->read((uint64_t*)&cgen_var_305, 8); stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_305, (VkShaderModule*)pShaderModule, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateShaderModule returnUnmarshal"); VkResult vkCreateShaderModule_VkResult_return = (VkResult)0; stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -4590,7 +4316,6 @@ void VkEncoder::vkDestroyShaderModule( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyShaderModule encode"); mImpl->log("start vkDestroyShaderModule"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4647,8 +4372,6 @@ void VkEncoder::vkDestroyShaderModule( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyShaderModule readParams"); - AEMU_SCOPED_TRACE("vkDestroyShaderModule returnUnmarshal"); resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule); pool->freeAll(); countingStream->clearPool(); @@ -4663,7 +4386,6 @@ VkResult VkEncoder::vkCreatePipelineCache( VkPipelineCache* pPipelineCache) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreatePipelineCache encode"); mImpl->log("start vkCreatePipelineCache"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4733,13 +4455,11 @@ VkResult VkEncoder::vkCreatePipelineCache( stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_317, 1); stream->write((uint64_t*)&cgen_var_317, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreatePipelineCache readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_318; stream->read((uint64_t*)&cgen_var_318, 8); stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_318, (VkPipelineCache*)pPipelineCache, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreatePipelineCache returnUnmarshal"); VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0; stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -4755,7 +4475,6 @@ void VkEncoder::vkDestroyPipelineCache( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyPipelineCache encode"); mImpl->log("start vkDestroyPipelineCache"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4812,8 +4531,6 @@ void VkEncoder::vkDestroyPipelineCache( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyPipelineCache readParams"); - AEMU_SCOPED_TRACE("vkDestroyPipelineCache returnUnmarshal"); resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache); pool->freeAll(); countingStream->clearPool(); @@ -4828,7 +4545,6 @@ VkResult VkEncoder::vkGetPipelineCacheData( void* pData) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPipelineCacheData encode"); mImpl->log("start vkGetPipelineCacheData"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4889,7 +4605,6 @@ VkResult VkEncoder::vkGetPipelineCacheData( { stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t)); } - AEMU_SCOPED_TRACE("vkGetPipelineCacheData readParams"); // WARNING PTR CHECK size_t* check_pDataSize; check_pDataSize = (size_t*)(uintptr_t)stream->getBe64(); @@ -4912,7 +4627,6 @@ VkResult VkEncoder::vkGetPipelineCacheData( } stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t)); } - AEMU_SCOPED_TRACE("vkGetPipelineCacheData returnUnmarshal"); VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0; stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -4929,7 +4643,6 @@ VkResult VkEncoder::vkMergePipelineCaches( const VkPipelineCache* pSrcCaches) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkMergePipelineCaches encode"); mImpl->log("start vkMergePipelineCaches"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -4984,8 +4697,6 @@ VkResult VkEncoder::vkMergePipelineCaches( stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_343, ((srcCacheCount))); stream->write((uint64_t*)cgen_var_343, ((srcCacheCount)) * 8); } - AEMU_SCOPED_TRACE("vkMergePipelineCaches readParams"); - AEMU_SCOPED_TRACE("vkMergePipelineCaches returnUnmarshal"); VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0; stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -5004,7 +4715,6 @@ VkResult VkEncoder::vkCreateGraphicsPipelines( VkPipeline* pPipelines) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines encode"); mImpl->log("start vkCreateGraphicsPipelines"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -5106,7 +4816,6 @@ VkResult VkEncoder::vkCreateGraphicsPipelines( stream->write((uint64_t*)cgen_var_351, ((createInfoCount)) * 8); } stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines readParams"); stream->setHandleMapping(resources->createMapping()); if (((createInfoCount))) { @@ -5116,7 +4825,6 @@ VkResult VkEncoder::vkCreateGraphicsPipelines( stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_352, (VkPipeline*)pPipelines, ((createInfoCount))); } stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines returnUnmarshal"); VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0; stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -5135,7 +4843,6 @@ VkResult VkEncoder::vkCreateComputePipelines( VkPipeline* pPipelines) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateComputePipelines encode"); mImpl->log("start vkCreateComputePipelines"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -5237,7 +4944,6 @@ VkResult VkEncoder::vkCreateComputePipelines( stream->write((uint64_t*)cgen_var_360, ((createInfoCount)) * 8); } stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateComputePipelines readParams"); stream->setHandleMapping(resources->createMapping()); if (((createInfoCount))) { @@ -5247,7 +4953,6 @@ VkResult VkEncoder::vkCreateComputePipelines( stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_361, (VkPipeline*)pPipelines, ((createInfoCount))); } stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateComputePipelines returnUnmarshal"); VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0; stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -5263,7 +4968,6 @@ void VkEncoder::vkDestroyPipeline( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyPipeline encode"); mImpl->log("start vkDestroyPipeline"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -5320,8 +5024,6 @@ void VkEncoder::vkDestroyPipeline( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyPipeline readParams"); - AEMU_SCOPED_TRACE("vkDestroyPipeline returnUnmarshal"); resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline); pool->freeAll(); countingStream->clearPool(); @@ -5336,7 +5038,6 @@ VkResult VkEncoder::vkCreatePipelineLayout( VkPipelineLayout* pPipelineLayout) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreatePipelineLayout encode"); mImpl->log("start vkCreatePipelineLayout"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -5406,13 +5107,11 @@ VkResult VkEncoder::vkCreatePipelineLayout( stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_373, 1); stream->write((uint64_t*)&cgen_var_373, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreatePipelineLayout readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_374; stream->read((uint64_t*)&cgen_var_374, 8); stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_374, (VkPipelineLayout*)pPipelineLayout, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreatePipelineLayout returnUnmarshal"); VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0; stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -5428,7 +5127,6 @@ void VkEncoder::vkDestroyPipelineLayout( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyPipelineLayout encode"); mImpl->log("start vkDestroyPipelineLayout"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -5485,8 +5183,6 @@ void VkEncoder::vkDestroyPipelineLayout( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyPipelineLayout readParams"); - AEMU_SCOPED_TRACE("vkDestroyPipelineLayout returnUnmarshal"); resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout); pool->freeAll(); countingStream->clearPool(); @@ -5501,7 +5197,6 @@ VkResult VkEncoder::vkCreateSampler( VkSampler* pSampler) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateSampler encode"); mImpl->log("start vkCreateSampler"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -5571,13 +5266,11 @@ VkResult VkEncoder::vkCreateSampler( stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_386, 1); stream->write((uint64_t*)&cgen_var_386, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateSampler readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_387; stream->read((uint64_t*)&cgen_var_387, 8); stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_387, (VkSampler*)pSampler, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateSampler returnUnmarshal"); VkResult vkCreateSampler_VkResult_return = (VkResult)0; stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -5593,7 +5286,6 @@ void VkEncoder::vkDestroySampler( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroySampler encode"); mImpl->log("start vkDestroySampler"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -5650,8 +5342,6 @@ void VkEncoder::vkDestroySampler( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroySampler readParams"); - AEMU_SCOPED_TRACE("vkDestroySampler returnUnmarshal"); resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler); pool->freeAll(); countingStream->clearPool(); @@ -5666,7 +5356,6 @@ VkResult VkEncoder::vkCreateDescriptorSetLayout( VkDescriptorSetLayout* pSetLayout) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout encode"); mImpl->log("start vkCreateDescriptorSetLayout"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -5736,13 +5425,11 @@ VkResult VkEncoder::vkCreateDescriptorSetLayout( stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_399, 1); stream->write((uint64_t*)&cgen_var_399, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_400; stream->read((uint64_t*)&cgen_var_400, 8); stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_400, (VkDescriptorSetLayout*)pSetLayout, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout returnUnmarshal"); VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0; stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -5758,7 +5445,6 @@ void VkEncoder::vkDestroyDescriptorSetLayout( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout encode"); mImpl->log("start vkDestroyDescriptorSetLayout"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -5815,8 +5501,6 @@ void VkEncoder::vkDestroyDescriptorSetLayout( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout readParams"); - AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout returnUnmarshal"); resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout); pool->freeAll(); countingStream->clearPool(); @@ -5831,7 +5515,6 @@ VkResult VkEncoder::vkCreateDescriptorPool( VkDescriptorPool* pDescriptorPool) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateDescriptorPool encode"); mImpl->log("start vkCreateDescriptorPool"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -5901,13 +5584,11 @@ VkResult VkEncoder::vkCreateDescriptorPool( stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_412, 1); stream->write((uint64_t*)&cgen_var_412, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateDescriptorPool readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_413; stream->read((uint64_t*)&cgen_var_413, 8); stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_413, (VkDescriptorPool*)pDescriptorPool, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateDescriptorPool returnUnmarshal"); VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0; stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -5923,7 +5604,6 @@ void VkEncoder::vkDestroyDescriptorPool( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyDescriptorPool encode"); mImpl->log("start vkDestroyDescriptorPool"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -5980,8 +5660,6 @@ void VkEncoder::vkDestroyDescriptorPool( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyDescriptorPool readParams"); - AEMU_SCOPED_TRACE("vkDestroyDescriptorPool returnUnmarshal"); resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool); pool->freeAll(); countingStream->clearPool(); @@ -5995,7 +5673,6 @@ VkResult VkEncoder::vkResetDescriptorPool( VkDescriptorPoolResetFlags flags) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkResetDescriptorPool encode"); mImpl->log("start vkResetDescriptorPool"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6030,8 +5707,6 @@ VkResult VkEncoder::vkResetDescriptorPool( stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_423, 1); stream->write((uint64_t*)&cgen_var_423, 1 * 8); stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags)); - AEMU_SCOPED_TRACE("vkResetDescriptorPool readParams"); - AEMU_SCOPED_TRACE("vkResetDescriptorPool returnUnmarshal"); VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0; stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -6047,7 +5722,6 @@ VkResult VkEncoder::vkAllocateDescriptorSets( VkDescriptorSet* pDescriptorSets) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkAllocateDescriptorSets encode"); mImpl->log("start vkAllocateDescriptorSets"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6099,7 +5773,6 @@ VkResult VkEncoder::vkAllocateDescriptorSets( stream->write((uint64_t*)cgen_var_427, pAllocateInfo->descriptorSetCount * 8); } stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkAllocateDescriptorSets readParams"); stream->setHandleMapping(resources->createMapping()); if (pAllocateInfo->descriptorSetCount) { @@ -6109,7 +5782,6 @@ VkResult VkEncoder::vkAllocateDescriptorSets( stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_428, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount); } stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkAllocateDescriptorSets returnUnmarshal"); VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0; stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -6126,7 +5798,6 @@ VkResult VkEncoder::vkFreeDescriptorSets( const VkDescriptorSet* pDescriptorSets) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkFreeDescriptorSets encode"); mImpl->log("start vkFreeDescriptorSets"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6193,8 +5864,6 @@ VkResult VkEncoder::vkFreeDescriptorSets( stream->write((uint64_t*)cgen_var_436, ((descriptorSetCount)) * 8); } } - AEMU_SCOPED_TRACE("vkFreeDescriptorSets readParams"); - AEMU_SCOPED_TRACE("vkFreeDescriptorSets returnUnmarshal"); VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0; stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult)); if (pDescriptorSets) @@ -6216,7 +5885,6 @@ void VkEncoder::vkUpdateDescriptorSets( const VkCopyDescriptorSet* pDescriptorCopies) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkUpdateDescriptorSets encode"); mImpl->log("start vkUpdateDescriptorSets"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6297,8 +5965,6 @@ void VkEncoder::vkUpdateDescriptorSets( { marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i)); } - AEMU_SCOPED_TRACE("vkUpdateDescriptorSets readParams"); - AEMU_SCOPED_TRACE("vkUpdateDescriptorSets returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -6312,7 +5978,6 @@ VkResult VkEncoder::vkCreateFramebuffer( VkFramebuffer* pFramebuffer) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateFramebuffer encode"); mImpl->log("start vkCreateFramebuffer"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6382,13 +6047,11 @@ VkResult VkEncoder::vkCreateFramebuffer( stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_444, 1); stream->write((uint64_t*)&cgen_var_444, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateFramebuffer readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_445; stream->read((uint64_t*)&cgen_var_445, 8); stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_445, (VkFramebuffer*)pFramebuffer, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateFramebuffer returnUnmarshal"); VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0; stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -6404,7 +6067,6 @@ void VkEncoder::vkDestroyFramebuffer( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyFramebuffer encode"); mImpl->log("start vkDestroyFramebuffer"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6461,8 +6123,6 @@ void VkEncoder::vkDestroyFramebuffer( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyFramebuffer readParams"); - AEMU_SCOPED_TRACE("vkDestroyFramebuffer returnUnmarshal"); resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer); pool->freeAll(); countingStream->clearPool(); @@ -6477,7 +6137,6 @@ VkResult VkEncoder::vkCreateRenderPass( VkRenderPass* pRenderPass) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateRenderPass encode"); mImpl->log("start vkCreateRenderPass"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6547,13 +6206,11 @@ VkResult VkEncoder::vkCreateRenderPass( stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_457, 1); stream->write((uint64_t*)&cgen_var_457, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateRenderPass readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_458; stream->read((uint64_t*)&cgen_var_458, 8); stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_458, (VkRenderPass*)pRenderPass, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateRenderPass returnUnmarshal"); VkResult vkCreateRenderPass_VkResult_return = (VkResult)0; stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -6569,7 +6226,6 @@ void VkEncoder::vkDestroyRenderPass( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyRenderPass encode"); mImpl->log("start vkDestroyRenderPass"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6626,8 +6282,6 @@ void VkEncoder::vkDestroyRenderPass( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyRenderPass readParams"); - AEMU_SCOPED_TRACE("vkDestroyRenderPass returnUnmarshal"); resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass); pool->freeAll(); countingStream->clearPool(); @@ -6641,7 +6295,6 @@ void VkEncoder::vkGetRenderAreaGranularity( VkExtent2D* pGranularity) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity encode"); mImpl->log("start vkGetRenderAreaGranularity"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6674,13 +6327,11 @@ void VkEncoder::vkGetRenderAreaGranularity( stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_468, 1); stream->write((uint64_t*)&cgen_var_468, 1 * 8); marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity)); - AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity readParams"); unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity)); if (pGranularity) { transform_fromhost_VkExtent2D(mImpl->resources(), (VkExtent2D*)(pGranularity)); } - AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -6694,7 +6345,6 @@ VkResult VkEncoder::vkCreateCommandPool( VkCommandPool* pCommandPool) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateCommandPool encode"); mImpl->log("start vkCreateCommandPool"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6764,13 +6414,11 @@ VkResult VkEncoder::vkCreateCommandPool( stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_474, 1); stream->write((uint64_t*)&cgen_var_474, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateCommandPool readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_475; stream->read((uint64_t*)&cgen_var_475, 8); stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_475, (VkCommandPool*)pCommandPool, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateCommandPool returnUnmarshal"); VkResult vkCreateCommandPool_VkResult_return = (VkResult)0; stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -6786,7 +6434,6 @@ void VkEncoder::vkDestroyCommandPool( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyCommandPool encode"); mImpl->log("start vkDestroyCommandPool"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6843,8 +6490,6 @@ void VkEncoder::vkDestroyCommandPool( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyCommandPool readParams"); - AEMU_SCOPED_TRACE("vkDestroyCommandPool returnUnmarshal"); resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool); pool->freeAll(); countingStream->clearPool(); @@ -6858,7 +6503,6 @@ VkResult VkEncoder::vkResetCommandPool( VkCommandPoolResetFlags flags) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkResetCommandPool encode"); mImpl->log("start vkResetCommandPool"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6893,8 +6537,6 @@ VkResult VkEncoder::vkResetCommandPool( stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_485, 1); stream->write((uint64_t*)&cgen_var_485, 1 * 8); stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags)); - AEMU_SCOPED_TRACE("vkResetCommandPool readParams"); - AEMU_SCOPED_TRACE("vkResetCommandPool returnUnmarshal"); VkResult vkResetCommandPool_VkResult_return = (VkResult)0; stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -6910,7 +6552,6 @@ VkResult VkEncoder::vkAllocateCommandBuffers( VkCommandBuffer* pCommandBuffers) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkAllocateCommandBuffers encode"); mImpl->log("start vkAllocateCommandBuffers"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -6962,7 +6603,6 @@ VkResult VkEncoder::vkAllocateCommandBuffers( stream->write((uint64_t*)cgen_var_489, pAllocateInfo->commandBufferCount * 8); } stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkAllocateCommandBuffers readParams"); stream->setHandleMapping(resources->createMapping()); if (pAllocateInfo->commandBufferCount) { @@ -6972,7 +6612,6 @@ VkResult VkEncoder::vkAllocateCommandBuffers( stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_490, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount); } stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkAllocateCommandBuffers returnUnmarshal"); VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0; stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -6989,7 +6628,6 @@ void VkEncoder::vkFreeCommandBuffers( const VkCommandBuffer* pCommandBuffers) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkFreeCommandBuffers encode"); mImpl->log("start vkFreeCommandBuffers"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7056,8 +6694,6 @@ void VkEncoder::vkFreeCommandBuffers( stream->write((uint64_t*)cgen_var_498, ((commandBufferCount)) * 8); } } - AEMU_SCOPED_TRACE("vkFreeCommandBuffers readParams"); - AEMU_SCOPED_TRACE("vkFreeCommandBuffers returnUnmarshal"); if (pCommandBuffers) { resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount))); @@ -7073,7 +6709,6 @@ VkResult VkEncoder::vkBeginCommandBuffer( const VkCommandBufferBeginInfo* pBeginInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkBeginCommandBuffer encode"); mImpl->log("start vkBeginCommandBuffer"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7109,8 +6744,6 @@ VkResult VkEncoder::vkBeginCommandBuffer( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1); stream->write((uint64_t*)&cgen_var_500, 1 * 8); marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo)); - AEMU_SCOPED_TRACE("vkBeginCommandBuffer readParams"); - AEMU_SCOPED_TRACE("vkBeginCommandBuffer returnUnmarshal"); VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0; stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -7124,7 +6757,6 @@ VkResult VkEncoder::vkEndCommandBuffer( VkCommandBuffer commandBuffer) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkEndCommandBuffer encode"); mImpl->log("start vkEndCommandBuffer"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7147,8 +6779,6 @@ VkResult VkEncoder::vkEndCommandBuffer( uint64_t cgen_var_502; stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1); stream->write((uint64_t*)&cgen_var_502, 1 * 8); - AEMU_SCOPED_TRACE("vkEndCommandBuffer readParams"); - AEMU_SCOPED_TRACE("vkEndCommandBuffer returnUnmarshal"); VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0; stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -7163,7 +6793,6 @@ VkResult VkEncoder::vkResetCommandBuffer( VkCommandBufferResetFlags flags) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkResetCommandBuffer encode"); mImpl->log("start vkResetCommandBuffer"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7190,8 +6819,6 @@ VkResult VkEncoder::vkResetCommandBuffer( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1); stream->write((uint64_t*)&cgen_var_504, 1 * 8); stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags)); - AEMU_SCOPED_TRACE("vkResetCommandBuffer readParams"); - AEMU_SCOPED_TRACE("vkResetCommandBuffer returnUnmarshal"); VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0; stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -7207,7 +6834,6 @@ void VkEncoder::vkCmdBindPipeline( VkPipeline pipeline) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdBindPipeline encode"); mImpl->log("start vkCmdBindPipeline"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7242,8 +6868,6 @@ void VkEncoder::vkCmdBindPipeline( uint64_t cgen_var_508; stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_508, 1); stream->write((uint64_t*)&cgen_var_508, 1 * 8); - AEMU_SCOPED_TRACE("vkCmdBindPipeline readParams"); - AEMU_SCOPED_TRACE("vkCmdBindPipeline returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7257,7 +6881,6 @@ void VkEncoder::vkCmdSetViewport( const VkViewport* pViewports) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetViewport encode"); mImpl->log("start vkCmdSetViewport"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7313,8 +6936,6 @@ void VkEncoder::vkCmdSetViewport( { marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i)); } - AEMU_SCOPED_TRACE("vkCmdSetViewport readParams"); - AEMU_SCOPED_TRACE("vkCmdSetViewport returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7328,7 +6949,6 @@ void VkEncoder::vkCmdSetScissor( const VkRect2D* pScissors) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetScissor encode"); mImpl->log("start vkCmdSetScissor"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7384,8 +7004,6 @@ void VkEncoder::vkCmdSetScissor( { marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i)); } - AEMU_SCOPED_TRACE("vkCmdSetScissor readParams"); - AEMU_SCOPED_TRACE("vkCmdSetScissor returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7397,7 +7015,6 @@ void VkEncoder::vkCmdSetLineWidth( float lineWidth) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetLineWidth encode"); mImpl->log("start vkCmdSetLineWidth"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7424,8 +7041,6 @@ void VkEncoder::vkCmdSetLineWidth( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1); stream->write((uint64_t*)&cgen_var_514, 1 * 8); stream->write((float*)&local_lineWidth, sizeof(float)); - AEMU_SCOPED_TRACE("vkCmdSetLineWidth readParams"); - AEMU_SCOPED_TRACE("vkCmdSetLineWidth returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7439,7 +7054,6 @@ void VkEncoder::vkCmdSetDepthBias( float depthBiasSlopeFactor) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetDepthBias encode"); mImpl->log("start vkCmdSetDepthBias"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7474,8 +7088,6 @@ void VkEncoder::vkCmdSetDepthBias( stream->write((float*)&local_depthBiasConstantFactor, sizeof(float)); stream->write((float*)&local_depthBiasClamp, sizeof(float)); stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float)); - AEMU_SCOPED_TRACE("vkCmdSetDepthBias readParams"); - AEMU_SCOPED_TRACE("vkCmdSetDepthBias returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7487,7 +7099,6 @@ void VkEncoder::vkCmdSetBlendConstants( const float blendConstants[4]) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetBlendConstants encode"); mImpl->log("start vkCmdSetBlendConstants"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7514,8 +7125,6 @@ void VkEncoder::vkCmdSetBlendConstants( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1); stream->write((uint64_t*)&cgen_var_518, 1 * 8); stream->write((float*)local_blendConstants, 4 * sizeof(float)); - AEMU_SCOPED_TRACE("vkCmdSetBlendConstants readParams"); - AEMU_SCOPED_TRACE("vkCmdSetBlendConstants returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7528,7 +7137,6 @@ void VkEncoder::vkCmdSetDepthBounds( float maxDepthBounds) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetDepthBounds encode"); mImpl->log("start vkCmdSetDepthBounds"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7559,8 +7167,6 @@ void VkEncoder::vkCmdSetDepthBounds( stream->write((uint64_t*)&cgen_var_520, 1 * 8); stream->write((float*)&local_minDepthBounds, sizeof(float)); stream->write((float*)&local_maxDepthBounds, sizeof(float)); - AEMU_SCOPED_TRACE("vkCmdSetDepthBounds readParams"); - AEMU_SCOPED_TRACE("vkCmdSetDepthBounds returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7573,7 +7179,6 @@ void VkEncoder::vkCmdSetStencilCompareMask( uint32_t compareMask) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask encode"); mImpl->log("start vkCmdSetStencilCompareMask"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7604,8 +7209,6 @@ void VkEncoder::vkCmdSetStencilCompareMask( stream->write((uint64_t*)&cgen_var_522, 1 * 8); stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags)); stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask readParams"); - AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7618,7 +7221,6 @@ void VkEncoder::vkCmdSetStencilWriteMask( uint32_t writeMask) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask encode"); mImpl->log("start vkCmdSetStencilWriteMask"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7649,8 +7251,6 @@ void VkEncoder::vkCmdSetStencilWriteMask( stream->write((uint64_t*)&cgen_var_524, 1 * 8); stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags)); stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask readParams"); - AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7663,7 +7263,6 @@ void VkEncoder::vkCmdSetStencilReference( uint32_t reference) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetStencilReference encode"); mImpl->log("start vkCmdSetStencilReference"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7694,8 +7293,6 @@ void VkEncoder::vkCmdSetStencilReference( stream->write((uint64_t*)&cgen_var_526, 1 * 8); stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags)); stream->write((uint32_t*)&local_reference, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdSetStencilReference readParams"); - AEMU_SCOPED_TRACE("vkCmdSetStencilReference returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7713,7 +7310,6 @@ void VkEncoder::vkCmdBindDescriptorSets( const uint32_t* pDynamicOffsets) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets encode"); mImpl->log("start vkCmdBindDescriptorSets"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7788,8 +7384,6 @@ void VkEncoder::vkCmdBindDescriptorSets( } stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t)); stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets readParams"); - AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7803,7 +7397,6 @@ void VkEncoder::vkCmdBindIndexBuffer( VkIndexType indexType) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer encode"); mImpl->log("start vkCmdBindIndexBuffer"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7842,8 +7435,6 @@ void VkEncoder::vkCmdBindIndexBuffer( stream->write((uint64_t*)&cgen_var_536, 1 * 8); stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType)); - AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer readParams"); - AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7858,7 +7449,6 @@ void VkEncoder::vkCmdBindVertexBuffers( const VkDeviceSize* pOffsets) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers encode"); mImpl->log("start vkCmdBindVertexBuffers"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7917,8 +7507,6 @@ void VkEncoder::vkCmdBindVertexBuffers( stream->write((uint64_t*)cgen_var_540, ((bindingCount)) * 8); } stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize)); - AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers readParams"); - AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7933,7 +7521,6 @@ void VkEncoder::vkCmdDraw( uint32_t firstInstance) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDraw encode"); mImpl->log("start vkCmdDraw"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -7972,8 +7559,6 @@ void VkEncoder::vkCmdDraw( stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t)); stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t)); stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdDraw readParams"); - AEMU_SCOPED_TRACE("vkCmdDraw returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -7989,7 +7574,6 @@ void VkEncoder::vkCmdDrawIndexed( uint32_t firstInstance) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDrawIndexed encode"); mImpl->log("start vkCmdDrawIndexed"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8032,8 +7616,6 @@ void VkEncoder::vkCmdDrawIndexed( stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t)); stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t)); stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdDrawIndexed readParams"); - AEMU_SCOPED_TRACE("vkCmdDrawIndexed returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8048,7 +7630,6 @@ void VkEncoder::vkCmdDrawIndirect( uint32_t stride) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDrawIndirect encode"); mImpl->log("start vkCmdDrawIndirect"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8091,8 +7672,6 @@ void VkEncoder::vkCmdDrawIndirect( stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t)); stream->write((uint32_t*)&local_stride, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdDrawIndirect readParams"); - AEMU_SCOPED_TRACE("vkCmdDrawIndirect returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8107,7 +7686,6 @@ void VkEncoder::vkCmdDrawIndexedIndirect( uint32_t stride) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect encode"); mImpl->log("start vkCmdDrawIndexedIndirect"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8150,8 +7728,6 @@ void VkEncoder::vkCmdDrawIndexedIndirect( stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t)); stream->write((uint32_t*)&local_stride, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect readParams"); - AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8165,7 +7741,6 @@ void VkEncoder::vkCmdDispatch( uint32_t groupCountZ) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDispatch encode"); mImpl->log("start vkCmdDispatch"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8200,8 +7775,6 @@ void VkEncoder::vkCmdDispatch( stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t)); stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t)); stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdDispatch readParams"); - AEMU_SCOPED_TRACE("vkCmdDispatch returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8214,7 +7787,6 @@ void VkEncoder::vkCmdDispatchIndirect( VkDeviceSize offset) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDispatchIndirect encode"); mImpl->log("start vkCmdDispatchIndirect"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8249,8 +7821,6 @@ void VkEncoder::vkCmdDispatchIndirect( stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_558, 1); stream->write((uint64_t*)&cgen_var_558, 1 * 8); stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); - AEMU_SCOPED_TRACE("vkCmdDispatchIndirect readParams"); - AEMU_SCOPED_TRACE("vkCmdDispatchIndirect returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8265,7 +7835,6 @@ void VkEncoder::vkCmdCopyBuffer( const VkBufferCopy* pRegions) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdCopyBuffer encode"); mImpl->log("start vkCmdCopyBuffer"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8333,8 +7902,6 @@ void VkEncoder::vkCmdCopyBuffer( { marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i)); } - AEMU_SCOPED_TRACE("vkCmdCopyBuffer readParams"); - AEMU_SCOPED_TRACE("vkCmdCopyBuffer returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8351,7 +7918,6 @@ void VkEncoder::vkCmdCopyImage( const VkImageCopy* pRegions) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdCopyImage encode"); mImpl->log("start vkCmdCopyImage"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8427,8 +7993,6 @@ void VkEncoder::vkCmdCopyImage( { marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i)); } - AEMU_SCOPED_TRACE("vkCmdCopyImage readParams"); - AEMU_SCOPED_TRACE("vkCmdCopyImage returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8446,7 +8010,6 @@ void VkEncoder::vkCmdBlitImage( VkFilter filter) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdBlitImage encode"); mImpl->log("start vkCmdBlitImage"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8526,8 +8089,6 @@ void VkEncoder::vkCmdBlitImage( marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i)); } stream->write((VkFilter*)&local_filter, sizeof(VkFilter)); - AEMU_SCOPED_TRACE("vkCmdBlitImage readParams"); - AEMU_SCOPED_TRACE("vkCmdBlitImage returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8543,7 +8104,6 @@ void VkEncoder::vkCmdCopyBufferToImage( const VkBufferImageCopy* pRegions) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage encode"); mImpl->log("start vkCmdCopyBufferToImage"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8615,8 +8175,6 @@ void VkEncoder::vkCmdCopyBufferToImage( { marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i)); } - AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage readParams"); - AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8632,7 +8190,6 @@ void VkEncoder::vkCmdCopyImageToBuffer( const VkBufferImageCopy* pRegions) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer encode"); mImpl->log("start vkCmdCopyImageToBuffer"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8704,8 +8261,6 @@ void VkEncoder::vkCmdCopyImageToBuffer( { marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i)); } - AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer readParams"); - AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8720,7 +8275,6 @@ void VkEncoder::vkCmdUpdateBuffer( const void* pData) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdUpdateBuffer encode"); mImpl->log("start vkCmdUpdateBuffer"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8767,8 +8321,6 @@ void VkEncoder::vkCmdUpdateBuffer( stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize)); stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t)); - AEMU_SCOPED_TRACE("vkCmdUpdateBuffer readParams"); - AEMU_SCOPED_TRACE("vkCmdUpdateBuffer returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8783,7 +8335,6 @@ void VkEncoder::vkCmdFillBuffer( uint32_t data) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdFillBuffer encode"); mImpl->log("start vkCmdFillBuffer"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8826,8 +8377,6 @@ void VkEncoder::vkCmdFillBuffer( stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize)); stream->write((uint32_t*)&local_data, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdFillBuffer readParams"); - AEMU_SCOPED_TRACE("vkCmdFillBuffer returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8843,7 +8392,6 @@ void VkEncoder::vkCmdClearColorImage( const VkImageSubresourceRange* pRanges) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdClearColorImage encode"); mImpl->log("start vkCmdClearColorImage"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -8920,8 +8468,6 @@ void VkEncoder::vkCmdClearColorImage( { marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i)); } - AEMU_SCOPED_TRACE("vkCmdClearColorImage readParams"); - AEMU_SCOPED_TRACE("vkCmdClearColorImage returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -8937,7 +8483,6 @@ void VkEncoder::vkCmdClearDepthStencilImage( const VkImageSubresourceRange* pRanges) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage encode"); mImpl->log("start vkCmdClearDepthStencilImage"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9014,8 +8559,6 @@ void VkEncoder::vkCmdClearDepthStencilImage( { marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i)); } - AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage readParams"); - AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9030,7 +8573,6 @@ void VkEncoder::vkCmdClearAttachments( const VkClearRect* pRects) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdClearAttachments encode"); mImpl->log("start vkCmdClearAttachments"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9111,8 +8653,6 @@ void VkEncoder::vkCmdClearAttachments( { marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i)); } - AEMU_SCOPED_TRACE("vkCmdClearAttachments readParams"); - AEMU_SCOPED_TRACE("vkCmdClearAttachments returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9129,7 +8669,6 @@ void VkEncoder::vkCmdResolveImage( const VkImageResolve* pRegions) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdResolveImage encode"); mImpl->log("start vkCmdResolveImage"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9205,8 +8744,6 @@ void VkEncoder::vkCmdResolveImage( { marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i)); } - AEMU_SCOPED_TRACE("vkCmdResolveImage readParams"); - AEMU_SCOPED_TRACE("vkCmdResolveImage returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9219,7 +8756,6 @@ void VkEncoder::vkCmdSetEvent( VkPipelineStageFlags stageMask) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetEvent encode"); mImpl->log("start vkCmdSetEvent"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9254,8 +8790,6 @@ void VkEncoder::vkCmdSetEvent( stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_616, 1); stream->write((uint64_t*)&cgen_var_616, 1 * 8); stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags)); - AEMU_SCOPED_TRACE("vkCmdSetEvent readParams"); - AEMU_SCOPED_TRACE("vkCmdSetEvent returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9268,7 +8802,6 @@ void VkEncoder::vkCmdResetEvent( VkPipelineStageFlags stageMask) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdResetEvent encode"); mImpl->log("start vkCmdResetEvent"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9303,8 +8836,6 @@ void VkEncoder::vkCmdResetEvent( stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_620, 1); stream->write((uint64_t*)&cgen_var_620, 1 * 8); stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags)); - AEMU_SCOPED_TRACE("vkCmdResetEvent readParams"); - AEMU_SCOPED_TRACE("vkCmdResetEvent returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9325,7 +8856,6 @@ void VkEncoder::vkCmdWaitEvents( const VkImageMemoryBarrier* pImageMemoryBarriers) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdWaitEvents encode"); mImpl->log("start vkCmdWaitEvents"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9467,8 +8997,6 @@ void VkEncoder::vkCmdWaitEvents( { marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); } - AEMU_SCOPED_TRACE("vkCmdWaitEvents readParams"); - AEMU_SCOPED_TRACE("vkCmdWaitEvents returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9488,7 +9016,6 @@ void VkEncoder::vkCmdPipelineBarrier( const VkImageMemoryBarrier* pImageMemoryBarriers) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdPipelineBarrier encode"); mImpl->log("start vkCmdPipelineBarrier"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9610,8 +9137,6 @@ void VkEncoder::vkCmdPipelineBarrier( { marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); } - AEMU_SCOPED_TRACE("vkCmdPipelineBarrier readParams"); - AEMU_SCOPED_TRACE("vkCmdPipelineBarrier returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9625,7 +9150,6 @@ void VkEncoder::vkCmdBeginQuery( VkQueryControlFlags flags) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdBeginQuery encode"); mImpl->log("start vkCmdBeginQuery"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9664,8 +9188,6 @@ void VkEncoder::vkCmdBeginQuery( stream->write((uint64_t*)&cgen_var_630, 1 * 8); stream->write((uint32_t*)&local_query, sizeof(uint32_t)); stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags)); - AEMU_SCOPED_TRACE("vkCmdBeginQuery readParams"); - AEMU_SCOPED_TRACE("vkCmdBeginQuery returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9678,7 +9200,6 @@ void VkEncoder::vkCmdEndQuery( uint32_t query) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdEndQuery encode"); mImpl->log("start vkCmdEndQuery"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9713,8 +9234,6 @@ void VkEncoder::vkCmdEndQuery( stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_634, 1); stream->write((uint64_t*)&cgen_var_634, 1 * 8); stream->write((uint32_t*)&local_query, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdEndQuery readParams"); - AEMU_SCOPED_TRACE("vkCmdEndQuery returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9728,7 +9247,6 @@ void VkEncoder::vkCmdResetQueryPool( uint32_t queryCount) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdResetQueryPool encode"); mImpl->log("start vkCmdResetQueryPool"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9767,8 +9285,6 @@ void VkEncoder::vkCmdResetQueryPool( stream->write((uint64_t*)&cgen_var_638, 1 * 8); stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t)); stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdResetQueryPool readParams"); - AEMU_SCOPED_TRACE("vkCmdResetQueryPool returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9782,7 +9298,6 @@ void VkEncoder::vkCmdWriteTimestamp( uint32_t query) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdWriteTimestamp encode"); mImpl->log("start vkCmdWriteTimestamp"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9821,8 +9336,6 @@ void VkEncoder::vkCmdWriteTimestamp( stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_642, 1); stream->write((uint64_t*)&cgen_var_642, 1 * 8); stream->write((uint32_t*)&local_query, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdWriteTimestamp readParams"); - AEMU_SCOPED_TRACE("vkCmdWriteTimestamp returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9840,7 +9353,6 @@ void VkEncoder::vkCmdCopyQueryPoolResults( VkQueryResultFlags flags) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults encode"); mImpl->log("start vkCmdCopyQueryPoolResults"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9899,8 +9411,6 @@ void VkEncoder::vkCmdCopyQueryPoolResults( stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize)); stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags)); - AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults readParams"); - AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9916,7 +9426,6 @@ void VkEncoder::vkCmdPushConstants( const void* pValues) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdPushConstants encode"); mImpl->log("start vkCmdPushConstants"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -9967,8 +9476,6 @@ void VkEncoder::vkCmdPushConstants( stream->write((uint32_t*)&local_offset, sizeof(uint32_t)); stream->write((uint32_t*)&local_size, sizeof(uint32_t)); stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t)); - AEMU_SCOPED_TRACE("vkCmdPushConstants readParams"); - AEMU_SCOPED_TRACE("vkCmdPushConstants returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -9981,7 +9488,6 @@ void VkEncoder::vkCmdBeginRenderPass( VkSubpassContents contents) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdBeginRenderPass encode"); mImpl->log("start vkCmdBeginRenderPass"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10021,8 +9527,6 @@ void VkEncoder::vkCmdBeginRenderPass( stream->write((uint64_t*)&cgen_var_654, 1 * 8); marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin)); stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents)); - AEMU_SCOPED_TRACE("vkCmdBeginRenderPass readParams"); - AEMU_SCOPED_TRACE("vkCmdBeginRenderPass returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -10034,7 +9538,6 @@ void VkEncoder::vkCmdNextSubpass( VkSubpassContents contents) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdNextSubpass encode"); mImpl->log("start vkCmdNextSubpass"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10061,8 +9564,6 @@ void VkEncoder::vkCmdNextSubpass( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_656, 1); stream->write((uint64_t*)&cgen_var_656, 1 * 8); stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents)); - AEMU_SCOPED_TRACE("vkCmdNextSubpass readParams"); - AEMU_SCOPED_TRACE("vkCmdNextSubpass returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -10073,7 +9574,6 @@ void VkEncoder::vkCmdEndRenderPass( VkCommandBuffer commandBuffer) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdEndRenderPass encode"); mImpl->log("start vkCmdEndRenderPass"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10096,8 +9596,6 @@ void VkEncoder::vkCmdEndRenderPass( uint64_t cgen_var_658; stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_658, 1); stream->write((uint64_t*)&cgen_var_658, 1 * 8); - AEMU_SCOPED_TRACE("vkCmdEndRenderPass readParams"); - AEMU_SCOPED_TRACE("vkCmdEndRenderPass returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -10110,7 +9608,6 @@ void VkEncoder::vkCmdExecuteCommands( const VkCommandBuffer* pCommandBuffers) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdExecuteCommands encode"); mImpl->log("start vkCmdExecuteCommands"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10157,8 +9654,6 @@ void VkEncoder::vkCmdExecuteCommands( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_662, ((commandBufferCount))); stream->write((uint64_t*)cgen_var_662, ((commandBufferCount)) * 8); } - AEMU_SCOPED_TRACE("vkCmdExecuteCommands readParams"); - AEMU_SCOPED_TRACE("vkCmdExecuteCommands returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -10171,7 +9666,6 @@ VkResult VkEncoder::vkEnumerateInstanceVersion( uint32_t* pApiVersion) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion encode"); mImpl->log("start vkEnumerateInstanceVersion"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10188,9 +9682,7 @@ VkResult VkEncoder::vkEnumerateInstanceVersion( stream->write(&opcode_vkEnumerateInstanceVersion, sizeof(uint32_t)); stream->write(&packetSize_vkEnumerateInstanceVersion, sizeof(uint32_t)); stream->write((uint32_t*)pApiVersion, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion readParams"); stream->read((uint32_t*)pApiVersion, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion returnUnmarshal"); VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0; stream->read(&vkEnumerateInstanceVersion_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -10206,7 +9698,6 @@ VkResult VkEncoder::vkBindBufferMemory2( const VkBindBufferMemoryInfo* pBindInfos) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkBindBufferMemory2 encode"); mImpl->log("start vkBindBufferMemory2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10258,8 +9749,6 @@ VkResult VkEncoder::vkBindBufferMemory2( { marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i)); } - AEMU_SCOPED_TRACE("vkBindBufferMemory2 readParams"); - AEMU_SCOPED_TRACE("vkBindBufferMemory2 returnUnmarshal"); VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0; stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -10275,7 +9764,6 @@ VkResult VkEncoder::vkBindImageMemory2( const VkBindImageMemoryInfo* pBindInfos) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkBindImageMemory2 encode"); mImpl->log("start vkBindImageMemory2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10327,8 +9815,6 @@ VkResult VkEncoder::vkBindImageMemory2( { marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i)); } - AEMU_SCOPED_TRACE("vkBindImageMemory2 readParams"); - AEMU_SCOPED_TRACE("vkBindImageMemory2 returnUnmarshal"); VkResult vkBindImageMemory2_VkResult_return = (VkResult)0; stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -10346,7 +9832,6 @@ void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures( VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures encode"); mImpl->log("start vkGetDeviceGroupPeerMemoryFeatures"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10383,9 +9868,7 @@ void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures( stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t)); stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t)); stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags)); - AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures readParams"); stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags)); - AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -10397,7 +9880,6 @@ void VkEncoder::vkCmdSetDeviceMask( uint32_t deviceMask) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetDeviceMask encode"); mImpl->log("start vkCmdSetDeviceMask"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10424,8 +9906,6 @@ void VkEncoder::vkCmdSetDeviceMask( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_670, 1); stream->write((uint64_t*)&cgen_var_670, 1 * 8); stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdSetDeviceMask readParams"); - AEMU_SCOPED_TRACE("vkCmdSetDeviceMask returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -10442,7 +9922,6 @@ void VkEncoder::vkCmdDispatchBase( uint32_t groupCountZ) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDispatchBase encode"); mImpl->log("start vkCmdDispatchBase"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10489,8 +9968,6 @@ void VkEncoder::vkCmdDispatchBase( stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t)); stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t)); stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdDispatchBase readParams"); - AEMU_SCOPED_TRACE("vkCmdDispatchBase returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -10503,7 +9980,6 @@ VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups( VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups encode"); mImpl->log("start vkEnumeratePhysicalDeviceGroups"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10560,7 +10036,6 @@ VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups( marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); } } - AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups readParams"); // WARNING PTR CHECK uint32_t* check_pPhysicalDeviceGroupCount; check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -10593,7 +10068,6 @@ VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups( transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); } } - AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups returnUnmarshal"); VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0; stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -10609,7 +10083,6 @@ void VkEncoder::vkGetImageMemoryRequirements2( VkMemoryRequirements2* pMemoryRequirements) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 encode"); mImpl->log("start vkGetImageMemoryRequirements2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10647,13 +10120,11 @@ void VkEncoder::vkGetImageMemoryRequirements2( stream->write((uint64_t*)&cgen_var_682, 1 * 8); marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo)); marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); - AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 readParams"); unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); if (pMemoryRequirements) { transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements)); } - AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -10666,7 +10137,6 @@ void VkEncoder::vkGetBufferMemoryRequirements2( VkMemoryRequirements2* pMemoryRequirements) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 encode"); mImpl->log("start vkGetBufferMemoryRequirements2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10704,13 +10174,11 @@ void VkEncoder::vkGetBufferMemoryRequirements2( stream->write((uint64_t*)&cgen_var_684, 1 * 8); marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo)); marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); - AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 readParams"); unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); if (pMemoryRequirements) { transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements)); } - AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -10724,7 +10192,6 @@ void VkEncoder::vkGetImageSparseMemoryRequirements2( VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 encode"); mImpl->log("start vkGetImageSparseMemoryRequirements2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10794,7 +10261,6 @@ void VkEncoder::vkGetImageSparseMemoryRequirements2( marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); } } - AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 readParams"); // WARNING PTR CHECK uint32_t* check_pSparseMemoryRequirementCount; check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -10827,7 +10293,6 @@ void VkEncoder::vkGetImageSparseMemoryRequirements2( transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); } } - AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -10839,7 +10304,6 @@ void VkEncoder::vkGetPhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2* pFeatures) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 encode"); mImpl->log("start vkGetPhysicalDeviceFeatures2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10864,13 +10328,11 @@ void VkEncoder::vkGetPhysicalDeviceFeatures2( stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_694, 1); stream->write((uint64_t*)&cgen_var_694, 1 * 8); marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 readParams"); unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures)); if (pFeatures) { transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -10882,7 +10344,6 @@ void VkEncoder::vkGetPhysicalDeviceProperties2( VkPhysicalDeviceProperties2* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 encode"); mImpl->log("start vkGetPhysicalDeviceProperties2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10907,13 +10368,11 @@ void VkEncoder::vkGetPhysicalDeviceProperties2( stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1); stream->write((uint64_t*)&cgen_var_696, 1 * 8); marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 readParams"); unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties)); if (pProperties) { transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 returnUnmarshal"); mImpl->resources()->on_vkGetPhysicalDeviceProperties2(this, physicalDevice, pProperties); pool->freeAll(); countingStream->clearPool(); @@ -10927,7 +10386,6 @@ void VkEncoder::vkGetPhysicalDeviceFormatProperties2( VkFormatProperties2* pFormatProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 encode"); mImpl->log("start vkGetPhysicalDeviceFormatProperties2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -10956,13 +10414,11 @@ void VkEncoder::vkGetPhysicalDeviceFormatProperties2( stream->write((uint64_t*)&cgen_var_698, 1 * 8); stream->write((VkFormat*)&local_format, sizeof(VkFormat)); marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 readParams"); unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties)); if (pFormatProperties) { transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -10975,7 +10431,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2( VkImageFormatProperties2* pImageFormatProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 encode"); mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11013,13 +10468,11 @@ VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2( stream->write((uint64_t*)&cgen_var_700, 1 * 8); marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo)); marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 readParams"); unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties)); if (pImageFormatProperties) { transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 returnUnmarshal"); VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -11035,7 +10488,6 @@ void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2( VkQueueFamilyProperties2* pQueueFamilyProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 encode"); mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11092,7 +10544,6 @@ void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2( marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 readParams"); // WARNING PTR CHECK uint32_t* check_pQueueFamilyPropertyCount; check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -11125,7 +10576,6 @@ void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2( transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -11137,7 +10587,6 @@ void VkEncoder::vkGetPhysicalDeviceMemoryProperties2( VkPhysicalDeviceMemoryProperties2* pMemoryProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 encode"); mImpl->log("start vkGetPhysicalDeviceMemoryProperties2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11162,13 +10611,11 @@ void VkEncoder::vkGetPhysicalDeviceMemoryProperties2( stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_710, 1); stream->write((uint64_t*)&cgen_var_710, 1 * 8); marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 readParams"); unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); if (pMemoryProperties) { transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 returnUnmarshal"); mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2(this, physicalDevice, pMemoryProperties); pool->freeAll(); countingStream->clearPool(); @@ -11183,7 +10630,6 @@ void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2( VkSparseImageFormatProperties2* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 encode"); mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11253,7 +10699,6 @@ void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2( marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -11286,7 +10731,6 @@ void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2( transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -11299,7 +10743,6 @@ void VkEncoder::vkTrimCommandPool( VkCommandPoolTrimFlags flags) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkTrimCommandPool encode"); mImpl->log("start vkTrimCommandPool"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11334,8 +10777,6 @@ void VkEncoder::vkTrimCommandPool( stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_722, 1); stream->write((uint64_t*)&cgen_var_722, 1 * 8); stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags)); - AEMU_SCOPED_TRACE("vkTrimCommandPool readParams"); - AEMU_SCOPED_TRACE("vkTrimCommandPool returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -11348,7 +10789,6 @@ void VkEncoder::vkGetDeviceQueue2( VkQueue* pQueue) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDeviceQueue2 encode"); mImpl->log("start vkGetDeviceQueue2"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11392,11 +10832,9 @@ void VkEncoder::vkGetDeviceQueue2( stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_726, 1); stream->write((uint64_t*)&cgen_var_726, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkGetDeviceQueue2 readParams"); uint64_t cgen_var_727; stream->read((uint64_t*)&cgen_var_727, 8); stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_727, (VkQueue*)pQueue, 1); - AEMU_SCOPED_TRACE("vkGetDeviceQueue2 returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -11410,7 +10848,6 @@ VkResult VkEncoder::vkCreateSamplerYcbcrConversion( VkSamplerYcbcrConversion* pYcbcrConversion) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion encode"); mImpl->log("start vkCreateSamplerYcbcrConversion"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11480,13 +10917,11 @@ VkResult VkEncoder::vkCreateSamplerYcbcrConversion( stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_733, 1); stream->write((uint64_t*)&cgen_var_733, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_734; stream->read((uint64_t*)&cgen_var_734, 8); stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_734, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion returnUnmarshal"); VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0; stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -11502,7 +10937,6 @@ void VkEncoder::vkDestroySamplerYcbcrConversion( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion encode"); mImpl->log("start vkDestroySamplerYcbcrConversion"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11559,8 +10993,6 @@ void VkEncoder::vkDestroySamplerYcbcrConversion( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion readParams"); - AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion returnUnmarshal"); resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion); pool->freeAll(); countingStream->clearPool(); @@ -11575,7 +11007,6 @@ VkResult VkEncoder::vkCreateDescriptorUpdateTemplate( VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate encode"); mImpl->log("start vkCreateDescriptorUpdateTemplate"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11645,13 +11076,11 @@ VkResult VkEncoder::vkCreateDescriptorUpdateTemplate( stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_746, 1); stream->write((uint64_t*)&cgen_var_746, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_747; stream->read((uint64_t*)&cgen_var_747, 8); stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_747, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate returnUnmarshal"); VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0; stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult)); mImpl->resources()->on_vkCreateDescriptorUpdateTemplate(this, vkCreateDescriptorUpdateTemplate_VkResult_return, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate); @@ -11668,7 +11097,6 @@ void VkEncoder::vkDestroyDescriptorUpdateTemplate( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate encode"); mImpl->log("start vkDestroyDescriptorUpdateTemplate"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11725,8 +11153,6 @@ void VkEncoder::vkDestroyDescriptorUpdateTemplate( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate readParams"); - AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate returnUnmarshal"); resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate); pool->freeAll(); countingStream->clearPool(); @@ -11741,7 +11167,6 @@ void VkEncoder::vkUpdateDescriptorSetWithTemplate( const void* pData) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate encode"); mImpl->log("start vkUpdateDescriptorSetWithTemplate"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11800,8 +11225,6 @@ void VkEncoder::vkUpdateDescriptorSetWithTemplate( { stream->write((void*)local_pData, sizeof(uint8_t)); } - AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate readParams"); - AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -11814,7 +11237,6 @@ void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties( VkExternalBufferProperties* pExternalBufferProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties encode"); mImpl->log("start vkGetPhysicalDeviceExternalBufferProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11853,14 +11275,12 @@ void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties( stream->write((uint64_t*)&cgen_var_763, 1 * 8); marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo)); marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties readParams"); unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties)); if (pExternalBufferProperties) { mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1); transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -11873,7 +11293,6 @@ void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties( VkExternalFenceProperties* pExternalFenceProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties encode"); mImpl->log("start vkGetPhysicalDeviceExternalFenceProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11911,13 +11330,11 @@ void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties( stream->write((uint64_t*)&cgen_var_765, 1 * 8); marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo)); marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties readParams"); unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties)); if (pExternalFenceProperties) { transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -11930,7 +11347,6 @@ void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties( VkExternalSemaphoreProperties* pExternalSemaphoreProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties encode"); mImpl->log("start vkGetPhysicalDeviceExternalSemaphoreProperties"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -11968,13 +11384,11 @@ void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties( stream->write((uint64_t*)&cgen_var_767, 1 * 8); marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo)); marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties readParams"); unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); if (pExternalSemaphoreProperties) { transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -11987,7 +11401,6 @@ void VkEncoder::vkGetDescriptorSetLayoutSupport( VkDescriptorSetLayoutSupport* pSupport) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport encode"); mImpl->log("start vkGetDescriptorSetLayoutSupport"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12025,13 +11438,11 @@ void VkEncoder::vkGetDescriptorSetLayoutSupport( stream->write((uint64_t*)&cgen_var_769, 1 * 8); marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport)); - AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport readParams"); unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport)); if (pSupport) { transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport)); } - AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -12046,7 +11457,6 @@ void VkEncoder::vkDestroySurfaceKHR( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroySurfaceKHR encode"); mImpl->log("start vkDestroySurfaceKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12103,8 +11513,6 @@ void VkEncoder::vkDestroySurfaceKHR( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroySurfaceKHR readParams"); - AEMU_SCOPED_TRACE("vkDestroySurfaceKHR returnUnmarshal"); resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface); pool->freeAll(); countingStream->clearPool(); @@ -12119,7 +11527,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR( VkBool32* pSupported) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR encode"); mImpl->log("start vkGetPhysicalDeviceSurfaceSupportKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12156,9 +11563,7 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_779, 1); stream->write((uint64_t*)&cgen_var_779, 1 * 8); stream->write((VkBool32*)pSupported, sizeof(VkBool32)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR readParams"); stream->read((VkBool32*)pSupported, sizeof(VkBool32)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR returnUnmarshal"); VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -12174,7 +11579,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR( VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR encode"); mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12207,13 +11611,11 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_783, 1); stream->write((uint64_t*)&cgen_var_783, 1 * 8); marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR readParams"); unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities)); if (pSurfaceCapabilities) { transform_fromhost_VkSurfaceCapabilitiesKHR(mImpl->resources(), (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR returnUnmarshal"); VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -12230,7 +11632,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR( VkSurfaceFormatKHR* pSurfaceFormats) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR encode"); mImpl->log("start vkGetPhysicalDeviceSurfaceFormatsKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12295,7 +11696,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR( marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR readParams"); // WARNING PTR CHECK uint32_t* check_pSurfaceFormatCount; check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -12328,7 +11728,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR( transform_fromhost_VkSurfaceFormatKHR(mImpl->resources(), (VkSurfaceFormatKHR*)(pSurfaceFormats + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR returnUnmarshal"); VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -12345,7 +11744,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR( VkPresentModeKHR* pPresentModes) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR encode"); mImpl->log("start vkGetPhysicalDeviceSurfacePresentModesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12404,7 +11802,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR( { stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR readParams"); // WARNING PTR CHECK uint32_t* check_pPresentModeCount; check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -12427,7 +11824,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR( } stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR returnUnmarshal"); VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -12446,7 +11842,6 @@ VkResult VkEncoder::vkCreateSwapchainKHR( VkSwapchainKHR* pSwapchain) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateSwapchainKHR encode"); mImpl->log("start vkCreateSwapchainKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12516,13 +11911,11 @@ VkResult VkEncoder::vkCreateSwapchainKHR( stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_809, 1); stream->write((uint64_t*)&cgen_var_809, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateSwapchainKHR readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_810; stream->read((uint64_t*)&cgen_var_810, 8); stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_810, (VkSwapchainKHR*)pSwapchain, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateSwapchainKHR returnUnmarshal"); VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0; stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -12538,7 +11931,6 @@ void VkEncoder::vkDestroySwapchainKHR( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroySwapchainKHR encode"); mImpl->log("start vkDestroySwapchainKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12595,8 +11987,6 @@ void VkEncoder::vkDestroySwapchainKHR( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroySwapchainKHR readParams"); - AEMU_SCOPED_TRACE("vkDestroySwapchainKHR returnUnmarshal"); resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain); pool->freeAll(); countingStream->clearPool(); @@ -12611,7 +12001,6 @@ VkResult VkEncoder::vkGetSwapchainImagesKHR( VkImage* pSwapchainImages) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR encode"); mImpl->log("start vkGetSwapchainImagesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12684,7 +12073,6 @@ VkResult VkEncoder::vkGetSwapchainImagesKHR( } } stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR readParams"); // WARNING PTR CHECK uint32_t* check_pSwapchainImageCount; check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -12713,7 +12101,6 @@ VkResult VkEncoder::vkGetSwapchainImagesKHR( stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_829, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount))); } } - AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR returnUnmarshal"); VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0; stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -12732,7 +12119,6 @@ VkResult VkEncoder::vkAcquireNextImageKHR( uint32_t* pImageIndex) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkAcquireNextImageKHR encode"); mImpl->log("start vkAcquireNextImageKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12785,9 +12171,7 @@ VkResult VkEncoder::vkAcquireNextImageKHR( stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_837, 1); stream->write((uint64_t*)&cgen_var_837, 1 * 8); stream->write((uint32_t*)pImageIndex, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkAcquireNextImageKHR readParams"); stream->read((uint32_t*)pImageIndex, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkAcquireNextImageKHR returnUnmarshal"); VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0; stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -12802,7 +12186,6 @@ VkResult VkEncoder::vkQueuePresentKHR( const VkPresentInfoKHR* pPresentInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkQueuePresentKHR encode"); mImpl->log("start vkQueuePresentKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12838,8 +12221,6 @@ VkResult VkEncoder::vkQueuePresentKHR( stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_839, 1); stream->write((uint64_t*)&cgen_var_839, 1 * 8); marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo)); - AEMU_SCOPED_TRACE("vkQueuePresentKHR readParams"); - AEMU_SCOPED_TRACE("vkQueuePresentKHR returnUnmarshal"); VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0; stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -12854,7 +12235,6 @@ VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR( VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR encode"); mImpl->log("start vkGetDeviceGroupPresentCapabilitiesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12879,13 +12259,11 @@ VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR( stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_841, 1); stream->write((uint64_t*)&cgen_var_841, 1 * 8); marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities)); - AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR readParams"); unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities)); if (pDeviceGroupPresentCapabilities) { transform_fromhost_VkDeviceGroupPresentCapabilitiesKHR(mImpl->resources(), (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities)); } - AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR returnUnmarshal"); VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0; stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -12901,7 +12279,6 @@ VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR( VkDeviceGroupPresentModeFlagsKHR* pModes) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR encode"); mImpl->log("start vkGetDeviceGroupSurfacePresentModesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -12946,7 +12323,6 @@ VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR( { stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR)); } - AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR readParams"); // WARNING PTR CHECK VkDeviceGroupPresentModeFlagsKHR* check_pModes; check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64(); @@ -12958,7 +12334,6 @@ VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR( } stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR)); } - AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR returnUnmarshal"); VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0; stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -12975,7 +12350,6 @@ VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR( VkRect2D* pRects) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR encode"); mImpl->log("start vkGetPhysicalDevicePresentRectanglesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -13040,7 +12414,6 @@ VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR( marshal_VkRect2D(stream, (VkRect2D*)(pRects + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR readParams"); // WARNING PTR CHECK uint32_t* check_pRectCount; check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -13073,7 +12446,6 @@ VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR( transform_fromhost_VkRect2D(mImpl->resources(), (VkRect2D*)(pRects + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR returnUnmarshal"); VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -13089,7 +12461,6 @@ VkResult VkEncoder::vkAcquireNextImage2KHR( uint32_t* pImageIndex) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR encode"); mImpl->log("start vkAcquireNextImage2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -13127,9 +12498,7 @@ VkResult VkEncoder::vkAcquireNextImage2KHR( stream->write((uint64_t*)&cgen_var_860, 1 * 8); marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo)); stream->write((uint32_t*)pImageIndex, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR readParams"); stream->read((uint32_t*)pImageIndex, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR returnUnmarshal"); VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0; stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -13147,7 +12516,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR( VkDisplayPropertiesKHR* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR encode"); mImpl->log("start vkGetPhysicalDeviceDisplayPropertiesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -13204,7 +12572,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR( marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -13237,7 +12604,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR( transform_fromhost_VkDisplayPropertiesKHR(mImpl->resources(), (VkDisplayPropertiesKHR*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR returnUnmarshal"); VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -13253,7 +12619,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR( VkDisplayPlanePropertiesKHR* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR encode"); mImpl->log("start vkGetPhysicalDeviceDisplayPlanePropertiesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -13310,7 +12675,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR( marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -13343,7 +12707,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR( transform_fromhost_VkDisplayPlanePropertiesKHR(mImpl->resources(), (VkDisplayPlanePropertiesKHR*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR returnUnmarshal"); VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -13360,7 +12723,6 @@ VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR( VkDisplayKHR* pDisplays) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR encode"); mImpl->log("start vkGetDisplayPlaneSupportedDisplaysKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -13429,7 +12791,6 @@ VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR( } } stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR readParams"); // WARNING PTR CHECK uint32_t* check_pDisplayCount; check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -13458,7 +12819,6 @@ VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR( stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_887, (VkDisplayKHR*)pDisplays, (*(pDisplayCount))); } } - AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR returnUnmarshal"); VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0; stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -13475,7 +12835,6 @@ VkResult VkEncoder::vkGetDisplayModePropertiesKHR( VkDisplayModePropertiesKHR* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR encode"); mImpl->log("start vkGetDisplayModePropertiesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -13540,7 +12899,6 @@ VkResult VkEncoder::vkGetDisplayModePropertiesKHR( marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -13573,7 +12931,6 @@ VkResult VkEncoder::vkGetDisplayModePropertiesKHR( transform_fromhost_VkDisplayModePropertiesKHR(mImpl->resources(), (VkDisplayModePropertiesKHR*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR returnUnmarshal"); VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0; stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -13591,7 +12948,6 @@ VkResult VkEncoder::vkCreateDisplayModeKHR( VkDisplayModeKHR* pMode) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR encode"); mImpl->log("start vkCreateDisplayModeKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -13669,13 +13025,11 @@ VkResult VkEncoder::vkCreateDisplayModeKHR( stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_905, 1); stream->write((uint64_t*)&cgen_var_905, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_906; stream->read((uint64_t*)&cgen_var_906, 8); stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_906, (VkDisplayModeKHR*)pMode, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR returnUnmarshal"); VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0; stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -13692,7 +13046,6 @@ VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR( VkDisplayPlaneCapabilitiesKHR* pCapabilities) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR encode"); mImpl->log("start vkGetDisplayPlaneCapabilitiesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -13729,13 +13082,11 @@ VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR( stream->write((uint64_t*)&cgen_var_910, 1 * 8); stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t)); marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities)); - AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR readParams"); unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities)); if (pCapabilities) { transform_fromhost_VkDisplayPlaneCapabilitiesKHR(mImpl->resources(), (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities)); } - AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR returnUnmarshal"); VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0; stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -13752,7 +13103,6 @@ VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR( VkSurfaceKHR* pSurface) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR encode"); mImpl->log("start vkCreateDisplayPlaneSurfaceKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -13822,11 +13172,9 @@ VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_916, 1); stream->write((uint64_t*)&cgen_var_916, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR readParams"); uint64_t cgen_var_917; stream->read((uint64_t*)&cgen_var_917, 8); stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_917, (VkSurfaceKHR*)pSurface, 1); - AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR returnUnmarshal"); VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0; stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -13846,7 +13194,6 @@ VkResult VkEncoder::vkCreateSharedSwapchainsKHR( VkSwapchainKHR* pSwapchains) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR encode"); mImpl->log("start vkCreateSharedSwapchainsKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -13940,7 +13287,6 @@ VkResult VkEncoder::vkCreateSharedSwapchainsKHR( stream->write((uint64_t*)cgen_var_923, ((swapchainCount)) * 8); } stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR readParams"); if (((swapchainCount))) { uint64_t* cgen_var_924; @@ -13948,7 +13294,6 @@ VkResult VkEncoder::vkCreateSharedSwapchainsKHR( stream->read((uint64_t*)cgen_var_924, ((swapchainCount)) * 8); stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_924, (VkSwapchainKHR*)pSwapchains, ((swapchainCount))); } - AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR returnUnmarshal"); VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0; stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -13967,7 +13312,6 @@ VkResult VkEncoder::vkCreateXlibSurfaceKHR( VkSurfaceKHR* pSurface) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR encode"); mImpl->log("start vkCreateXlibSurfaceKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14037,11 +13381,9 @@ VkResult VkEncoder::vkCreateXlibSurfaceKHR( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_930, 1); stream->write((uint64_t*)&cgen_var_930, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR readParams"); uint64_t cgen_var_931; stream->read((uint64_t*)&cgen_var_931, 8); stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_931, (VkSurfaceKHR*)pSurface, 1); - AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR returnUnmarshal"); VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0; stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -14058,7 +13400,6 @@ VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR( VisualID visualID) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR encode"); mImpl->log("start vkGetPhysicalDeviceXlibPresentationSupportKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14091,9 +13432,7 @@ VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR( stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); stream->write((Display*)dpy, sizeof(Display)); stream->write((VisualID*)&local_visualID, sizeof(VisualID)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR readParams"); stream->read((Display*)dpy, sizeof(Display)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR returnUnmarshal"); VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0; stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32)); pool->freeAll(); @@ -14112,7 +13451,6 @@ VkResult VkEncoder::vkCreateXcbSurfaceKHR( VkSurfaceKHR* pSurface) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR encode"); mImpl->log("start vkCreateXcbSurfaceKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14182,11 +13520,9 @@ VkResult VkEncoder::vkCreateXcbSurfaceKHR( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_939, 1); stream->write((uint64_t*)&cgen_var_939, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR readParams"); uint64_t cgen_var_940; stream->read((uint64_t*)&cgen_var_940, 8); stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_940, (VkSurfaceKHR*)pSurface, 1); - AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR returnUnmarshal"); VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0; stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -14203,7 +13539,6 @@ VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR( xcb_visualid_t visual_id) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR encode"); mImpl->log("start vkGetPhysicalDeviceXcbPresentationSupportKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14236,9 +13571,7 @@ VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR( stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t)); stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR readParams"); stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR returnUnmarshal"); VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0; stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32)); pool->freeAll(); @@ -14257,7 +13590,6 @@ VkResult VkEncoder::vkCreateWaylandSurfaceKHR( VkSurfaceKHR* pSurface) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR encode"); mImpl->log("start vkCreateWaylandSurfaceKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14327,11 +13659,9 @@ VkResult VkEncoder::vkCreateWaylandSurfaceKHR( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_948, 1); stream->write((uint64_t*)&cgen_var_948, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR readParams"); uint64_t cgen_var_949; stream->read((uint64_t*)&cgen_var_949, 8); stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_949, (VkSurfaceKHR*)pSurface, 1); - AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR returnUnmarshal"); VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0; stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -14347,7 +13677,6 @@ VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR( wl_display* display) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR encode"); mImpl->log("start vkGetPhysicalDeviceWaylandPresentationSupportKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14376,9 +13705,7 @@ VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR( stream->write((uint64_t*)&cgen_var_951, 1 * 8); stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); stream->write((wl_display*)display, sizeof(wl_display)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR readParams"); stream->read((wl_display*)display, sizeof(wl_display)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR returnUnmarshal"); VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0; stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32)); pool->freeAll(); @@ -14397,7 +13724,6 @@ VkResult VkEncoder::vkCreateMirSurfaceKHR( VkSurfaceKHR* pSurface) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR encode"); mImpl->log("start vkCreateMirSurfaceKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14467,11 +13793,9 @@ VkResult VkEncoder::vkCreateMirSurfaceKHR( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_957, 1); stream->write((uint64_t*)&cgen_var_957, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR readParams"); uint64_t cgen_var_958; stream->read((uint64_t*)&cgen_var_958, 8); stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_958, (VkSurfaceKHR*)pSurface, 1); - AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR returnUnmarshal"); VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0; stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -14487,7 +13811,6 @@ VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR( MirConnection* connection) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR encode"); mImpl->log("start vkGetPhysicalDeviceMirPresentationSupportKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14516,9 +13839,7 @@ VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR( stream->write((uint64_t*)&cgen_var_960, 1 * 8); stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); stream->write((MirConnection*)connection, sizeof(MirConnection)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR readParams"); stream->read((MirConnection*)connection, sizeof(MirConnection)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR returnUnmarshal"); VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0; stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32)); pool->freeAll(); @@ -14537,7 +13858,6 @@ VkResult VkEncoder::vkCreateAndroidSurfaceKHR( VkSurfaceKHR* pSurface) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR encode"); mImpl->log("start vkCreateAndroidSurfaceKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14607,11 +13927,9 @@ VkResult VkEncoder::vkCreateAndroidSurfaceKHR( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_966, 1); stream->write((uint64_t*)&cgen_var_966, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR readParams"); uint64_t cgen_var_967; stream->read((uint64_t*)&cgen_var_967, 8); stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_967, (VkSurfaceKHR*)pSurface, 1); - AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR returnUnmarshal"); VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0; stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -14630,7 +13948,6 @@ VkResult VkEncoder::vkCreateWin32SurfaceKHR( VkSurfaceKHR* pSurface) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR encode"); mImpl->log("start vkCreateWin32SurfaceKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14700,11 +14017,9 @@ VkResult VkEncoder::vkCreateWin32SurfaceKHR( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_973, 1); stream->write((uint64_t*)&cgen_var_973, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR readParams"); uint64_t cgen_var_974; stream->read((uint64_t*)&cgen_var_974, 8); stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_974, (VkSurfaceKHR*)pSurface, 1); - AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR returnUnmarshal"); VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0; stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -14719,7 +14034,6 @@ VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR( uint32_t queueFamilyIndex) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR encode"); mImpl->log("start vkGetPhysicalDeviceWin32PresentationSupportKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14746,8 +14060,6 @@ VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR( stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_976, 1); stream->write((uint64_t*)&cgen_var_976, 1 * 8); stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR readParams"); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR returnUnmarshal"); VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0; stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32)); pool->freeAll(); @@ -14768,7 +14080,6 @@ void VkEncoder::vkGetPhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2* pFeatures) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR encode"); mImpl->log("start vkGetPhysicalDeviceFeatures2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14793,13 +14104,11 @@ void VkEncoder::vkGetPhysicalDeviceFeatures2KHR( stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_978, 1); stream->write((uint64_t*)&cgen_var_978, 1 * 8); marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR readParams"); unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures)); if (pFeatures) { transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -14811,7 +14120,6 @@ void VkEncoder::vkGetPhysicalDeviceProperties2KHR( VkPhysicalDeviceProperties2* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR encode"); mImpl->log("start vkGetPhysicalDeviceProperties2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14836,13 +14144,11 @@ void VkEncoder::vkGetPhysicalDeviceProperties2KHR( stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1); stream->write((uint64_t*)&cgen_var_980, 1 * 8); marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR readParams"); unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties)); if (pProperties) { transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR returnUnmarshal"); mImpl->resources()->on_vkGetPhysicalDeviceProperties2KHR(this, physicalDevice, pProperties); pool->freeAll(); countingStream->clearPool(); @@ -14856,7 +14162,6 @@ void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR( VkFormatProperties2* pFormatProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR encode"); mImpl->log("start vkGetPhysicalDeviceFormatProperties2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14885,13 +14190,11 @@ void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR( stream->write((uint64_t*)&cgen_var_982, 1 * 8); stream->write((VkFormat*)&local_format, sizeof(VkFormat)); marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR readParams"); unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties)); if (pFormatProperties) { transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -14904,7 +14207,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR( VkImageFormatProperties2* pImageFormatProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR encode"); mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -14942,13 +14244,11 @@ VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR( stream->write((uint64_t*)&cgen_var_984, 1 * 8); marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo)); marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR readParams"); unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties)); if (pImageFormatProperties) { transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR returnUnmarshal"); VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -14964,7 +14264,6 @@ void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR( VkQueueFamilyProperties2* pQueueFamilyProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR encode"); mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15021,7 +14320,6 @@ void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR( marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR readParams"); // WARNING PTR CHECK uint32_t* check_pQueueFamilyPropertyCount; check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -15054,7 +14352,6 @@ void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR( transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -15066,7 +14363,6 @@ void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR( VkPhysicalDeviceMemoryProperties2* pMemoryProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR encode"); mImpl->log("start vkGetPhysicalDeviceMemoryProperties2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15091,13 +14387,11 @@ void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR( stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_994, 1); stream->write((uint64_t*)&cgen_var_994, 1 * 8); marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR readParams"); unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); if (pMemoryProperties) { transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR returnUnmarshal"); mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2KHR(this, physicalDevice, pMemoryProperties); pool->freeAll(); countingStream->clearPool(); @@ -15112,7 +14406,6 @@ void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR( VkSparseImageFormatProperties2* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR encode"); mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15182,7 +14475,6 @@ void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR( marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -15215,7 +14507,6 @@ void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR( transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -15232,7 +14523,6 @@ void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR( VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR encode"); mImpl->log("start vkGetDeviceGroupPeerMemoryFeaturesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15269,9 +14559,7 @@ void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR( stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t)); stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t)); stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags)); - AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR readParams"); stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags)); - AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -15283,7 +14571,6 @@ void VkEncoder::vkCmdSetDeviceMaskKHR( uint32_t deviceMask) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR encode"); mImpl->log("start vkCmdSetDeviceMaskKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15310,8 +14597,6 @@ void VkEncoder::vkCmdSetDeviceMaskKHR( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1006, 1); stream->write((uint64_t*)&cgen_var_1006, 1 * 8); stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR readParams"); - AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -15328,7 +14613,6 @@ void VkEncoder::vkCmdDispatchBaseKHR( uint32_t groupCountZ) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR encode"); mImpl->log("start vkCmdDispatchBaseKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15375,8 +14659,6 @@ void VkEncoder::vkCmdDispatchBaseKHR( stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t)); stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t)); stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR readParams"); - AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -15393,7 +14675,6 @@ void VkEncoder::vkTrimCommandPoolKHR( VkCommandPoolTrimFlags flags) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR encode"); mImpl->log("start vkTrimCommandPoolKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15428,8 +14709,6 @@ void VkEncoder::vkTrimCommandPoolKHR( stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1012, 1); stream->write((uint64_t*)&cgen_var_1012, 1 * 8); stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags)); - AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR readParams"); - AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -15444,7 +14723,6 @@ VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR( VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR encode"); mImpl->log("start vkEnumeratePhysicalDeviceGroupsKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15501,7 +14779,6 @@ VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR( marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); } } - AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR readParams"); // WARNING PTR CHECK uint32_t* check_pPhysicalDeviceGroupCount; check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -15534,7 +14811,6 @@ VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR( transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); } } - AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR returnUnmarshal"); VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0; stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -15552,7 +14828,6 @@ void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR( VkExternalBufferProperties* pExternalBufferProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR encode"); mImpl->log("start vkGetPhysicalDeviceExternalBufferPropertiesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15591,14 +14866,12 @@ void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR( stream->write((uint64_t*)&cgen_var_1022, 1 * 8); marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo)); marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR readParams"); unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties)); if (pExternalBufferProperties) { mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1); transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -15615,7 +14888,6 @@ VkResult VkEncoder::vkGetMemoryWin32HandleKHR( HANDLE* pHandle) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR encode"); mImpl->log("start vkGetMemoryWin32HandleKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15653,9 +14925,7 @@ VkResult VkEncoder::vkGetMemoryWin32HandleKHR( stream->write((uint64_t*)&cgen_var_1024, 1 * 8); marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); stream->write((HANDLE*)pHandle, sizeof(HANDLE)); - AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR readParams"); stream->read((HANDLE*)pHandle, sizeof(HANDLE)); - AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR returnUnmarshal"); VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0; stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -15672,7 +14942,6 @@ VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR( VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR encode"); mImpl->log("start vkGetMemoryWin32HandlePropertiesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15705,13 +14974,11 @@ VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR( stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits)); stream->write((HANDLE*)&local_handle, sizeof(HANDLE)); marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties)); - AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR readParams"); unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties)); if (pMemoryWin32HandleProperties) { transform_fromhost_VkMemoryWin32HandlePropertiesKHR(mImpl->resources(), (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties)); } - AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR returnUnmarshal"); VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0; stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -15729,7 +14996,6 @@ VkResult VkEncoder::vkGetMemoryFdKHR( int* pFd) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetMemoryFdKHR encode"); mImpl->log("start vkGetMemoryFdKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15767,9 +15033,7 @@ VkResult VkEncoder::vkGetMemoryFdKHR( stream->write((uint64_t*)&cgen_var_1028, 1 * 8); marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo)); stream->write((int*)pFd, sizeof(int)); - AEMU_SCOPED_TRACE("vkGetMemoryFdKHR readParams"); stream->read((int*)pFd, sizeof(int)); - AEMU_SCOPED_TRACE("vkGetMemoryFdKHR returnUnmarshal"); VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0; stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -15786,7 +15050,6 @@ VkResult VkEncoder::vkGetMemoryFdPropertiesKHR( VkMemoryFdPropertiesKHR* pMemoryFdProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR encode"); mImpl->log("start vkGetMemoryFdPropertiesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15819,13 +15082,11 @@ VkResult VkEncoder::vkGetMemoryFdPropertiesKHR( stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits)); stream->write((int*)&local_fd, sizeof(int)); marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties)); - AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR readParams"); unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties)); if (pMemoryFdProperties) { transform_fromhost_VkMemoryFdPropertiesKHR(mImpl->resources(), (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties)); } - AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR returnUnmarshal"); VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0; stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -15845,7 +15106,6 @@ void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( VkExternalSemaphoreProperties* pExternalSemaphoreProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR encode"); mImpl->log("start vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15883,13 +15143,11 @@ void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( stream->write((uint64_t*)&cgen_var_1032, 1 * 8); marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo)); marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR readParams"); unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); if (pExternalSemaphoreProperties) { transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -15905,7 +15163,6 @@ VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR( const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR encode"); mImpl->log("start vkImportSemaphoreWin32HandleKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15941,8 +15198,6 @@ VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR( stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1034, 1); stream->write((uint64_t*)&cgen_var_1034, 1 * 8); marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo)); - AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR readParams"); - AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR returnUnmarshal"); VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0; stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -15958,7 +15213,6 @@ VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR( HANDLE* pHandle) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR encode"); mImpl->log("start vkGetSemaphoreWin32HandleKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -15996,9 +15250,7 @@ VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR( stream->write((uint64_t*)&cgen_var_1036, 1 * 8); marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); stream->write((HANDLE*)pHandle, sizeof(HANDLE)); - AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR readParams"); stream->read((HANDLE*)pHandle, sizeof(HANDLE)); - AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR returnUnmarshal"); VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0; stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -16015,7 +15267,6 @@ VkResult VkEncoder::vkImportSemaphoreFdKHR( const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR encode"); mImpl->log("start vkImportSemaphoreFdKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16051,8 +15302,6 @@ VkResult VkEncoder::vkImportSemaphoreFdKHR( stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1038, 1); stream->write((uint64_t*)&cgen_var_1038, 1 * 8); marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo)); - AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR readParams"); - AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR returnUnmarshal"); VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0; stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -16068,7 +15317,6 @@ VkResult VkEncoder::vkGetSemaphoreFdKHR( int* pFd) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR encode"); mImpl->log("start vkGetSemaphoreFdKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16106,9 +15354,7 @@ VkResult VkEncoder::vkGetSemaphoreFdKHR( stream->write((uint64_t*)&cgen_var_1040, 1 * 8); marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo)); stream->write((int*)pFd, sizeof(int)); - AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR readParams"); stream->read((int*)pFd, sizeof(int)); - AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR returnUnmarshal"); VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0; stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -16129,7 +15375,6 @@ void VkEncoder::vkCmdPushDescriptorSetKHR( const VkWriteDescriptorSet* pDescriptorWrites) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR encode"); mImpl->log("start vkCmdPushDescriptorSetKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16197,8 +15442,6 @@ void VkEncoder::vkCmdPushDescriptorSetKHR( { marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i)); } - AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR readParams"); - AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -16213,7 +15456,6 @@ void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR( const void* pData) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR encode"); mImpl->log("start vkCmdPushDescriptorSetWithTemplateKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16276,8 +15518,6 @@ void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR( { stream->write((void*)local_pData, sizeof(uint8_t)); } - AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR readParams"); - AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -16297,7 +15537,6 @@ VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR( VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR encode"); mImpl->log("start vkCreateDescriptorUpdateTemplateKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16367,13 +15606,11 @@ VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR( stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1058, 1); stream->write((uint64_t*)&cgen_var_1058, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_1059; stream->read((uint64_t*)&cgen_var_1059, 8); stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1059, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR returnUnmarshal"); VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0; stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult)); mImpl->resources()->on_vkCreateDescriptorUpdateTemplateKHR(this, vkCreateDescriptorUpdateTemplateKHR_VkResult_return, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate); @@ -16390,7 +15627,6 @@ void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR encode"); mImpl->log("start vkDestroyDescriptorUpdateTemplateKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16447,8 +15683,6 @@ void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR readParams"); - AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR returnUnmarshal"); resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate); pool->freeAll(); countingStream->clearPool(); @@ -16463,7 +15697,6 @@ void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR( const void* pData) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR encode"); mImpl->log("start vkUpdateDescriptorSetWithTemplateKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16522,8 +15755,6 @@ void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR( { stream->write((void*)local_pData, sizeof(uint8_t)); } - AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR readParams"); - AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -16539,7 +15770,6 @@ VkResult VkEncoder::vkCreateRenderPass2KHR( VkRenderPass* pRenderPass) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR encode"); mImpl->log("start vkCreateRenderPass2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16609,11 +15839,9 @@ VkResult VkEncoder::vkCreateRenderPass2KHR( stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1079, 1); stream->write((uint64_t*)&cgen_var_1079, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR readParams"); uint64_t cgen_var_1080; stream->read((uint64_t*)&cgen_var_1080, 8); stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1080, (VkRenderPass*)pRenderPass, 1); - AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR returnUnmarshal"); VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0; stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -16629,7 +15857,6 @@ void VkEncoder::vkCmdBeginRenderPass2KHR( const VkSubpassBeginInfoKHR* pSubpassBeginInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR encode"); mImpl->log("start vkCmdBeginRenderPass2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16678,8 +15905,6 @@ void VkEncoder::vkCmdBeginRenderPass2KHR( stream->write((uint64_t*)&cgen_var_1082, 1 * 8); marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin)); marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo)); - AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR readParams"); - AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -16692,7 +15917,6 @@ void VkEncoder::vkCmdNextSubpass2KHR( const VkSubpassEndInfoKHR* pSubpassEndInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR encode"); mImpl->log("start vkCmdNextSubpass2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16741,8 +15965,6 @@ void VkEncoder::vkCmdNextSubpass2KHR( stream->write((uint64_t*)&cgen_var_1084, 1 * 8); marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo)); marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo)); - AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR readParams"); - AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -16754,7 +15976,6 @@ void VkEncoder::vkCmdEndRenderPass2KHR( const VkSubpassEndInfoKHR* pSubpassEndInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR encode"); mImpl->log("start vkCmdEndRenderPass2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16790,8 +16011,6 @@ void VkEncoder::vkCmdEndRenderPass2KHR( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1086, 1); stream->write((uint64_t*)&cgen_var_1086, 1 * 8); marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo)); - AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR readParams"); - AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -16805,7 +16024,6 @@ VkResult VkEncoder::vkGetSwapchainStatusKHR( VkSwapchainKHR swapchain) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR encode"); mImpl->log("start vkGetSwapchainStatusKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16836,8 +16054,6 @@ VkResult VkEncoder::vkGetSwapchainStatusKHR( uint64_t cgen_var_1090; stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1090, 1); stream->write((uint64_t*)&cgen_var_1090, 1 * 8); - AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR readParams"); - AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR returnUnmarshal"); VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0; stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -16855,7 +16071,6 @@ void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR( VkExternalFenceProperties* pExternalFenceProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR encode"); mImpl->log("start vkGetPhysicalDeviceExternalFencePropertiesKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16893,13 +16108,11 @@ void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR( stream->write((uint64_t*)&cgen_var_1092, 1 * 8); marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo)); marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR readParams"); unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties)); if (pExternalFenceProperties) { transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -16915,7 +16128,6 @@ VkResult VkEncoder::vkImportFenceWin32HandleKHR( const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR encode"); mImpl->log("start vkImportFenceWin32HandleKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -16951,8 +16163,6 @@ VkResult VkEncoder::vkImportFenceWin32HandleKHR( stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1094, 1); stream->write((uint64_t*)&cgen_var_1094, 1 * 8); marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo)); - AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR readParams"); - AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR returnUnmarshal"); VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0; stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -16968,7 +16178,6 @@ VkResult VkEncoder::vkGetFenceWin32HandleKHR( HANDLE* pHandle) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR encode"); mImpl->log("start vkGetFenceWin32HandleKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -17006,9 +16215,7 @@ VkResult VkEncoder::vkGetFenceWin32HandleKHR( stream->write((uint64_t*)&cgen_var_1096, 1 * 8); marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); stream->write((HANDLE*)pHandle, sizeof(HANDLE)); - AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR readParams"); stream->read((HANDLE*)pHandle, sizeof(HANDLE)); - AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR returnUnmarshal"); VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0; stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -17025,7 +16232,6 @@ VkResult VkEncoder::vkImportFenceFdKHR( const VkImportFenceFdInfoKHR* pImportFenceFdInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkImportFenceFdKHR encode"); mImpl->log("start vkImportFenceFdKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -17061,8 +16267,6 @@ VkResult VkEncoder::vkImportFenceFdKHR( stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1098, 1); stream->write((uint64_t*)&cgen_var_1098, 1 * 8); marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo)); - AEMU_SCOPED_TRACE("vkImportFenceFdKHR readParams"); - AEMU_SCOPED_TRACE("vkImportFenceFdKHR returnUnmarshal"); VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0; stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -17078,7 +16282,6 @@ VkResult VkEncoder::vkGetFenceFdKHR( int* pFd) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetFenceFdKHR encode"); mImpl->log("start vkGetFenceFdKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -17116,9 +16319,7 @@ VkResult VkEncoder::vkGetFenceFdKHR( stream->write((uint64_t*)&cgen_var_1100, 1 * 8); marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo)); stream->write((int*)pFd, sizeof(int)); - AEMU_SCOPED_TRACE("vkGetFenceFdKHR readParams"); stream->read((int*)pFd, sizeof(int)); - AEMU_SCOPED_TRACE("vkGetFenceFdKHR returnUnmarshal"); VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0; stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -17138,7 +16339,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR( VkSurfaceCapabilities2KHR* pSurfaceCapabilities) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR encode"); mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -17176,13 +16376,11 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR( stream->write((uint64_t*)&cgen_var_1102, 1 * 8); marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo)); marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR readParams"); unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities)); if (pSurfaceCapabilities) { transform_fromhost_VkSurfaceCapabilities2KHR(mImpl->resources(), (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR returnUnmarshal"); VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -17199,7 +16397,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR( VkSurfaceFormat2KHR* pSurfaceFormats) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR encode"); mImpl->log("start vkGetPhysicalDeviceSurfaceFormats2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -17269,7 +16466,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR( marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR readParams"); // WARNING PTR CHECK uint32_t* check_pSurfaceFormatCount; check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -17302,7 +16498,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR( transform_fromhost_VkSurfaceFormat2KHR(mImpl->resources(), (VkSurfaceFormat2KHR*)(pSurfaceFormats + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR returnUnmarshal"); VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -17322,7 +16517,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR( VkDisplayProperties2KHR* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR encode"); mImpl->log("start vkGetPhysicalDeviceDisplayProperties2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -17379,7 +16573,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR( marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -17412,7 +16605,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR( transform_fromhost_VkDisplayProperties2KHR(mImpl->resources(), (VkDisplayProperties2KHR*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR returnUnmarshal"); VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -17428,7 +16620,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR( VkDisplayPlaneProperties2KHR* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR encode"); mImpl->log("start vkGetPhysicalDeviceDisplayPlaneProperties2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -17485,7 +16676,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR( marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -17518,7 +16708,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR( transform_fromhost_VkDisplayPlaneProperties2KHR(mImpl->resources(), (VkDisplayPlaneProperties2KHR*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR returnUnmarshal"); VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -17535,7 +16724,6 @@ VkResult VkEncoder::vkGetDisplayModeProperties2KHR( VkDisplayModeProperties2KHR* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR encode"); mImpl->log("start vkGetDisplayModeProperties2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -17600,7 +16788,6 @@ VkResult VkEncoder::vkGetDisplayModeProperties2KHR( marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR readParams"); // WARNING PTR CHECK uint32_t* check_pPropertyCount; check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -17633,7 +16820,6 @@ VkResult VkEncoder::vkGetDisplayModeProperties2KHR( transform_fromhost_VkDisplayModeProperties2KHR(mImpl->resources(), (VkDisplayModeProperties2KHR*)(pProperties + i)); } } - AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR returnUnmarshal"); VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0; stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -17649,7 +16835,6 @@ VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR( VkDisplayPlaneCapabilities2KHR* pCapabilities) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR encode"); mImpl->log("start vkGetDisplayPlaneCapabilities2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -17687,13 +16872,11 @@ VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR( stream->write((uint64_t*)&cgen_var_1138, 1 * 8); marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo)); marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities)); - AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR readParams"); unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities)); if (pCapabilities) { transform_fromhost_VkDisplayPlaneCapabilities2KHR(mImpl->resources(), (VkDisplayPlaneCapabilities2KHR*)(pCapabilities)); } - AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR returnUnmarshal"); VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0; stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -17717,7 +16900,6 @@ void VkEncoder::vkGetImageMemoryRequirements2KHR( VkMemoryRequirements2* pMemoryRequirements) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR encode"); mImpl->log("start vkGetImageMemoryRequirements2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -17755,13 +16937,11 @@ void VkEncoder::vkGetImageMemoryRequirements2KHR( stream->write((uint64_t*)&cgen_var_1140, 1 * 8); marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo)); marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); - AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR readParams"); unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); if (pMemoryRequirements) { transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements)); } - AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -17774,7 +16954,6 @@ void VkEncoder::vkGetBufferMemoryRequirements2KHR( VkMemoryRequirements2* pMemoryRequirements) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR encode"); mImpl->log("start vkGetBufferMemoryRequirements2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -17812,13 +16991,11 @@ void VkEncoder::vkGetBufferMemoryRequirements2KHR( stream->write((uint64_t*)&cgen_var_1142, 1 * 8); marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo)); marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); - AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR readParams"); unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); if (pMemoryRequirements) { transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements)); } - AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -17832,7 +17009,6 @@ void VkEncoder::vkGetImageSparseMemoryRequirements2KHR( VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR encode"); mImpl->log("start vkGetImageSparseMemoryRequirements2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -17902,7 +17078,6 @@ void VkEncoder::vkGetImageSparseMemoryRequirements2KHR( marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); } } - AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR readParams"); // WARNING PTR CHECK uint32_t* check_pSparseMemoryRequirementCount; check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -17935,7 +17110,6 @@ void VkEncoder::vkGetImageSparseMemoryRequirements2KHR( transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); } } - AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -17953,7 +17127,6 @@ VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR( VkSamplerYcbcrConversion* pYcbcrConversion) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR encode"); mImpl->log("start vkCreateSamplerYcbcrConversionKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18023,13 +17196,11 @@ VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR( stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1156, 1); stream->write((uint64_t*)&cgen_var_1156, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_1157; stream->read((uint64_t*)&cgen_var_1157, 8); stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1157, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR returnUnmarshal"); VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0; stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -18045,7 +17216,6 @@ void VkEncoder::vkDestroySamplerYcbcrConversionKHR( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR encode"); mImpl->log("start vkDestroySamplerYcbcrConversionKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18102,8 +17272,6 @@ void VkEncoder::vkDestroySamplerYcbcrConversionKHR( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR readParams"); - AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR returnUnmarshal"); resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion); pool->freeAll(); countingStream->clearPool(); @@ -18119,7 +17287,6 @@ VkResult VkEncoder::vkBindBufferMemory2KHR( const VkBindBufferMemoryInfo* pBindInfos) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR encode"); mImpl->log("start vkBindBufferMemory2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18171,8 +17338,6 @@ VkResult VkEncoder::vkBindBufferMemory2KHR( { marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i)); } - AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR readParams"); - AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR returnUnmarshal"); VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0; stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -18188,7 +17353,6 @@ VkResult VkEncoder::vkBindImageMemory2KHR( const VkBindImageMemoryInfo* pBindInfos) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkBindImageMemory2KHR encode"); mImpl->log("start vkBindImageMemory2KHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18240,8 +17404,6 @@ VkResult VkEncoder::vkBindImageMemory2KHR( { marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i)); } - AEMU_SCOPED_TRACE("vkBindImageMemory2KHR readParams"); - AEMU_SCOPED_TRACE("vkBindImageMemory2KHR returnUnmarshal"); VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0; stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -18259,7 +17421,6 @@ void VkEncoder::vkGetDescriptorSetLayoutSupportKHR( VkDescriptorSetLayoutSupport* pSupport) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR encode"); mImpl->log("start vkGetDescriptorSetLayoutSupportKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18297,13 +17458,11 @@ void VkEncoder::vkGetDescriptorSetLayoutSupportKHR( stream->write((uint64_t*)&cgen_var_1169, 1 * 8); marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport)); - AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR readParams"); unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport)); if (pSupport) { transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport)); } - AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -18322,7 +17481,6 @@ void VkEncoder::vkCmdDrawIndirectCountKHR( uint32_t stride) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR encode"); mImpl->log("start vkCmdDrawIndirectCountKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18377,8 +17535,6 @@ void VkEncoder::vkCmdDrawIndirectCountKHR( stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize)); stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t)); stream->write((uint32_t*)&local_stride, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR readParams"); - AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -18395,7 +17551,6 @@ void VkEncoder::vkCmdDrawIndexedIndirectCountKHR( uint32_t stride) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR encode"); mImpl->log("start vkCmdDrawIndexedIndirectCountKHR"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18450,8 +17605,6 @@ void VkEncoder::vkCmdDrawIndexedIndirectCountKHR( stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize)); stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t)); stream->write((uint32_t*)&local_stride, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR readParams"); - AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -18471,7 +17624,6 @@ VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID( int* grallocUsage) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID encode"); mImpl->log("start vkGetSwapchainGrallocUsageANDROID"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18504,9 +17656,7 @@ VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID( stream->write((VkFormat*)&local_format, sizeof(VkFormat)); stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags)); stream->write((int*)grallocUsage, sizeof(int)); - AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID readParams"); stream->read((int*)grallocUsage, sizeof(int)); - AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID returnUnmarshal"); VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0; stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -18524,7 +17674,6 @@ VkResult VkEncoder::vkAcquireImageANDROID( VkFence fence) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkAcquireImageANDROID encode"); mImpl->log("start vkAcquireImageANDROID"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18576,8 +17725,6 @@ VkResult VkEncoder::vkAcquireImageANDROID( uint64_t cgen_var_1191; stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1191, 1); stream->write((uint64_t*)&cgen_var_1191, 1 * 8); - AEMU_SCOPED_TRACE("vkAcquireImageANDROID readParams"); - AEMU_SCOPED_TRACE("vkAcquireImageANDROID returnUnmarshal"); VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0; stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -18595,7 +17742,6 @@ VkResult VkEncoder::vkQueueSignalReleaseImageANDROID( int* pNativeFenceFd) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID encode"); mImpl->log("start vkQueueSignalReleaseImageANDROID"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18664,9 +17810,7 @@ VkResult VkEncoder::vkQueueSignalReleaseImageANDROID( stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1199, 1); stream->write((uint64_t*)&cgen_var_1199, 1 * 8); stream->write((int*)pNativeFenceFd, sizeof(int)); - AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID readParams"); stream->read((int*)pNativeFenceFd, sizeof(int)); - AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID returnUnmarshal"); VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0; stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult)); stream->flush(); @@ -18686,7 +17830,6 @@ VkResult VkEncoder::vkCreateDebugReportCallbackEXT( VkDebugReportCallbackEXT* pCallback) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT encode"); mImpl->log("start vkCreateDebugReportCallbackEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18756,13 +17899,11 @@ VkResult VkEncoder::vkCreateDebugReportCallbackEXT( stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1205, 1); stream->write((uint64_t*)&cgen_var_1205, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_1206; stream->read((uint64_t*)&cgen_var_1206, 8); stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1206, (VkDebugReportCallbackEXT*)pCallback, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT returnUnmarshal"); VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0; stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -18778,7 +17919,6 @@ void VkEncoder::vkDestroyDebugReportCallbackEXT( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT encode"); mImpl->log("start vkDestroyDebugReportCallbackEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18835,8 +17975,6 @@ void VkEncoder::vkDestroyDebugReportCallbackEXT( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT readParams"); - AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT returnUnmarshal"); resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback); pool->freeAll(); countingStream->clearPool(); @@ -18855,7 +17993,6 @@ void VkEncoder::vkDebugReportMessageEXT( const char* pMessage) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDebugReportMessageEXT encode"); mImpl->log("start vkDebugReportMessageEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18916,8 +18053,6 @@ void VkEncoder::vkDebugReportMessageEXT( stream->write((int32_t*)&local_messageCode, sizeof(int32_t)); stream->putString(local_pLayerPrefix); stream->putString(local_pMessage); - AEMU_SCOPED_TRACE("vkDebugReportMessageEXT readParams"); - AEMU_SCOPED_TRACE("vkDebugReportMessageEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -18943,7 +18078,6 @@ VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT( const VkDebugMarkerObjectTagInfoEXT* pTagInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT encode"); mImpl->log("start vkDebugMarkerSetObjectTagEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -18979,8 +18113,6 @@ VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT( stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1218, 1); stream->write((uint64_t*)&cgen_var_1218, 1 * 8); marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo)); - AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT readParams"); - AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT returnUnmarshal"); VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0; stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -18995,7 +18127,6 @@ VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT( const VkDebugMarkerObjectNameInfoEXT* pNameInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT encode"); mImpl->log("start vkDebugMarkerSetObjectNameEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19031,8 +18162,6 @@ VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT( stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1220, 1); stream->write((uint64_t*)&cgen_var_1220, 1 * 8); marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo)); - AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT readParams"); - AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT returnUnmarshal"); VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0; stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -19047,7 +18176,6 @@ void VkEncoder::vkCmdDebugMarkerBeginEXT( const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT encode"); mImpl->log("start vkCmdDebugMarkerBeginEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19083,8 +18211,6 @@ void VkEncoder::vkCmdDebugMarkerBeginEXT( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1222, 1); stream->write((uint64_t*)&cgen_var_1222, 1 * 8); marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo)); - AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT readParams"); - AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -19095,7 +18221,6 @@ void VkEncoder::vkCmdDebugMarkerEndEXT( VkCommandBuffer commandBuffer) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT encode"); mImpl->log("start vkCmdDebugMarkerEndEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19118,8 +18243,6 @@ void VkEncoder::vkCmdDebugMarkerEndEXT( uint64_t cgen_var_1224; stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1224, 1); stream->write((uint64_t*)&cgen_var_1224, 1 * 8); - AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT readParams"); - AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -19131,7 +18254,6 @@ void VkEncoder::vkCmdDebugMarkerInsertEXT( const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT encode"); mImpl->log("start vkCmdDebugMarkerInsertEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19167,8 +18289,6 @@ void VkEncoder::vkCmdDebugMarkerInsertEXT( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1226, 1); stream->write((uint64_t*)&cgen_var_1226, 1 * 8); marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo)); - AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT readParams"); - AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -19191,7 +18311,6 @@ void VkEncoder::vkCmdDrawIndirectCountAMD( uint32_t stride) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD encode"); mImpl->log("start vkCmdDrawIndirectCountAMD"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19246,8 +18365,6 @@ void VkEncoder::vkCmdDrawIndirectCountAMD( stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize)); stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t)); stream->write((uint32_t*)&local_stride, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD readParams"); - AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -19264,7 +18381,6 @@ void VkEncoder::vkCmdDrawIndexedIndirectCountAMD( uint32_t stride) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD encode"); mImpl->log("start vkCmdDrawIndexedIndirectCountAMD"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19319,8 +18435,6 @@ void VkEncoder::vkCmdDrawIndexedIndirectCountAMD( stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize)); stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t)); stream->write((uint32_t*)&local_stride, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD readParams"); - AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -19346,7 +18460,6 @@ VkResult VkEncoder::vkGetShaderInfoAMD( void* pInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetShaderInfoAMD encode"); mImpl->log("start vkGetShaderInfoAMD"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19415,7 +18528,6 @@ VkResult VkEncoder::vkGetShaderInfoAMD( { stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t)); } - AEMU_SCOPED_TRACE("vkGetShaderInfoAMD readParams"); // WARNING PTR CHECK size_t* check_pInfoSize; check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64(); @@ -19438,7 +18550,6 @@ VkResult VkEncoder::vkGetShaderInfoAMD( } stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t)); } - AEMU_SCOPED_TRACE("vkGetShaderInfoAMD returnUnmarshal"); VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0; stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -19465,7 +18576,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV( VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV encode"); mImpl->log("start vkGetPhysicalDeviceExternalImageFormatPropertiesNV"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19514,13 +18624,11 @@ VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV( stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags)); stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV)); marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV readParams"); unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties)); if (pExternalImageFormatProperties) { transform_fromhost_VkExternalImageFormatPropertiesNV(mImpl->resources(), (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV returnUnmarshal"); VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -19541,7 +18649,6 @@ VkResult VkEncoder::vkGetMemoryWin32HandleNV( HANDLE* pHandle) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV encode"); mImpl->log("start vkGetMemoryWin32HandleNV"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19579,9 +18686,7 @@ VkResult VkEncoder::vkGetMemoryWin32HandleNV( stream->write((uint64_t*)&cgen_var_1257, 1 * 8); stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV)); stream->write((HANDLE*)pHandle, sizeof(HANDLE)); - AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV readParams"); stream->read((HANDLE*)pHandle, sizeof(HANDLE)); - AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV returnUnmarshal"); VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0; stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -19604,7 +18709,6 @@ VkResult VkEncoder::vkCreateViSurfaceNN( VkSurfaceKHR* pSurface) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateViSurfaceNN encode"); mImpl->log("start vkCreateViSurfaceNN"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19674,11 +18778,9 @@ VkResult VkEncoder::vkCreateViSurfaceNN( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1263, 1); stream->write((uint64_t*)&cgen_var_1263, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateViSurfaceNN readParams"); uint64_t cgen_var_1264; stream->read((uint64_t*)&cgen_var_1264, 8); stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1264, (VkSurfaceKHR*)pSurface, 1); - AEMU_SCOPED_TRACE("vkCreateViSurfaceNN returnUnmarshal"); VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0; stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -19699,7 +18801,6 @@ void VkEncoder::vkCmdBeginConditionalRenderingEXT( const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT encode"); mImpl->log("start vkCmdBeginConditionalRenderingEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19735,8 +18836,6 @@ void VkEncoder::vkCmdBeginConditionalRenderingEXT( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1266, 1); stream->write((uint64_t*)&cgen_var_1266, 1 * 8); marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin)); - AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT readParams"); - AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -19747,7 +18846,6 @@ void VkEncoder::vkCmdEndConditionalRenderingEXT( VkCommandBuffer commandBuffer) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT encode"); mImpl->log("start vkCmdEndConditionalRenderingEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19770,8 +18868,6 @@ void VkEncoder::vkCmdEndConditionalRenderingEXT( uint64_t cgen_var_1268; stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1268, 1); stream->write((uint64_t*)&cgen_var_1268, 1 * 8); - AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT readParams"); - AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -19785,7 +18881,6 @@ void VkEncoder::vkCmdProcessCommandsNVX( const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX encode"); mImpl->log("start vkCmdProcessCommandsNVX"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19821,8 +18916,6 @@ void VkEncoder::vkCmdProcessCommandsNVX( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1270, 1); stream->write((uint64_t*)&cgen_var_1270, 1 * 8); marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo)); - AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX readParams"); - AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -19834,7 +18927,6 @@ void VkEncoder::vkCmdReserveSpaceForCommandsNVX( const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX encode"); mImpl->log("start vkCmdReserveSpaceForCommandsNVX"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19870,8 +18962,6 @@ void VkEncoder::vkCmdReserveSpaceForCommandsNVX( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1272, 1); stream->write((uint64_t*)&cgen_var_1272, 1 * 8); marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo)); - AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX readParams"); - AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -19885,7 +18975,6 @@ VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX encode"); mImpl->log("start vkCreateIndirectCommandsLayoutNVX"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -19955,13 +19044,11 @@ VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX( stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1278, 1); stream->write((uint64_t*)&cgen_var_1278, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_1279; stream->read((uint64_t*)&cgen_var_1279, 8); stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1279, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX returnUnmarshal"); VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0; stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -19977,7 +19064,6 @@ void VkEncoder::vkDestroyIndirectCommandsLayoutNVX( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX encode"); mImpl->log("start vkDestroyIndirectCommandsLayoutNVX"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20034,8 +19120,6 @@ void VkEncoder::vkDestroyIndirectCommandsLayoutNVX( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX readParams"); - AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX returnUnmarshal"); resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout); pool->freeAll(); countingStream->clearPool(); @@ -20050,7 +19134,6 @@ VkResult VkEncoder::vkCreateObjectTableNVX( VkObjectTableNVX* pObjectTable) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateObjectTableNVX encode"); mImpl->log("start vkCreateObjectTableNVX"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20120,13 +19203,11 @@ VkResult VkEncoder::vkCreateObjectTableNVX( stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1291, 1); stream->write((uint64_t*)&cgen_var_1291, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateObjectTableNVX readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_1292; stream->read((uint64_t*)&cgen_var_1292, 8); stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1292, (VkObjectTableNVX*)pObjectTable, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateObjectTableNVX returnUnmarshal"); VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0; stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -20142,7 +19223,6 @@ void VkEncoder::vkDestroyObjectTableNVX( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX encode"); mImpl->log("start vkDestroyObjectTableNVX"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20199,8 +19279,6 @@ void VkEncoder::vkDestroyObjectTableNVX( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX readParams"); - AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX returnUnmarshal"); resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable); pool->freeAll(); countingStream->clearPool(); @@ -20216,7 +19294,6 @@ VkResult VkEncoder::vkRegisterObjectsNVX( const uint32_t* pObjectIndices) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkRegisterObjectsNVX encode"); mImpl->log("start vkRegisterObjectsNVX"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20264,8 +19341,6 @@ VkResult VkEncoder::vkRegisterObjectsNVX( stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t)); (void)local_ppObjectTableEntries; stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkRegisterObjectsNVX readParams"); - AEMU_SCOPED_TRACE("vkRegisterObjectsNVX returnUnmarshal"); VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0; stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -20283,7 +19358,6 @@ VkResult VkEncoder::vkUnregisterObjectsNVX( const uint32_t* pObjectIndices) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX encode"); mImpl->log("start vkUnregisterObjectsNVX"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20334,8 +19408,6 @@ VkResult VkEncoder::vkUnregisterObjectsNVX( stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t)); stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX)); stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX readParams"); - AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX returnUnmarshal"); VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0; stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -20351,7 +19423,6 @@ void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( VkDeviceGeneratedCommandsLimitsNVX* pLimits) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX encode"); mImpl->log("start vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20378,7 +19449,6 @@ void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( stream->write((uint64_t*)&cgen_var_1308, 1 * 8); marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures)); marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX readParams"); unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures)); if (pFeatures) { @@ -20389,7 +19459,6 @@ void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( { transform_fromhost_VkDeviceGeneratedCommandsLimitsNVX(mImpl->resources(), (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -20405,7 +19474,6 @@ void VkEncoder::vkCmdSetViewportWScalingNV( const VkViewportWScalingNV* pViewportWScalings) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV encode"); mImpl->log("start vkCmdSetViewportWScalingNV"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20461,8 +19529,6 @@ void VkEncoder::vkCmdSetViewportWScalingNV( { marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i)); } - AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV readParams"); - AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -20476,7 +19542,6 @@ VkResult VkEncoder::vkReleaseDisplayEXT( VkDisplayKHR display) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkReleaseDisplayEXT encode"); mImpl->log("start vkReleaseDisplayEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20507,8 +19572,6 @@ VkResult VkEncoder::vkReleaseDisplayEXT( uint64_t cgen_var_1314; stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1314, 1); stream->write((uint64_t*)&cgen_var_1314, 1 * 8); - AEMU_SCOPED_TRACE("vkReleaseDisplayEXT readParams"); - AEMU_SCOPED_TRACE("vkReleaseDisplayEXT returnUnmarshal"); VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0; stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -20526,7 +19589,6 @@ VkResult VkEncoder::vkAcquireXlibDisplayEXT( VkDisplayKHR display) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT encode"); mImpl->log("start vkAcquireXlibDisplayEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20559,9 +19621,7 @@ VkResult VkEncoder::vkAcquireXlibDisplayEXT( uint64_t cgen_var_1318; stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1318, 1); stream->write((uint64_t*)&cgen_var_1318, 1 * 8); - AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT readParams"); stream->read((Display*)dpy, sizeof(Display)); - AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT returnUnmarshal"); VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0; stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -20578,7 +19638,6 @@ VkResult VkEncoder::vkGetRandROutputDisplayEXT( VkDisplayKHR* pDisplay) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT encode"); mImpl->log("start vkGetRandROutputDisplayEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20615,12 +19674,10 @@ VkResult VkEncoder::vkGetRandROutputDisplayEXT( stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1322, 1); stream->write((uint64_t*)&cgen_var_1322, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT readParams"); stream->read((Display*)dpy, sizeof(Display)); uint64_t cgen_var_1323; stream->read((uint64_t*)&cgen_var_1323, 8); stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1323, (VkDisplayKHR*)pDisplay, 1); - AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT returnUnmarshal"); VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0; stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -20638,7 +19695,6 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT( VkSurfaceCapabilities2EXT* pSurfaceCapabilities) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT encode"); mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2EXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20671,13 +19727,11 @@ VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1327, 1); stream->write((uint64_t*)&cgen_var_1327, 1 * 8); marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT readParams"); unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities)); if (pSurfaceCapabilities) { transform_fromhost_VkSurfaceCapabilities2EXT(mImpl->resources(), (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT returnUnmarshal"); VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0; stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -20695,7 +19749,6 @@ VkResult VkEncoder::vkDisplayPowerControlEXT( const VkDisplayPowerInfoEXT* pDisplayPowerInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT encode"); mImpl->log("start vkDisplayPowerControlEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20739,8 +19792,6 @@ VkResult VkEncoder::vkDisplayPowerControlEXT( stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1331, 1); stream->write((uint64_t*)&cgen_var_1331, 1 * 8); marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo)); - AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT readParams"); - AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT returnUnmarshal"); VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0; stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -20757,7 +19808,6 @@ VkResult VkEncoder::vkRegisterDeviceEventEXT( VkFence* pFence) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT encode"); mImpl->log("start vkRegisterDeviceEventEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20827,11 +19877,9 @@ VkResult VkEncoder::vkRegisterDeviceEventEXT( stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1337, 1); stream->write((uint64_t*)&cgen_var_1337, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT readParams"); uint64_t cgen_var_1338; stream->read((uint64_t*)&cgen_var_1338, 8); stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1338, (VkFence*)pFence, 1); - AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT returnUnmarshal"); VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0; stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -20849,7 +19897,6 @@ VkResult VkEncoder::vkRegisterDisplayEventEXT( VkFence* pFence) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT encode"); mImpl->log("start vkRegisterDisplayEventEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20927,11 +19974,9 @@ VkResult VkEncoder::vkRegisterDisplayEventEXT( stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1346, 1); stream->write((uint64_t*)&cgen_var_1346, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT readParams"); uint64_t cgen_var_1347; stream->read((uint64_t*)&cgen_var_1347, 8); stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1347, (VkFence*)pFence, 1); - AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT returnUnmarshal"); VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0; stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -20948,7 +19993,6 @@ VkResult VkEncoder::vkGetSwapchainCounterEXT( uint64_t* pCounterValue) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT encode"); mImpl->log("start vkGetSwapchainCounterEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -20985,9 +20029,7 @@ VkResult VkEncoder::vkGetSwapchainCounterEXT( stream->write((uint64_t*)&cgen_var_1351, 1 * 8); stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT)); stream->write((uint64_t*)pCounterValue, sizeof(uint64_t)); - AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT readParams"); stream->read((uint64_t*)pCounterValue, sizeof(uint64_t)); - AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT returnUnmarshal"); VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0; stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -21005,7 +20047,6 @@ VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE encode"); mImpl->log("start vkGetRefreshCycleDurationGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21038,13 +20079,11 @@ VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE( stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1355, 1); stream->write((uint64_t*)&cgen_var_1355, 1 * 8); marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties)); - AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE readParams"); unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties)); if (pDisplayTimingProperties) { transform_fromhost_VkRefreshCycleDurationGOOGLE(mImpl->resources(), (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties)); } - AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE returnUnmarshal"); VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0; stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -21061,7 +20100,6 @@ VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE* pPresentationTimings) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE encode"); mImpl->log("start vkGetPastPresentationTimingGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21126,7 +20164,6 @@ VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE( marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i)); } } - AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE readParams"); // WARNING PTR CHECK uint32_t* check_pPresentationTimingCount; check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -21159,7 +20196,6 @@ VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE( transform_fromhost_VkPastPresentationTimingGOOGLE(mImpl->resources(), (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i)); } } - AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE returnUnmarshal"); VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0; stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -21188,7 +20224,6 @@ void VkEncoder::vkCmdSetDiscardRectangleEXT( const VkRect2D* pDiscardRectangles) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT encode"); mImpl->log("start vkCmdSetDiscardRectangleEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21244,8 +20279,6 @@ void VkEncoder::vkCmdSetDiscardRectangleEXT( { marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i)); } - AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT readParams"); - AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -21265,7 +20298,6 @@ void VkEncoder::vkSetHdrMetadataEXT( const VkHdrMetadataEXT* pMetadata) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT encode"); mImpl->log("start vkSetHdrMetadataEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21337,8 +20369,6 @@ void VkEncoder::vkSetHdrMetadataEXT( { marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i)); } - AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT readParams"); - AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -21354,7 +20384,6 @@ VkResult VkEncoder::vkCreateIOSSurfaceMVK( VkSurfaceKHR* pSurface) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK encode"); mImpl->log("start vkCreateIOSSurfaceMVK"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21424,11 +20453,9 @@ VkResult VkEncoder::vkCreateIOSSurfaceMVK( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1377, 1); stream->write((uint64_t*)&cgen_var_1377, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK readParams"); uint64_t cgen_var_1378; stream->read((uint64_t*)&cgen_var_1378, 8); stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1378, (VkSurfaceKHR*)pSurface, 1); - AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK returnUnmarshal"); VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0; stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -21447,7 +20474,6 @@ VkResult VkEncoder::vkCreateMacOSSurfaceMVK( VkSurfaceKHR* pSurface) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK encode"); mImpl->log("start vkCreateMacOSSurfaceMVK"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21517,11 +20543,9 @@ VkResult VkEncoder::vkCreateMacOSSurfaceMVK( stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1384, 1); stream->write((uint64_t*)&cgen_var_1384, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK readParams"); uint64_t cgen_var_1385; stream->read((uint64_t*)&cgen_var_1385, 8); stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1385, (VkSurfaceKHR*)pSurface, 1); - AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK returnUnmarshal"); VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0; stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -21542,7 +20566,6 @@ VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT( const VkDebugUtilsObjectNameInfoEXT* pNameInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT encode"); mImpl->log("start vkSetDebugUtilsObjectNameEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21578,8 +20601,6 @@ VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT( stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1387, 1); stream->write((uint64_t*)&cgen_var_1387, 1 * 8); marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo)); - AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT readParams"); - AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT returnUnmarshal"); VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0; stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -21594,7 +20615,6 @@ VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT( const VkDebugUtilsObjectTagInfoEXT* pTagInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT encode"); mImpl->log("start vkSetDebugUtilsObjectTagEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21630,8 +20650,6 @@ VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT( stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1389, 1); stream->write((uint64_t*)&cgen_var_1389, 1 * 8); marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo)); - AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT readParams"); - AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT returnUnmarshal"); VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0; stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -21646,7 +20664,6 @@ void VkEncoder::vkQueueBeginDebugUtilsLabelEXT( const VkDebugUtilsLabelEXT* pLabelInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT encode"); mImpl->log("start vkQueueBeginDebugUtilsLabelEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21682,8 +20699,6 @@ void VkEncoder::vkQueueBeginDebugUtilsLabelEXT( stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1391, 1); stream->write((uint64_t*)&cgen_var_1391, 1 * 8); marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); - AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT readParams"); - AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -21694,7 +20709,6 @@ void VkEncoder::vkQueueEndDebugUtilsLabelEXT( VkQueue queue) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT encode"); mImpl->log("start vkQueueEndDebugUtilsLabelEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21717,8 +20731,6 @@ void VkEncoder::vkQueueEndDebugUtilsLabelEXT( uint64_t cgen_var_1393; stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1393, 1); stream->write((uint64_t*)&cgen_var_1393, 1 * 8); - AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT readParams"); - AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -21730,7 +20742,6 @@ void VkEncoder::vkQueueInsertDebugUtilsLabelEXT( const VkDebugUtilsLabelEXT* pLabelInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT encode"); mImpl->log("start vkQueueInsertDebugUtilsLabelEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21766,8 +20777,6 @@ void VkEncoder::vkQueueInsertDebugUtilsLabelEXT( stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1395, 1); stream->write((uint64_t*)&cgen_var_1395, 1 * 8); marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); - AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT readParams"); - AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -21779,7 +20788,6 @@ void VkEncoder::vkCmdBeginDebugUtilsLabelEXT( const VkDebugUtilsLabelEXT* pLabelInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT encode"); mImpl->log("start vkCmdBeginDebugUtilsLabelEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21815,8 +20823,6 @@ void VkEncoder::vkCmdBeginDebugUtilsLabelEXT( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1397, 1); stream->write((uint64_t*)&cgen_var_1397, 1 * 8); marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); - AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT readParams"); - AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -21827,7 +20833,6 @@ void VkEncoder::vkCmdEndDebugUtilsLabelEXT( VkCommandBuffer commandBuffer) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT encode"); mImpl->log("start vkCmdEndDebugUtilsLabelEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21850,8 +20855,6 @@ void VkEncoder::vkCmdEndDebugUtilsLabelEXT( uint64_t cgen_var_1399; stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1399, 1); stream->write((uint64_t*)&cgen_var_1399, 1 * 8); - AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT readParams"); - AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -21863,7 +20866,6 @@ void VkEncoder::vkCmdInsertDebugUtilsLabelEXT( const VkDebugUtilsLabelEXT* pLabelInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT encode"); mImpl->log("start vkCmdInsertDebugUtilsLabelEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21899,8 +20901,6 @@ void VkEncoder::vkCmdInsertDebugUtilsLabelEXT( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1401, 1); stream->write((uint64_t*)&cgen_var_1401, 1 * 8); marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); - AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT readParams"); - AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -21914,7 +20914,6 @@ VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT( VkDebugUtilsMessengerEXT* pMessenger) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT encode"); mImpl->log("start vkCreateDebugUtilsMessengerEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -21984,13 +20983,11 @@ VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT( stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1407, 1); stream->write((uint64_t*)&cgen_var_1407, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_1408; stream->read((uint64_t*)&cgen_var_1408, 8); stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1408, (VkDebugUtilsMessengerEXT*)pMessenger, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT returnUnmarshal"); VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0; stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -22006,7 +21003,6 @@ void VkEncoder::vkDestroyDebugUtilsMessengerEXT( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT encode"); mImpl->log("start vkDestroyDebugUtilsMessengerEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22063,8 +21059,6 @@ void VkEncoder::vkDestroyDebugUtilsMessengerEXT( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT readParams"); - AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT returnUnmarshal"); resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger); pool->freeAll(); countingStream->clearPool(); @@ -22079,7 +21073,6 @@ void VkEncoder::vkSubmitDebugUtilsMessageEXT( const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT encode"); mImpl->log("start vkSubmitDebugUtilsMessageEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22123,8 +21116,6 @@ void VkEncoder::vkSubmitDebugUtilsMessageEXT( stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT)); stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT)); marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData)); - AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT readParams"); - AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -22139,7 +21130,6 @@ VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID( VkAndroidHardwareBufferPropertiesANDROID* pProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID encode"); mImpl->log("start vkGetAndroidHardwareBufferPropertiesANDROID"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22172,13 +21162,11 @@ VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID( stream->write((uint64_t*)&cgen_var_1418, 1 * 8); stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer)); marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties)); - AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID readParams"); unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties)); if (pProperties) { transform_fromhost_VkAndroidHardwareBufferPropertiesANDROID(mImpl->resources(), (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties)); } - AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID returnUnmarshal"); VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0; stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -22194,7 +21182,6 @@ VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID( AHardwareBuffer** pBuffer) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID encode"); mImpl->log("start vkGetMemoryAndroidHardwareBufferANDROID"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22232,9 +21219,7 @@ VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID( stream->write((uint64_t*)&cgen_var_1420, 1 * 8); marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo)); stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*)); - AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID readParams"); stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*)); - AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID returnUnmarshal"); VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0; stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -22261,7 +21246,6 @@ void VkEncoder::vkCmdSetSampleLocationsEXT( const VkSampleLocationsInfoEXT* pSampleLocationsInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT encode"); mImpl->log("start vkCmdSetSampleLocationsEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22297,8 +21281,6 @@ void VkEncoder::vkCmdSetSampleLocationsEXT( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1422, 1); stream->write((uint64_t*)&cgen_var_1422, 1 * 8); marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo)); - AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT readParams"); - AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -22311,7 +21293,6 @@ void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT( VkMultisamplePropertiesEXT* pMultisampleProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT encode"); mImpl->log("start vkGetPhysicalDeviceMultisamplePropertiesEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22340,13 +21321,11 @@ void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT( stream->write((uint64_t*)&cgen_var_1424, 1 * 8); stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits)); marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties)); - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT readParams"); unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties)); if (pMultisampleProperties) { transform_fromhost_VkMultisamplePropertiesEXT(mImpl->resources(), (VkMultisamplePropertiesEXT*)(pMultisampleProperties)); } - AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -22372,7 +21351,6 @@ VkResult VkEncoder::vkCreateValidationCacheEXT( VkValidationCacheEXT* pValidationCache) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT encode"); mImpl->log("start vkCreateValidationCacheEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22442,13 +21420,11 @@ VkResult VkEncoder::vkCreateValidationCacheEXT( stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1430, 1); stream->write((uint64_t*)&cgen_var_1430, 8); stream->setHandleMapping(resources->unwrapMapping()); - AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_1431; stream->read((uint64_t*)&cgen_var_1431, 8); stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1431, (VkValidationCacheEXT*)pValidationCache, 1); stream->unsetHandleMapping(); - AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT returnUnmarshal"); VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0; stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -22464,7 +21440,6 @@ void VkEncoder::vkDestroyValidationCacheEXT( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT encode"); mImpl->log("start vkDestroyValidationCacheEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22521,8 +21496,6 @@ void VkEncoder::vkDestroyValidationCacheEXT( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT readParams"); - AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT returnUnmarshal"); resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache); pool->freeAll(); countingStream->clearPool(); @@ -22537,7 +21510,6 @@ VkResult VkEncoder::vkMergeValidationCachesEXT( const VkValidationCacheEXT* pSrcCaches) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT encode"); mImpl->log("start vkMergeValidationCachesEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22592,8 +21564,6 @@ VkResult VkEncoder::vkMergeValidationCachesEXT( stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1443, ((srcCacheCount))); stream->write((uint64_t*)cgen_var_1443, ((srcCacheCount)) * 8); } - AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT readParams"); - AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT returnUnmarshal"); VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0; stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -22610,7 +21580,6 @@ VkResult VkEncoder::vkGetValidationCacheDataEXT( void* pData) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT encode"); mImpl->log("start vkGetValidationCacheDataEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22671,7 +21640,6 @@ VkResult VkEncoder::vkGetValidationCacheDataEXT( { stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t)); } - AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT readParams"); // WARNING PTR CHECK size_t* check_pDataSize; check_pDataSize = (size_t*)(uintptr_t)stream->getBe64(); @@ -22694,7 +21662,6 @@ VkResult VkEncoder::vkGetValidationCacheDataEXT( } stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t)); } - AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT returnUnmarshal"); VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0; stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -22719,7 +21686,6 @@ VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT encode"); mImpl->log("start vkGetMemoryHostPointerPropertiesEXT"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22768,13 +21734,11 @@ VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT( stream->write((void*)local_pHostPointer, sizeof(uint8_t)); } marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties)); - AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT readParams"); unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties)); if (pMemoryHostPointerProperties) { transform_fromhost_VkMemoryHostPointerPropertiesEXT(mImpl->resources(), (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties)); } - AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT returnUnmarshal"); VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0; stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -22794,7 +21758,6 @@ void VkEncoder::vkCmdWriteBufferMarkerAMD( uint32_t marker) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD encode"); mImpl->log("start vkCmdWriteBufferMarkerAMD"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22837,8 +21800,6 @@ void VkEncoder::vkCmdWriteBufferMarkerAMD( stream->write((uint64_t*)&cgen_var_1464, 1 * 8); stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); stream->write((uint32_t*)&local_marker, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD readParams"); - AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -22858,7 +21819,6 @@ void VkEncoder::vkCmdSetCheckpointNV( const void* pCheckpointMarker) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV encode"); mImpl->log("start vkCmdSetCheckpointNV"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22901,8 +21861,6 @@ void VkEncoder::vkCmdSetCheckpointNV( { stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t)); } - AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV readParams"); - AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -22915,7 +21873,6 @@ void VkEncoder::vkGetQueueCheckpointDataNV( VkCheckpointDataNV* pCheckpointData) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV encode"); mImpl->log("start vkGetQueueCheckpointDataNV"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -22972,7 +21929,6 @@ void VkEncoder::vkGetQueueCheckpointDataNV( marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i)); } } - AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV readParams"); // WARNING PTR CHECK uint32_t* check_pCheckpointDataCount; check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64(); @@ -23005,7 +21961,6 @@ void VkEncoder::vkGetQueueCheckpointDataNV( transform_fromhost_VkCheckpointDataNV(mImpl->resources(), (VkCheckpointDataNV*)(pCheckpointData + i)); } } - AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -23020,7 +21975,6 @@ VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE( uint64_t* pAddress) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE encode"); mImpl->log("start vkMapMemoryIntoAddressSpaceGOOGLE"); mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(this, VK_SUCCESS, device, memory, pAddress); auto stream = mImpl->stream(); @@ -23067,7 +22021,6 @@ VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE( { stream->write((uint64_t*)pAddress, sizeof(uint64_t)); } - AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE readParams"); // WARNING PTR CHECK uint64_t* check_pAddress; check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64(); @@ -23079,7 +22032,6 @@ VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE( } stream->read((uint64_t*)pAddress, sizeof(uint64_t)); } - AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE returnUnmarshal"); VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0; stream->read(&vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, sizeof(VkResult)); mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE(this, vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, device, memory, pAddress); @@ -23098,7 +22050,6 @@ VkResult VkEncoder::vkRegisterImageColorBufferGOOGLE( uint32_t colorBuffer) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE encode"); mImpl->log("start vkRegisterImageColorBufferGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -23133,8 +22084,6 @@ VkResult VkEncoder::vkRegisterImageColorBufferGOOGLE( stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1487, 1); stream->write((uint64_t*)&cgen_var_1487, 1 * 8); stream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE readParams"); - AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE returnUnmarshal"); VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0; stream->read(&vkRegisterImageColorBufferGOOGLE_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -23150,7 +22099,6 @@ VkResult VkEncoder::vkRegisterBufferColorBufferGOOGLE( uint32_t colorBuffer) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE encode"); mImpl->log("start vkRegisterBufferColorBufferGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -23185,8 +22133,6 @@ VkResult VkEncoder::vkRegisterBufferColorBufferGOOGLE( stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1491, 1); stream->write((uint64_t*)&cgen_var_1491, 1 * 8); stream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE readParams"); - AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE returnUnmarshal"); VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0; stream->read(&vkRegisterBufferColorBufferGOOGLE_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -23213,7 +22159,6 @@ void VkEncoder::vkUpdateDescriptorSetWithTemplateSizedGOOGLE( const VkBufferView* pBufferViews) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE encode"); mImpl->log("start vkUpdateDescriptorSetWithTemplateSizedGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -23430,8 +22375,6 @@ void VkEncoder::vkUpdateDescriptorSetWithTemplateSizedGOOGLE( stream->write((uint64_t*)cgen_var_1511, ((bufferViewCount)) * 8); } } - AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE readParams"); - AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -23445,7 +22388,6 @@ void VkEncoder::vkBeginCommandBufferAsyncGOOGLE( const VkCommandBufferBeginInfo* pBeginInfo) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE encode"); mImpl->log("start vkBeginCommandBufferAsyncGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -23481,8 +22423,6 @@ void VkEncoder::vkBeginCommandBufferAsyncGOOGLE( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1513, 1); stream->write((uint64_t*)&cgen_var_1513, 1 * 8); marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo)); - AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE readParams"); - AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -23493,7 +22433,6 @@ void VkEncoder::vkEndCommandBufferAsyncGOOGLE( VkCommandBuffer commandBuffer) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE encode"); mImpl->log("start vkEndCommandBufferAsyncGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -23516,8 +22455,6 @@ void VkEncoder::vkEndCommandBufferAsyncGOOGLE( uint64_t cgen_var_1515; stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1515, 1); stream->write((uint64_t*)&cgen_var_1515, 1 * 8); - AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE readParams"); - AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE returnUnmarshal"); stream->flush(); pool->freeAll(); countingStream->clearPool(); @@ -23530,7 +22467,6 @@ void VkEncoder::vkResetCommandBufferAsyncGOOGLE( VkCommandBufferResetFlags flags) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE encode"); mImpl->log("start vkResetCommandBufferAsyncGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -23557,8 +22493,6 @@ void VkEncoder::vkResetCommandBufferAsyncGOOGLE( stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1517, 1); stream->write((uint64_t*)&cgen_var_1517, 1 * 8); stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags)); - AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE readParams"); - AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -23571,7 +22505,6 @@ void VkEncoder::vkCommandBufferHostSyncGOOGLE( uint32_t sequenceNumber) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE encode"); mImpl->log("start vkCommandBufferHostSyncGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -23602,8 +22535,6 @@ void VkEncoder::vkCommandBufferHostSyncGOOGLE( stream->write((uint64_t*)&cgen_var_1519, 1 * 8); stream->write((uint32_t*)&local_needHostSync, sizeof(uint32_t)); stream->write((uint32_t*)&local_sequenceNumber, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE readParams"); - AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -23620,7 +22551,6 @@ VkResult VkEncoder::vkCreateImageWithRequirementsGOOGLE( VkMemoryRequirements* pMemoryRequirements) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE encode"); mImpl->log("start vkCreateImageWithRequirementsGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -23693,7 +22623,6 @@ VkResult VkEncoder::vkCreateImageWithRequirementsGOOGLE( stream->write((uint64_t*)&cgen_var_1525, 8); stream->setHandleMapping(resources->unwrapMapping()); marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); - AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_1526; stream->read((uint64_t*)&cgen_var_1526, 8); @@ -23704,7 +22633,6 @@ VkResult VkEncoder::vkCreateImageWithRequirementsGOOGLE( { transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements)); } - AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE returnUnmarshal"); VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0; stream->read(&vkCreateImageWithRequirementsGOOGLE_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -23722,7 +22650,6 @@ VkResult VkEncoder::vkCreateBufferWithRequirementsGOOGLE( VkMemoryRequirements* pMemoryRequirements) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE encode"); mImpl->log("start vkCreateBufferWithRequirementsGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -23794,7 +22721,6 @@ VkResult VkEncoder::vkCreateBufferWithRequirementsGOOGLE( stream->write((uint64_t*)&cgen_var_1532, 8); stream->setHandleMapping(resources->unwrapMapping()); marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); - AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE readParams"); stream->setHandleMapping(resources->createMapping()); uint64_t cgen_var_1533; stream->read((uint64_t*)&cgen_var_1533, 8); @@ -23805,7 +22731,6 @@ VkResult VkEncoder::vkCreateBufferWithRequirementsGOOGLE( { transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements)); } - AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE returnUnmarshal"); VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0; stream->read(&vkCreateBufferWithRequirementsGOOGLE_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -23825,7 +22750,6 @@ VkResult VkEncoder::vkGetMemoryHostAddressInfoGOOGLE( uint64_t* pHostmemId) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE encode"); mImpl->log("start vkGetMemoryHostAddressInfoGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -23899,7 +22823,6 @@ VkResult VkEncoder::vkGetMemoryHostAddressInfoGOOGLE( { stream->write((uint64_t*)pHostmemId, sizeof(uint64_t)); } - AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE readParams"); // WARNING PTR CHECK uint64_t* check_pAddress; check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64(); @@ -23933,7 +22856,6 @@ VkResult VkEncoder::vkGetMemoryHostAddressInfoGOOGLE( } stream->read((uint64_t*)pHostmemId, sizeof(uint64_t)); } - AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE returnUnmarshal"); VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0; stream->read(&vkGetMemoryHostAddressInfoGOOGLE_VkResult_return, sizeof(VkResult)); pool->freeAll(); @@ -23951,7 +22873,6 @@ VkResult VkEncoder::vkFreeMemorySyncGOOGLE( const VkAllocationCallbacks* pAllocator) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE encode"); mImpl->log("start vkFreeMemorySyncGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -24005,8 +22926,6 @@ VkResult VkEncoder::vkFreeMemorySyncGOOGLE( { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } - AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE readParams"); - AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE returnUnmarshal"); VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0; stream->read(&vkFreeMemorySyncGOOGLE_VkResult_return, sizeof(VkResult)); resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory); @@ -24025,7 +22944,6 @@ void VkEncoder::vkQueueHostSyncGOOGLE( uint32_t sequenceNumber) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE encode"); mImpl->log("start vkQueueHostSyncGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -24056,8 +22974,6 @@ void VkEncoder::vkQueueHostSyncGOOGLE( stream->write((uint64_t*)&cgen_var_1554, 1 * 8); stream->write((uint32_t*)&local_needHostSync, sizeof(uint32_t)); stream->write((uint32_t*)&local_sequenceNumber, sizeof(uint32_t)); - AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE readParams"); - AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE returnUnmarshal"); pool->freeAll(); countingStream->clearPool(); stream->clearPool(); @@ -24071,7 +22987,6 @@ void VkEncoder::vkQueueSubmitAsyncGOOGLE( VkFence fence) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE encode"); mImpl->log("start vkQueueSubmitAsyncGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -24131,8 +23046,6 @@ void VkEncoder::vkQueueSubmitAsyncGOOGLE( uint64_t cgen_var_1558; stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1558, 1); stream->write((uint64_t*)&cgen_var_1558, 1 * 8); - AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE readParams"); - AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE returnUnmarshal"); stream->flush(); pool->freeAll(); countingStream->clearPool(); @@ -24144,7 +23057,6 @@ void VkEncoder::vkQueueWaitIdleAsyncGOOGLE( VkQueue queue) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE encode"); mImpl->log("start vkQueueWaitIdleAsyncGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -24167,8 +23079,6 @@ void VkEncoder::vkQueueWaitIdleAsyncGOOGLE( uint64_t cgen_var_1560; stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1560, 1); stream->write((uint64_t*)&cgen_var_1560, 1 * 8); - AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE readParams"); - AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE returnUnmarshal"); stream->flush(); pool->freeAll(); countingStream->clearPool(); @@ -24183,7 +23093,6 @@ void VkEncoder::vkQueueBindSparseAsyncGOOGLE( VkFence fence) { EncoderAutoLock encoderLock(this); - AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE encode"); mImpl->log("start vkQueueBindSparseAsyncGOOGLE"); auto stream = mImpl->stream(); auto countingStream = mImpl->countingStream(); @@ -24243,8 +23152,6 @@ void VkEncoder::vkQueueBindSparseAsyncGOOGLE( uint64_t cgen_var_1564; stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1564, 1); stream->write((uint64_t*)&cgen_var_1564, 1 * 8); - AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE readParams"); - AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE returnUnmarshal"); stream->flush(); pool->freeAll(); countingStream->clearPool(); @@ -24253,5 +23160,52 @@ void VkEncoder::vkQueueBindSparseAsyncGOOGLE( } #endif +#ifdef VK_GOOGLE_linear_image_layout +void VkEncoder::vkGetLinearImageLayoutGOOGLE( + VkDevice device, + VkFormat format, + VkDeviceSize* pOffset, + VkDeviceSize* pRowPitchAlignment) +{ + EncoderAutoLock encoderLock(this); + mImpl->log("start vkGetLinearImageLayoutGOOGLE"); + auto stream = mImpl->stream(); + auto countingStream = mImpl->countingStream(); + auto resources = mImpl->resources(); + auto pool = mImpl->pool(); + stream->setHandleMapping(resources->unwrapMapping()); + VkDevice local_device; + VkFormat local_format; + local_device = device; + local_format = format; + countingStream->rewind(); + { + uint64_t cgen_var_1565; + countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1565, 1); + countingStream->write((uint64_t*)&cgen_var_1565, 1 * 8); + countingStream->write((VkFormat*)&local_format, sizeof(VkFormat)); + countingStream->write((VkDeviceSize*)pOffset, sizeof(VkDeviceSize)); + countingStream->write((VkDeviceSize*)pRowPitchAlignment, sizeof(VkDeviceSize)); + } + uint32_t packetSize_vkGetLinearImageLayoutGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); + countingStream->rewind(); + uint32_t opcode_vkGetLinearImageLayoutGOOGLE = OP_vkGetLinearImageLayoutGOOGLE; + stream->write(&opcode_vkGetLinearImageLayoutGOOGLE, sizeof(uint32_t)); + stream->write(&packetSize_vkGetLinearImageLayoutGOOGLE, sizeof(uint32_t)); + uint64_t cgen_var_1566; + stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1566, 1); + stream->write((uint64_t*)&cgen_var_1566, 1 * 8); + stream->write((VkFormat*)&local_format, sizeof(VkFormat)); + stream->write((VkDeviceSize*)pOffset, sizeof(VkDeviceSize)); + stream->write((VkDeviceSize*)pRowPitchAlignment, sizeof(VkDeviceSize)); + stream->read((VkDeviceSize*)pOffset, sizeof(VkDeviceSize)); + stream->read((VkDeviceSize*)pRowPitchAlignment, sizeof(VkDeviceSize)); + pool->freeAll(); + countingStream->clearPool(); + stream->clearPool(); + mImpl->log("finish vkGetLinearImageLayoutGOOGLE");; +} + +#endif } // namespace goldfish_vk diff --git a/system/vulkan_enc/VkEncoder.cpp.inl b/system/vulkan_enc/VkEncoder.cpp.inl new file mode 100644 index 00000000..5e1c5f39 --- /dev/null +++ b/system/vulkan_enc/VkEncoder.cpp.inl @@ -0,0 +1,124 @@ + +class VkEncoder::Impl { +public: + Impl(IOStream* stream) : m_stream(stream), m_logEncodes(false) { + m_stream.incStreamRef(); + const char* emuVkLogEncodesPropName = "qemu.vk.log"; + char encodeProp[PROPERTY_VALUE_MAX]; + if (property_get(emuVkLogEncodesPropName, encodeProp, nullptr) > 0) { + m_logEncodes = atoi(encodeProp) > 0; + } + } + + ~Impl() { + m_stream.decStreamRef(); + } + + VulkanCountingStream* countingStream() { return &m_countingStream; } + VulkanStreamGuest* stream() { return &m_stream; } + Pool* pool() { return &m_pool; } + ResourceTracker* resources() { return ResourceTracker::get(); } + Validation* validation() { return &m_validation; } + + void log(const char* text) { + if (!m_logEncodes) return; + ALOGD("encoder log: %s", text); + } + + void flush() { + lock(); + m_stream.flush(); + unlock(); + } + + // can be recursive + void lock() { + if (this == sAcquiredEncoderThreadLocal) { + ++sAcquiredEncoderThreadLockLevels; + return; // recursive + } + while (mLock.test_and_set(std::memory_order_acquire)); + sAcquiredEncoderThreadLocal = this; + sAcquiredEncoderThreadLockLevels = 1; + } + + void unlock() { + if (this != sAcquiredEncoderThreadLocal) { + // error, trying to unlock without having locked first + return; + } + + --sAcquiredEncoderThreadLockLevels; + if (0 == sAcquiredEncoderThreadLockLevels) { + mLock.clear(std::memory_order_release); + sAcquiredEncoderThreadLocal = nullptr; + } + } + + void incRef() { + __atomic_add_fetch(&m_refCount, 1, __ATOMIC_SEQ_CST); + } + + bool decRef() { + if (0 == __atomic_sub_fetch(&m_refCount, 1, __ATOMIC_SEQ_CST)) { + return true; + } + return false; + } + +private: + VulkanCountingStream m_countingStream; + VulkanStreamGuest m_stream; + Pool m_pool { 8, 4096, 64 }; + + Validation m_validation; + bool m_logEncodes; + std::atomic_flag mLock = ATOMIC_FLAG_INIT; + static thread_local Impl* sAcquiredEncoderThreadLocal; + static thread_local uint32_t sAcquiredEncoderThreadLockLevels; + uint32_t m_refCount = 1; +}; + +VkEncoder::~VkEncoder() { } + +// static +thread_local VkEncoder::Impl* VkEncoder::Impl::sAcquiredEncoderThreadLocal = nullptr; +thread_local uint32_t VkEncoder::Impl::sAcquiredEncoderThreadLockLevels = 0; + +struct EncoderAutoLock { + EncoderAutoLock(VkEncoder* enc) : mEnc(enc) { + mEnc->lock(); + } + ~EncoderAutoLock() { + mEnc->unlock(); + } + VkEncoder* mEnc; +}; + +VkEncoder::VkEncoder(IOStream *stream) : + mImpl(new VkEncoder::Impl(stream)) { } + +void VkEncoder::flush() { + mImpl->flush(); +} + +void VkEncoder::lock() { + mImpl->lock(); +} + +void VkEncoder::unlock() { + mImpl->unlock(); +} + +void VkEncoder::incRef() { + mImpl->incRef(); +} + +bool VkEncoder::decRef() { + if (mImpl->decRef()) { + delete this; + return true; + } + return false; +} + diff --git a/system/vulkan_enc/VkEncoder.h b/system/vulkan_enc/VkEncoder.h index bde9ab8a..d2638238 100644 --- a/system/vulkan_enc/VkEncoder.h +++ b/system/vulkan_enc/VkEncoder.h @@ -40,9 +40,7 @@ public: VkEncoder(IOStream* stream); ~VkEncoder(); - void flush(); - void lock(); - void unlock(); +#include "VkEncoder.h.inl" #ifdef VK_VERSION_1_0 VkResult vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, @@ -1838,6 +1836,13 @@ public: const VkBindSparseInfo* pBindInfo, VkFence fence); #endif +#ifdef VK_GOOGLE_linear_image_layout + void vkGetLinearImageLayoutGOOGLE( + VkDevice device, + VkFormat format, + VkDeviceSize* pOffset, + VkDeviceSize* pRowPitchAlignment); +#endif private: class Impl; diff --git a/system/vulkan_enc/VkEncoder.h.inl b/system/vulkan_enc/VkEncoder.h.inl new file mode 100644 index 00000000..d4155966 --- /dev/null +++ b/system/vulkan_enc/VkEncoder.h.inl @@ -0,0 +1,5 @@ + void flush(); + void lock(); + void unlock(); + void incRef(); + bool decRef(); diff --git a/system/vulkan_enc/VulkanStreamGuest.cpp b/system/vulkan_enc/VulkanStreamGuest.cpp index 43f3706c..32993b6d 100644 --- a/system/vulkan_enc/VulkanStreamGuest.cpp +++ b/system/vulkan_enc/VulkanStreamGuest.cpp @@ -84,6 +84,14 @@ public: return mFeatureBits; } + void incStreamRef() { + mStream->incRef(); + } + + bool decStreamRef() { + return mStream->decRef(); + } + private: size_t oustandingWriteBuffer() const { return mWritePos; @@ -190,6 +198,14 @@ uint32_t VulkanStreamGuest::getFeatureBits() const { return mImpl->getFeatureBits(); } +void VulkanStreamGuest::incStreamRef() { + mImpl->incStreamRef(); +} + +bool VulkanStreamGuest::decStreamRef() { + return mImpl->decStreamRef(); +} + VulkanCountingStream::VulkanCountingStream() : VulkanStreamGuest(nullptr) { } VulkanCountingStream::~VulkanCountingStream() = default; diff --git a/system/vulkan_enc/VulkanStreamGuest.h b/system/vulkan_enc/VulkanStreamGuest.h index d70b9fbb..e8425e15 100644 --- a/system/vulkan_enc/VulkanStreamGuest.h +++ b/system/vulkan_enc/VulkanStreamGuest.h @@ -56,6 +56,9 @@ public: uint32_t getFeatureBits() const; + void incStreamRef(); + bool decStreamRef(); + private: class Impl; std::unique_ptr<Impl> mImpl; diff --git a/system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp b/system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp index 4f59d219..512554f8 100644 --- a/system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp +++ b/system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp @@ -6426,6 +6426,8 @@ void deepcopy_VkImportPhysicalAddressGOOGLE( #endif #ifdef VK_GOOGLE_async_queue_submit #endif +#ifdef VK_GOOGLE_linear_image_layout +#endif void deepcopy_extension_struct( Pool* pool, const void* structExtension, diff --git a/system/vulkan_enc/goldfish_vk_deepcopy_guest.h b/system/vulkan_enc/goldfish_vk_deepcopy_guest.h index 243240a4..8cca9b1c 100644 --- a/system/vulkan_enc/goldfish_vk_deepcopy_guest.h +++ b/system/vulkan_enc/goldfish_vk_deepcopy_guest.h @@ -2046,5 +2046,7 @@ void deepcopy_VkImportPhysicalAddressGOOGLE( #endif #ifdef VK_GOOGLE_async_queue_submit #endif +#ifdef VK_GOOGLE_linear_image_layout +#endif } // namespace goldfish_vk diff --git a/system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp b/system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp index 1bc69fa1..ee84c212 100644 --- a/system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp +++ b/system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp @@ -292,6 +292,8 @@ namespace goldfish_vk { #endif #ifdef VK_GOOGLE_async_queue_submit #endif +#ifdef VK_GOOGLE_linear_image_layout +#endif uint32_t goldfish_vk_struct_type( const void* structExtension) { diff --git a/system/vulkan_enc/goldfish_vk_extension_structs_guest.h b/system/vulkan_enc/goldfish_vk_extension_structs_guest.h index 9d91cdc4..e549de9a 100644 --- a/system/vulkan_enc/goldfish_vk_extension_structs_guest.h +++ b/system/vulkan_enc/goldfish_vk_extension_structs_guest.h @@ -313,5 +313,7 @@ size_t goldfish_vk_extension_struct_size_with_stream_features( #endif #ifdef VK_GOOGLE_async_queue_submit #endif +#ifdef VK_GOOGLE_linear_image_layout +#endif } // namespace goldfish_vk diff --git a/system/vulkan_enc/goldfish_vk_handlemap_guest.cpp b/system/vulkan_enc/goldfish_vk_handlemap_guest.cpp index 2e22fb0c..ff9a0697 100644 --- a/system/vulkan_enc/goldfish_vk_handlemap_guest.cpp +++ b/system/vulkan_enc/goldfish_vk_handlemap_guest.cpp @@ -4782,6 +4782,8 @@ void handlemap_VkImportPhysicalAddressGOOGLE( #endif #ifdef VK_GOOGLE_async_queue_submit #endif +#ifdef VK_GOOGLE_linear_image_layout +#endif void handlemap_extension_struct( VulkanHandleMapping* handlemap, void* structExtension_out) diff --git a/system/vulkan_enc/goldfish_vk_handlemap_guest.h b/system/vulkan_enc/goldfish_vk_handlemap_guest.h index 79eeaf66..88fca6c6 100644 --- a/system/vulkan_enc/goldfish_vk_handlemap_guest.h +++ b/system/vulkan_enc/goldfish_vk_handlemap_guest.h @@ -1697,5 +1697,7 @@ void handlemap_VkImportPhysicalAddressGOOGLE( #endif #ifdef VK_GOOGLE_async_queue_submit #endif +#ifdef VK_GOOGLE_linear_image_layout +#endif } // namespace goldfish_vk diff --git a/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp b/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp index f857a2a8..15fa96f9 100644 --- a/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp +++ b/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp @@ -10370,6 +10370,8 @@ void unmarshal_VkImportPhysicalAddressGOOGLE( #endif #ifdef VK_GOOGLE_async_queue_submit #endif +#ifdef VK_GOOGLE_linear_image_layout +#endif void marshal_extension_struct( VulkanStreamGuest* vkStream, const void* structExtension) @@ -13241,6 +13243,12 @@ const char* api_opcode_to_string( return "OP_vkQueueBindSparseAsyncGOOGLE"; } #endif +#ifdef VK_GOOGLE_linear_image_layout + case OP_vkGetLinearImageLayoutGOOGLE: + { + return "OP_vkGetLinearImageLayoutGOOGLE"; + } +#endif default: { return "OP_UNKNOWN_API_CALL"; diff --git a/system/vulkan_enc/goldfish_vk_marshaling_guest.h b/system/vulkan_enc/goldfish_vk_marshaling_guest.h index df07272c..d8cb1b0b 100644 --- a/system/vulkan_enc/goldfish_vk_marshaling_guest.h +++ b/system/vulkan_enc/goldfish_vk_marshaling_guest.h @@ -3424,6 +3424,9 @@ void unmarshal_VkImportPhysicalAddressGOOGLE( #define OP_vkQueueWaitIdleAsyncGOOGLE 20331 #define OP_vkQueueBindSparseAsyncGOOGLE 20332 #endif +#ifdef VK_GOOGLE_linear_image_layout +#define OP_vkGetLinearImageLayoutGOOGLE 20333 +#endif const char* api_opcode_to_string( const uint32_t opcode); diff --git a/system/vulkan_enc/goldfish_vk_private_defs.h b/system/vulkan_enc/goldfish_vk_private_defs.h index dc4b7c64..b844cdde 100644 --- a/system/vulkan_enc/goldfish_vk_private_defs.h +++ b/system/vulkan_enc/goldfish_vk_private_defs.h @@ -282,6 +282,13 @@ enum AHardwareBuffer_Format { * OpenGL ES: GL_STENCIL_INDEX8 */ AHARDWAREBUFFER_FORMAT_S8_UINT = 0x35, + /** + * YUV 420 888 format. + * Must have an even width and height. Can be accessed in OpenGL + * shaders through an external sampler. Does not support mip-maps + * cube-maps or multi-layered textures. + */ + AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420 = 0x23, }; /** * Buffer usage flags, specifying how the buffer will be accessed. @@ -618,6 +625,10 @@ typedef void (VKAPI_PTR *PFN_vkQueueWaitIdleAsyncGOOGLE)(VkQueue queue); typedef void (VKAPI_PTR *PFN_vkQueueBindSparseAsyncGOOGLE)( VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence); +#define VK_GOOGLE_linear_image_layout 1 + +typedef VkResult (VKAPI_PTR *PFN_vkGetLinearImageLayoutGOOGLE)(VkDevice device, VkFormat format, VkDeviceSize* pOffset, VkDeviceSize* pRowPitchAlignment); + #ifdef __cplusplus } // extern "C" #endif diff --git a/system/vulkan_enc/goldfish_vk_transform_guest.cpp b/system/vulkan_enc/goldfish_vk_transform_guest.cpp index 6fc3e46c..b829c49f 100644 --- a/system/vulkan_enc/goldfish_vk_transform_guest.cpp +++ b/system/vulkan_enc/goldfish_vk_transform_guest.cpp @@ -9003,6 +9003,8 @@ void transform_fromhost_VkImportPhysicalAddressGOOGLE( #endif #ifdef VK_GOOGLE_async_queue_submit #endif +#ifdef VK_GOOGLE_linear_image_layout +#endif void transform_tohost_extension_struct( ResourceTracker* resourceTracker, void* structExtension_out) diff --git a/system/vulkan_enc/goldfish_vk_transform_guest.h b/system/vulkan_enc/goldfish_vk_transform_guest.h index b9699583..b29e205f 100644 --- a/system/vulkan_enc/goldfish_vk_transform_guest.h +++ b/system/vulkan_enc/goldfish_vk_transform_guest.h @@ -3093,5 +3093,7 @@ void transform_fromhost_VkImportPhysicalAddressGOOGLE( #endif #ifdef VK_GOOGLE_async_queue_submit #endif +#ifdef VK_GOOGLE_linear_image_layout +#endif } // namespace goldfish_vk diff --git a/system/vulkan_enc/vk_format_info.h b/system/vulkan_enc/vk_format_info.h index dd9c99bc..d80d9c34 100644 --- a/system/vulkan_enc/vk_format_info.h +++ b/system/vulkan_enc/vk_format_info.h @@ -29,6 +29,11 @@ #include <stdbool.h> #ifdef VK_USE_PLATFORM_ANDROID_KHR #include <system/graphics.h> +#else +/* See system/graphics.h. */ +enum { + HAL_PIXEL_FORMAT_YV12 = 842094169, +}; #endif #include <vulkan/vulkan.h> #include <vndk/hardware_buffer.h> @@ -36,6 +41,11 @@ /* See i915_private_android_types.h in minigbm. */ #define HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL 0x100 +// TODO(b/167698976): We should not use OMX_COLOR_FormatYUV420Planar +// but we seem to miss a format translation somewhere. + +#define OMX_COLOR_FormatYUV420Planar 0x13 + static inline VkFormat vk_format_from_android(unsigned android_format) { @@ -54,11 +64,12 @@ vk_format_from_android(unsigned android_format) return VK_FORMAT_A2B10G10R10_UNORM_PACK32; case HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL: return VK_FORMAT_G8_B8R8_2PLANE_420_UNORM; + case AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: + return VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM; #ifdef VK_USE_PLATFORM_ANDROID_KHR case HAL_PIXEL_FORMAT_YV12: - // YUV converter will convert this format to R8G8B8A8 - // TODO: should we use R8G8B8A8 for other YUV format as well? - return VK_FORMAT_R8G8B8A8_UNORM; + case OMX_COLOR_FormatYUV420Planar: + return VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM; case AHARDWAREBUFFER_FORMAT_BLOB: #endif default: @@ -82,6 +93,8 @@ android_format_from_vk(VkFormat vk_format) return AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM; case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM: return HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL; + case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM: + return HAL_PIXEL_FORMAT_YV12; default: return AHARDWAREBUFFER_FORMAT_BLOB; } @@ -92,6 +105,8 @@ android_format_is_yuv(unsigned android_format) { switch (android_format) { case HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL: + case OMX_COLOR_FormatYUV420Planar: + case HAL_PIXEL_FORMAT_YV12: return true; default: diff --git a/system/vulkan_enc/vk_struct_id.h b/system/vulkan_enc/vk_struct_id.h index b720edf6..0aaf7a9a 100644 --- a/system/vulkan_enc/vk_struct_id.h +++ b/system/vulkan_enc/vk_struct_id.h @@ -52,5 +52,6 @@ REGISTER_VK_STRUCT_ID(VkSamplerYcbcrConversionInfo, VK_STRUCTURE_TYPE_SAMPLER_YC REGISTER_VK_STRUCT_ID(VkFenceCreateInfo, VK_STRUCTURE_TYPE_FENCE_CREATE_INFO); REGISTER_VK_STRUCT_ID(VkExportFenceCreateInfo, VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO); REGISTER_VK_STRUCT_ID(VkImportBufferGOOGLE, VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE); +REGISTER_VK_STRUCT_ID(VkExternalImageFormatProperties, VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES); #undef REGISTER_VK_STRUCT_ID |