summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Mertz <scott@cyngn.com>2016-08-29 12:55:43 -0700
committerScott Mertz <scott@cyngn.com>2016-08-29 12:55:43 -0700
commit7a715d74495a6743be62025481519c673117c422 (patch)
tree9071944a43766cfafd8061d91e3a3bfd1426de90
parent208361067bfcad5223a774f5251b459390a0af56 (diff)
parentfe2e5ce29837d9bf20f029adeafda9adf109621d (diff)
downloadandroid_device_generic_goldfish-staging/cm-14.0.tar.gz
android_device_generic_goldfish-staging/cm-14.0.tar.bz2
android_device_generic_goldfish-staging/cm-14.0.zip
Merge tag 'android-7.0.0_r1' into HEADstaging/cm-14.0
Android 7.0.0 release 1
-rw-r--r--camera/Android.mk94
-rwxr-xr-xcamera/CallbackNotifier.cpp6
-rwxr-xr-xcamera/EmulatedCameraDevice.h2
-rwxr-xr-xcamera/EmulatedCameraFactory.cpp2
-rw-r--r--fingerprint/fingerprint.c207
-rw-r--r--fstab.goldfish2
-rw-r--r--fstab.ranchu8
-rw-r--r--gps/Android.mk11
-rw-r--r--gps/gps_qemu.c10
-rw-r--r--init.goldfish.rc18
-rw-r--r--init.ranchu.rc65
-rw-r--r--opengl/shared/OpenglCodecCommon/Android.mk2
-rw-r--r--opengl/shared/OpenglCodecCommon/ChecksumCalculator.cpp154
-rw-r--r--opengl/shared/OpenglCodecCommon/ChecksumCalculator.h181
-rw-r--r--opengl/shared/OpenglCodecCommon/ErrorLog.h2
-rw-r--r--opengl/shared/OpenglCodecCommon/GLClientState.cpp6
-rw-r--r--opengl/shared/OpenglCodecCommon/GLClientState.h15
-rw-r--r--opengl/shared/OpenglCodecCommon/GLDecoderContextData.h69
-rw-r--r--opengl/shared/OpenglCodecCommon/GLErrorLog.h34
-rw-r--r--opengl/shared/OpenglCodecCommon/TimeUtils.cpp69
-rw-r--r--opengl/shared/OpenglCodecCommon/UnixStream.cpp137
-rw-r--r--opengl/shared/OpenglCodecCommon/UnixStream.h31
-rw-r--r--opengl/shared/OpenglCodecCommon/Win32PipeStream.cpp239
-rw-r--r--opengl/shared/OpenglCodecCommon/Win32PipeStream.h41
-rw-r--r--opengl/shared/OpenglCodecCommon/glUtils.cpp4
-rw-r--r--opengl/shared/OpenglCodecCommon/gl_base_types.h1
-rw-r--r--opengl/system/GLESv1/gl.cpp46
-rw-r--r--opengl/system/GLESv1_enc/GLEncoder.cpp43
-rw-r--r--opengl/system/GLESv1_enc/GLEncoder.h7
-rw-r--r--opengl/system/GLESv1_enc/GLEncoderUtils.h2
-rw-r--r--opengl/system/GLESv1_enc/gl_client_context.h2
-rw-r--r--opengl/system/GLESv1_enc/gl_enc.cpp4932
-rw-r--r--opengl/system/GLESv1_enc/gl_enc.h4
-rw-r--r--opengl/system/GLESv2/gl2.cpp62
-rwxr-xr-xopengl/system/GLESv2_enc/GL2Encoder.cpp261
-rw-r--r--opengl/system/GLESv2_enc/GL2Encoder.h16
-rw-r--r--opengl/system/GLESv2_enc/GL2EncoderUtils.h2
-rw-r--r--opengl/system/GLESv2_enc/gl2_client_context.h2
-rw-r--r--opengl/system/GLESv2_enc/gl2_enc.cpp3056
-rw-r--r--opengl/system/GLESv2_enc/gl2_enc.h4
-rw-r--r--opengl/system/OpenglSystemCommon/EGLImage.h (renamed from opengl/shared/OpenglCodecCommon/TimeUtils.h)24
-rw-r--r--opengl/system/OpenglSystemCommon/HostConnection.cpp41
-rw-r--r--opengl/system/OpenglSystemCommon/HostConnection.h6
-rw-r--r--opengl/system/OpenglSystemCommon/QemuPipeStream.cpp26
-rw-r--r--opengl/system/OpenglSystemCommon/ThreadInfo.h4
-rw-r--r--opengl/system/egl/egl.cpp164
-rw-r--r--opengl/system/egl/eglDisplay.cpp38
-rw-r--r--opengl/system/gralloc/Android.mk15
-rw-r--r--opengl/system/gralloc/gralloc.cpp22
-rw-r--r--opengl/system/renderControl_enc/README6
-rw-r--r--opengl/system/renderControl_enc/renderControl.attrib4
-rw-r--r--opengl/system/renderControl_enc/renderControl.in4
-rw-r--r--opengl/system/renderControl_enc/renderControl_client_base.h41
-rw-r--r--opengl/system/renderControl_enc/renderControl_client_context.cpp3
-rw-r--r--opengl/system/renderControl_enc/renderControl_client_context.h5
-rw-r--r--opengl/system/renderControl_enc/renderControl_client_proc.h3
-rw-r--r--opengl/system/renderControl_enc/renderControl_enc.cpp696
-rw-r--r--opengl/system/renderControl_enc/renderControl_enc.h4
-rw-r--r--opengl/system/renderControl_enc/renderControl_entry.cpp21
-rw-r--r--opengl/system/renderControl_enc/renderControl_ftable.h3
-rw-r--r--opengl/system/renderControl_enc/renderControl_opcodes.h5
-rw-r--r--overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml26
-rw-r--r--sensors/sensors_qemu.c80
63 files changed, 8759 insertions, 2331 deletions
diff --git a/camera/Android.mk b/camera/Android.mk
index 8982c71..26d4936 100644
--- a/camera/Android.mk
+++ b/camera/Android.mk
@@ -17,30 +17,29 @@ LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_CFLAGS += -fno-short-enums -DQEMU_HARDWARE
-LOCAL_CFLAGS += -Wno-unused-parameter -Wno-missing-field-initializers
-LOCAL_CLANG_CFLAGS += -Wno-c++11-narrowing
-LOCAL_SHARED_LIBRARIES:= \
+# Emulator camera module########################################################
+
+emulator_camera_module_relative_path := hw
+emulator_camera_cflags := -fno-short-enums -DQEMU_HARDWARE
+emulator_camera_cflags += -Wno-unused-parameter -Wno-missing-field-initializers
+emulator_camera_clang_flags := -Wno-c++11-narrowing
+emulator_camera_shared_libraries := \
libbinder \
liblog \
libutils \
libcutils \
libcamera_client \
libui \
- libdl
-
-# JPEG conversion libraries and includes.
-LOCAL_SHARED_LIBRARIES += \
+ libdl \
libjpeg \
libcamera_metadata
-LOCAL_C_INCLUDES += external/jpeg \
+emulator_camera_c_includes := external/jpeg \
frameworks/native/include/media/hardware \
$(LOCAL_PATH)/../opengl/system/OpenglSystemCommon \
$(call include-path-for, camera)
-LOCAL_SRC_FILES := \
+emulator_camera_src := \
EmulatedCameraHal.cpp \
EmulatedCameraFactory.cpp \
EmulatedCameraHotplugThread.cpp \
@@ -65,6 +64,16 @@ LOCAL_SRC_FILES := \
EmulatedCamera3.cpp \
EmulatedFakeCamera3.cpp
+# Emulated camera - goldfish / vbox_x86 build###################################
+
+LOCAL_MODULE_RELATIVE_PATH := ${emulator_camera_module_relative_path}
+LOCAL_CFLAGS := ${emulator_camera_cflags}
+LOCAL_CLANG_CFLAGS += ${emulator_camera_clang_flags}
+
+LOCAL_SHARED_LIBRARIES := ${emulator_camera_shared_libraries}
+LOCAL_C_INCLUDES += ${emulator_camera_c_includes}
+LOCAL_SRC_FILES := ${emulator_camera_src}
+
ifeq ($(TARGET_PRODUCT),vbox_x86)
LOCAL_MODULE := camera.vbox_x86
else
@@ -73,30 +82,71 @@ endif
include $(BUILD_SHARED_LIBRARY)
-#################################################################
+# Emulator camera - ranchu build################################################
+
+include ${CLEAR_VARS}
+
+LOCAL_MODULE_RELATIVE_PATH := ${emulator_camera_module_relative_path}
+LOCAL_CFLAGS := ${emulator_camera_cflags}
+LOCAL_CLANG_CFLAGS += ${emulator_camera_clang_flags}
+
+LOCAL_SHARED_LIBRARIES := ${emulator_camera_shared_libraries}
+LOCAL_C_INCLUDES += ${emulator_camera_c_includes}
+LOCAL_SRC_FILES := ${emulator_camera_src}
+
+LOCAL_MODULE := camera.ranchu
+
+include $(BUILD_SHARED_LIBRARY)
+
+# JPEG stub#####################################################################
+
ifneq ($(TARGET_BUILD_PDK),true)
include $(CLEAR_VARS)
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_CFLAGS += -fno-short-enums -DQEMU_HARDWARE
-LOCAL_CFLAGS += -Wno-unused-parameter
-LOCAL_CLANG_CFLAGS += -Wno-c++11-narrowing
-LOCAL_SHARED_LIBRARIES:= \
+jpeg_module_relative_path := hw
+jpeg_cflags := -fno-short-enums -DQEMU_HARDWARE
+jpeg_cflags += -Wno-unused-parameter
+jpeg_clang_flags += -Wno-c++11-narrowing
+jpeg_shared_libraries := \
libcutils \
liblog \
libskia \
libandroid_runtime
+jpeg_c_includes := external/libjpeg-turbo \
+ external/skia/include/core/ \
+ frameworks/base/core/jni/android/graphics \
+ frameworks/native/include
+jpeg_src := JpegStub.cpp
+
+# JPEG stub - goldfish build####################################################
-LOCAL_C_INCLUDES += external/jpeg \
- external/skia/include/core/ \
- frameworks/base/core/jni/android/graphics \
- frameworks/native/include
+LOCAL_MODULE_RELATIVE_PATH := ${jpeg_module_relative_path}
+LOCAL_CFLAGS += ${jpeg_cflags}
+LOCAL_CLANG_CFLAGS += ${jpeg_clangflags}
-LOCAL_SRC_FILES := JpegStub.cpp
+LOCAL_SHARED_LIBRARIES := ${jpeg_shared_libraries}
+LOCAL_C_INCLUDES += ${jpeg_c_includes}
+LOCAL_SRC_FILES := ${jpeg_src}
LOCAL_MODULE := camera.goldfish.jpeg
include $(BUILD_SHARED_LIBRARY)
+# JPEG stub - ranchu build######################################################
+
+include ${CLEAR_VARS}
+
+LOCAL_MODULE := camera.ranchu.jpeg
+
+LOCAL_MODULE_RELATIVE_PATH := ${jpeg_module_relative_path}
+LOCAL_CFLAGS += ${jpeg_cflags}
+LOCAL_CLANG_CFLAGS += ${jpeg_clangflags}
+
+LOCAL_SHARED_LIBRARIES := ${jpeg_shared_libraries}
+LOCAL_C_INCLUDES += ${jpeg_c_includes}
+LOCAL_SRC_FILES := ${jpeg_src}
+
+include $(BUILD_SHARED_LIBRARY)
+
endif # !PDK
diff --git a/camera/CallbackNotifier.cpp b/camera/CallbackNotifier.cpp
index b288f52..0dbd50d 100755
--- a/camera/CallbackNotifier.cpp
+++ b/camera/CallbackNotifier.cpp
@@ -182,10 +182,8 @@ void CallbackNotifier::releaseRecordingFrame(const void* opaque)
status_t CallbackNotifier::storeMetaDataInBuffers(bool enable)
{
- /* Return INVALID_OPERATION means HAL does not support metadata. So HAL will
- * return actual frame data with CAMERA_MSG_VIDEO_FRRAME. Return
- * INVALID_OPERATION to mean metadata is not supported. */
- return INVALID_OPERATION;
+ // Return error if metadata is request, otherwise silently agree.
+ return enable ? INVALID_OPERATION : NO_ERROR;
}
/****************************************************************************
diff --git a/camera/EmulatedCameraDevice.h b/camera/EmulatedCameraDevice.h
index ee9f7dd..fff11fa 100755
--- a/camera/EmulatedCameraDevice.h
+++ b/camera/EmulatedCameraDevice.h
@@ -396,7 +396,7 @@ protected:
inline status_t startThread(bool one_burst)
{
mOneBurst = one_burst;
- return run(NULL, ANDROID_PRIORITY_URGENT_DISPLAY, 0);
+ return run("Camera_startThread", ANDROID_PRIORITY_URGENT_DISPLAY, 0);
}
/* Overriden base class method.
diff --git a/camera/EmulatedCameraFactory.cpp b/camera/EmulatedCameraFactory.cpp
index 586c9c6..137d8ab 100755
--- a/camera/EmulatedCameraFactory.cpp
+++ b/camera/EmulatedCameraFactory.cpp
@@ -180,7 +180,7 @@ EmulatedCameraFactory::EmulatedCameraFactory()
}
mHotplugThread = new EmulatedCameraHotplugThread(&cameraIdVector[0],
mEmulatedCameraNum);
- mHotplugThread->run();
+ mHotplugThread->run("EmulatedCameraHotplugThread");
}
mConstructedOK = true;
diff --git a/fingerprint/fingerprint.c b/fingerprint/fingerprint.c
index baa7ad6..6405e26 100644
--- a/fingerprint/fingerprint.c
+++ b/fingerprint/fingerprint.c
@@ -40,8 +40,8 @@
#include <poll.h>
#define FINGERPRINT_LISTEN_SERVICE_NAME "fingerprintlisten"
-#define FINGERPRINT_FILENAME \
- "/data/system/users/0/fpdata/emulator_fingerprint_storage.bin"
+#define FINGERPRINT_FILENAME "emufp.bin"
+#define AUTHENTICATOR_ID_FILENAME "emuauthid.bin"
#define MAX_COMM_CHARS 128
#define MAX_COMM_ERRORS 8
// Typical devices will allow up to 5 fingerprints per user to maintain performance of
@@ -69,7 +69,9 @@ typedef struct worker_thread_t {
pthread_t thread;
worker_state_t state;
uint64_t secureid[MAX_NUM_FINGERS];
- uint64_t authenid[MAX_NUM_FINGERS];
+ uint64_t fingerid[MAX_NUM_FINGERS];
+ char fp_filename[PATH_MAX];
+ char authid_filename[PATH_MAX];
} worker_thread_t;
typedef struct qemu_fingerprint_device_t {
@@ -87,21 +89,23 @@ typedef struct qemu_fingerprint_device_t {
/******************************************************************************/
+static FILE* openForWrite(const char* filename);
+
static void saveFingerprint(worker_thread_t* listener, int idx) {
ALOGD("----------------> %s -----------------> idx %d", __FUNCTION__, idx);
// Save fingerprints to file
- FILE* fp = fopen(FINGERPRINT_FILENAME, "r+"); // write but don't truncate
+ FILE* fp = openForWrite(listener->fp_filename);
if (fp == NULL) {
ALOGE("Could not open fingerprints storage at %s; "
"fingerprints won't be saved",
- FINGERPRINT_FILENAME);
+ listener->fp_filename);
perror("Failed to open file");
return;
}
ALOGD("Write fingerprint[%d] (0x%" PRIx64 ",0x%" PRIx64 ")", idx,
- listener->secureid[idx], listener->authenid[idx]);
+ listener->secureid[idx], listener->fingerid[idx]);
if (fseek(fp, (idx) * sizeof(uint64_t), SEEK_SET) < 0) {
ALOGE("Failed while seeking for fingerprint[%d] in emulator storage",
@@ -110,14 +114,15 @@ static void saveFingerprint(worker_thread_t* listener, int idx) {
return;
}
int ns = fwrite(&listener->secureid[idx], sizeof(uint64_t), 1, fp);
+
if (fseek(fp, (MAX_NUM_FINGERS + idx) * sizeof(uint64_t), SEEK_SET) < 0) {
ALOGE("Failed while seeking for fingerprint[%d] in emulator storage",
idx);
fclose(fp);
return;
}
- int na = fwrite(&listener->authenid[idx], sizeof(uint64_t), 1, fp);
- if (ns != 1 || na != 1)
+ int nf = fwrite(&listener->fingerid[idx], sizeof(uint64_t), 1, fp);
+ if (ns != 1 || ns !=1)
ALOGW("Corrupt emulator fingerprints storage; could not save "
"fingerprints");
@@ -126,28 +131,93 @@ static void saveFingerprint(worker_thread_t* listener, int idx) {
return;
}
+static FILE* openForWrite(const char* filename) {
+
+ if (!filename) return NULL;
+
+ FILE* fp = fopen(filename, "r+"); // write but don't truncate
+ if (fp == NULL) {
+ fp = fopen(filename, "w");
+ if (fp) {
+ uint64_t zero = 0;
+ int i = 0;
+ for (i = 0; i < 2*MAX_NUM_FINGERS; ++i) {
+ fwrite(&zero, sizeof(uint64_t), 1, fp);
+ }
+
+ //the last one is for authenticator id
+ fwrite(&zero, sizeof(uint64_t), 1, fp);
+ }
+ }
+ return fp;
+}
+
+static void saveAuthenticatorId(const char* filename, uint64_t authenid) {
+ ALOGD("----------------> %s ----------------->", __FUNCTION__);
+ FILE* fp = openForWrite(filename);
+ if (!fp) {
+ ALOGE("Failed to open emulator storage file to save authenticator id");
+ return;
+ }
+
+ rewind(fp);
+
+ int na = fwrite(&authenid, sizeof(authenid), 1, fp);
+ if (na != 1) {
+ ALOGE("Failed while writing authenticator id in emulator storage");
+ }
+
+ ALOGD("Save authenticator id (0x%" PRIx64 ")", authenid);
+
+ fclose(fp);
+}
+
+static void loadAuthenticatorId(const char* authid_filename, uint64_t* pauthenid) {
+ ALOGD("----------------> %s ----------------->", __FUNCTION__);
+ FILE* fp = fopen(authid_filename, "r");
+ if (fp == NULL) {
+ ALOGE("Could not load authenticator id from storage at %s; "
+ "it has not yet been created.",
+ authid_filename);
+ perror("Failed to open/create file");
+ return;
+ }
+
+ rewind(fp);
+
+ int na = fread(pauthenid, sizeof(*pauthenid), 1, fp);
+ if (na != 1)
+ ALOGW("Corrupt emulator authenticator id storage (read %d)", na);
+
+ ALOGD("Read authenticator id (0x%" PRIx64 ")", *pauthenid);
+
+ fclose(fp);
+
+ return;
+}
+
static void loadFingerprints(worker_thread_t* listener) {
ALOGD("----------------> %s ----------------->", __FUNCTION__);
- FILE* fp = fopen(FINGERPRINT_FILENAME, "a+"); // so we can create if empty
+ FILE* fp = fopen(listener->fp_filename, "r");
if (fp == NULL) {
ALOGE("Could not load fingerprints from storage at %s; "
"it has not yet been created.",
- FINGERPRINT_FILENAME);
+ listener->fp_filename);
perror("Failed to open/create file");
return;
}
int ns = fread(listener->secureid, MAX_NUM_FINGERS * sizeof(uint64_t), 1,
fp);
- int na = fread(listener->authenid, MAX_NUM_FINGERS * sizeof(uint64_t), 1,
+ int nf = fread(listener->fingerid, MAX_NUM_FINGERS * sizeof(uint64_t), 1,
fp);
- if (ns != 1 || na != 1)
- ALOGW("Corrupt emulator fingerprints storage (read %d+%db)", ns, na);
+ if (ns != 1 || nf != 1)
+ ALOGW("Corrupt emulator fingerprints storage (read %d+%db)", ns, nf);
int i = 0;
for (i = 0; i < MAX_NUM_FINGERS; i++)
ALOGD("Read fingerprint %d (0x%" PRIx64 ",0x%" PRIx64 ")", i,
- listener->secureid[i], listener->authenid[i]);
+ listener->secureid[i], listener->fingerid[i]);
fclose(fp);
@@ -176,16 +246,33 @@ static uint64_t fingerprint_get_auth_id(struct fingerprint_device* device) {
authenticator_id = qdev->authenticator_id;
pthread_mutex_unlock(&qdev->lock);
+ ALOGD("----------------> %s auth id %" PRIx64 "----------------->", __FUNCTION__, authenticator_id);
return authenticator_id;
}
-static int fingerprint_set_active_group(struct fingerprint_device __unused *device, uint32_t gid,
+static int fingerprint_set_active_group(struct fingerprint_device *device, uint32_t gid,
const char *path) {
- // Groups are a future feature. For now, the framework sends the profile owner's id (userid)
- // as the primary group id for the user. This code should create a tuple (groupId, fingerId)
- // that represents a single fingerprint entity in the database. For now we just generate
- // globally unique ids.
- ALOGW("Setting active finger group not implemented");
+ ALOGD("----------------> %s -----------------> path %s", __FUNCTION__, path);
+ qemu_fingerprint_device_t* qdev = (qemu_fingerprint_device_t*)device;
+ pthread_mutex_lock(&qdev->lock);
+ qdev->group_id = gid;
+ snprintf(qdev->listener.fp_filename, sizeof(qdev->listener.fp_filename),
+ "%s/%s", path, FINGERPRINT_FILENAME);
+ snprintf(qdev->listener.authid_filename, sizeof(qdev->listener.authid_filename),
+ "%s/%s", path, AUTHENTICATOR_ID_FILENAME);
+ uint64_t authenticator_id = 0;
+ loadFingerprints(&qdev->listener);
+ loadAuthenticatorId(qdev->listener.authid_filename, &authenticator_id);
+ if (authenticator_id == 0) {
+ // firs time, create an authenticator id
+ authenticator_id = get_64bit_rand();
+ // save it to disk
+ saveAuthenticatorId(qdev->listener.authid_filename, authenticator_id);
+ }
+
+ qdev->authenticator_id = authenticator_id;
+ pthread_mutex_unlock(&qdev->lock);
+
return 0;
}
@@ -298,46 +385,55 @@ static int fingerprint_cancel(struct fingerprint_device *device) {
ALOGD("----------------> %s ----------------->", __FUNCTION__);
qemu_fingerprint_device_t* qdev = (qemu_fingerprint_device_t*)device;
- fingerprint_msg_t msg = {0};
- msg.type = FINGERPRINT_ERROR;
- msg.data.error = FINGERPRINT_ERROR_CANCELED;
-
pthread_mutex_lock(&qdev->lock);
qdev->listener.state = STATE_IDLE;
pthread_mutex_unlock(&qdev->lock);
- device->notify(&msg);
+ fingerprint_msg_t msg = {0, {0}};
+ msg.type = FINGERPRINT_ERROR;
+ msg.data.error = FINGERPRINT_ERROR_CANCELED;
+ qdev->device.notify(&msg);
return 0;
}
-static int fingerprint_enumerate(struct fingerprint_device *device,
- fingerprint_finger_id_t *results, uint32_t *max_size) {
+static int fingerprint_enumerate(struct fingerprint_device *device) {
ALOGD("----------------> %s ----------------->", __FUNCTION__);
- if (device == NULL || results == NULL || max_size == NULL) {
+ if (device == NULL) {
ALOGE("Cannot enumerate saved fingerprints with uninitialized params");
return -1;
}
qemu_fingerprint_device_t* qdev = (qemu_fingerprint_device_t*)device;
- unsigned int i = 0;
- int num = 0;
- for (i = 0; i < MAX_NUM_FINGERS; i++) {
+ int template_count = 0;
+ for (int i = 0; i < MAX_NUM_FINGERS; i++) {
if (qdev->listener.secureid[i] != 0 ||
- qdev->listener.authenid[i] != 0) {
+ qdev->listener.fingerid[i] != 0) {
ALOGD("ENUM: Fingerprint [%d] = 0x%" PRIx64 ",%" PRIx64, i,
- qdev->listener.secureid[i], qdev->listener.authenid[i]);
- num++;
+ qdev->listener.secureid[i], qdev->listener.fingerid[i]);
+ template_count++;
+ }
+ }
+ fingerprint_msg_t message = {0, {0}};
+ message.type = FINGERPRINT_TEMPLATE_ENUMERATING;
+ message.data.enumerated.finger.gid = qdev->group_id;
+ for (int i = 0; i < MAX_NUM_FINGERS; i++) {
+ if (qdev->listener.secureid[i] != 0 ||
+ qdev->listener.fingerid[i] != 0) {
+ template_count--;
+ message.data.enumerated.remaining_templates = template_count;
+ message.data.enumerated.finger.fid = qdev->listener.fingerid[i];
+ qdev->device.notify(&message);
}
}
- return num;
+ return 0;
}
static int fingerprint_remove(struct fingerprint_device *device,
uint32_t __unused gid, uint32_t fid) {
int idx = 0;
- fingerprint_msg_t msg = {0};
+ fingerprint_msg_t msg = {0, {0}};
ALOGD("----------------> %s -----------------> fid %d", __FUNCTION__, fid);
if (device == NULL) {
ALOGE("Can't remove fingerprint (gid=%d, fid=%d); "
@@ -357,11 +453,11 @@ static int fingerprint_remove(struct fingerprint_device *device,
pthread_mutex_lock(&qdev->lock);
listIsEmpty = true; // Haven't seen a valid entry yet
for (idx = 0; idx < MAX_NUM_FINGERS; idx++) {
- uint32_t theFid = qdev->listener.authenid[idx];
+ uint32_t theFid = qdev->listener.fingerid[idx];
if (theFid != 0) {
// Delete this entry
qdev->listener.secureid[idx] = 0;
- qdev->listener.authenid[idx] = 0;
+ qdev->listener.fingerid[idx] = 0;
saveFingerprint(&qdev->listener, idx);
// Send a notification that we deleted this one
@@ -378,6 +474,9 @@ static int fingerprint_remove(struct fingerprint_device *device,
}
} // end for (idx < MAX_NUM_FINGERS)
} while (!listIsEmpty);
+ msg.type = FINGERPRINT_TEMPLATE_REMOVED;
+ msg.data.removed.finger.fid = 0;
+ device->notify(&msg);
qdev->listener.state = STATE_IDLE;
pthread_mutex_unlock(&qdev->lock);
} else {
@@ -385,7 +484,7 @@ static int fingerprint_remove(struct fingerprint_device *device,
// Look for this finger ID in our table.
pthread_mutex_lock(&qdev->lock);
for (idx = 0; idx < MAX_NUM_FINGERS; idx++) {
- if (qdev->listener.authenid[idx] == fid &&
+ if (qdev->listener.fingerid[idx] == fid &&
qdev->listener.secureid[idx] != 0) {
// Found it!
break;
@@ -399,7 +498,7 @@ static int fingerprint_remove(struct fingerprint_device *device,
}
qdev->listener.secureid[idx] = 0;
- qdev->listener.authenid[idx] = 0;
+ qdev->listener.fingerid[idx] = 0;
saveFingerprint(&qdev->listener, idx);
qdev->listener.state = STATE_IDLE;
@@ -432,18 +531,29 @@ static int set_notify_callback(struct fingerprint_device *device,
return 0;
}
+static bool is_valid_fid(qemu_fingerprint_device_t* qdev, uint64_t fid) {
+ int idx = 0;
+ if (0 == fid) { return false; }
+ for (idx = 0; idx < MAX_NUM_FINGERS; idx++) {
+ if (qdev->listener.fingerid[idx] == fid) {
+ return true;
+ }
+ }
+ return false;
+}
+
static void send_scan_notice(qemu_fingerprint_device_t* qdev, int fid) {
ALOGD("----------------> %s ----------------->", __FUNCTION__);
// acquired message
- fingerprint_msg_t acqu_msg = {0};
+ fingerprint_msg_t acqu_msg = {0, {0}};
acqu_msg.type = FINGERPRINT_ACQUIRED;
acqu_msg.data.acquired.acquired_info = FINGERPRINT_ACQUIRED_GOOD;
// authenticated message
- fingerprint_msg_t auth_msg = {0};
+ fingerprint_msg_t auth_msg = {0, {0}};
auth_msg.type = FINGERPRINT_AUTHENTICATED;
- auth_msg.data.authenticated.finger.fid = fid;
+ auth_msg.data.authenticated.finger.fid = is_valid_fid(qdev, fid) ? fid : 0;
auth_msg.data.authenticated.finger.gid = 0; // unused
auth_msg.data.authenticated.hat.version = HW_AUTH_TOKEN_VERSION;
auth_msg.data.authenticated.hat.authenticator_type =
@@ -481,7 +591,7 @@ static void send_enroll_notice(qemu_fingerprint_device_t* qdev, int fid) {
int idx = 0;
for (idx = 0; idx < MAX_NUM_FINGERS; idx++) {
if (qdev->listener.secureid[idx] == 0 ||
- qdev->listener.authenid[idx] == 0) {
+ qdev->listener.fingerid[idx] == 0) {
// This entry is available
break;
}
@@ -494,14 +604,14 @@ static void send_enroll_notice(qemu_fingerprint_device_t* qdev, int fid) {
}
qdev->listener.secureid[idx] = qdev->secure_user_id;
- qdev->listener.authenid[idx] = fid;
+ qdev->listener.fingerid[idx] = fid;
saveFingerprint(&qdev->listener, idx);
qdev->listener.state = STATE_SCAN;
pthread_mutex_unlock(&qdev->lock);
// LOCKED notification?
- fingerprint_msg_t msg = {0};
+ fingerprint_msg_t msg = {0, {0}};
msg.type = FINGERPRINT_TEMPLATE_ENROLLING;
msg.data.enroll.finger.fid = fid;
msg.data.enroll.samples_remaining = 0;
@@ -700,10 +810,9 @@ static int fingerprint_open(const hw_module_t* module, const char __unused *id,
return -ENOMEM;
}
- loadFingerprints(&qdev->listener);
qdev->device.common.tag = HARDWARE_DEVICE_TAG;
- qdev->device.common.version = HARDWARE_MODULE_API_VERSION(2, 0);
+ qdev->device.common.version = HARDWARE_MODULE_API_VERSION(2, 1);
qdev->device.common.module = (struct hw_module_t*)module;
qdev->device.common.close = fingerprint_close;
@@ -738,7 +847,7 @@ static struct hw_module_methods_t fingerprint_module_methods = {
fingerprint_module_t HAL_MODULE_INFO_SYM = {
.common = {
.tag = HARDWARE_MODULE_TAG,
- .module_api_version = FINGERPRINT_MODULE_API_VERSION_2_0,
+ .module_api_version = FINGERPRINT_MODULE_API_VERSION_2_1,
.hal_api_version = HARDWARE_HAL_API_VERSION,
.id = FINGERPRINT_HARDWARE_MODULE_ID,
.name = "Emulator Fingerprint HAL",
diff --git a/fstab.goldfish b/fstab.goldfish
index 1e94443..cecc047 100644
--- a/fstab.goldfish
+++ b/fstab.goldfish
@@ -5,4 +5,4 @@
/dev/block/mtdblock0 /system ext4 ro,barrier=1 wait
/dev/block/mtdblock1 /data ext4 noatime,nosuid,nodev,barrier=1,nomblk_io_submit wait,check
/dev/block/mtdblock2 /cache ext4 noatime,nosuid,nodev wait,check
-/devices/platform/goldfish_mmc.0* auto auto defaults voldmanaged=sdcard:auto,noemulatedsd
+/devices/platform/goldfish_mmc.0* auto auto defaults voldmanaged=sdcard:auto,encryptable=userdata
diff --git a/fstab.ranchu b/fstab.ranchu
index cff906f..f155c5a 100644
--- a/fstab.ranchu
+++ b/fstab.ranchu
@@ -2,7 +2,7 @@
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
-/dev/block/vda /system ext4 ro wait
-/dev/block/vdb /cache ext4 noatime,nosuid,nodev,nomblk_io_submit,errors=panic wait
-/dev/block/vdc /data ext4 noatime,nosuid,nodev,nomblk_io_submit,errors=panic wait
-#/devices/platform/goldfish_mmc.0 auto vfat defaults voldmanaged=sdcard:auto
+/dev/block/vda /system ext4 ro wait
+/dev/block/vdb /cache ext4 noatime,nosuid,nodev,nomblk_io_submit,errors=panic wait
+/dev/block/vdc /data ext4 noatime,nosuid,nodev,nomblk_io_submit,errors=panic wait,check
+/devices/*/block/vdd auto auto defaults voldmanaged=sdcard:auto,encryptable=userdata
diff --git a/gps/Android.mk b/gps/Android.mk
index 65b637c..0abf1fb 100644
--- a/gps/Android.mk
+++ b/gps/Android.mk
@@ -34,3 +34,14 @@ else
LOCAL_MODULE := gps.goldfish
endif
include $(BUILD_SHARED_LIBRARY)
+
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_CFLAGS += -DQEMU_HARDWARE
+LOCAL_SHARED_LIBRARIES := liblog libcutils libhardware
+LOCAL_SRC_FILES := gps_qemu.c
+LOCAL_MODULE := gps.ranchu
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/gps/gps_qemu.c b/gps/gps_qemu.c
index 8f3d6e9..133cbe4 100644
--- a/gps/gps_qemu.c
+++ b/gps/gps_qemu.c
@@ -96,12 +96,10 @@ nmea_tokenizer_init( NmeaTokenizer* t, const char* p, const char* end )
if (q == NULL)
q = end;
- if (q > p) {
- if (count < MAX_NMEA_TOKENS) {
- t->tokens[count].p = p;
- t->tokens[count].end = q;
- count += 1;
- }
+ if (count < MAX_NMEA_TOKENS) {
+ t->tokens[count].p = p;
+ t->tokens[count].end = q;
+ count += 1;
}
if (q < end)
q += 1;
diff --git a/init.goldfish.rc b/init.goldfish.rc
index 2058bad..48663bc 100644
--- a/init.goldfish.rc
+++ b/init.goldfish.rc
@@ -3,11 +3,6 @@ on early-init
mount debugfs debugfs /sys/kernel/debug
on init
- # Support legacy paths
- symlink /sdcard /mnt/sdcard
-
- # By default, primary storage is physical
- setprop ro.vold.primary_physical 1
on boot
setprop ARGH ARGH
@@ -25,6 +20,19 @@ on boot
setprop status.battery.level_raw 50
setprop status.battery.level_scale 9
+# set up the GPU caching
+ setprop ro.hwui.texture_cache_size 72
+ setprop ro.hwui.layer_cache_size 48
+ setprop ro.hwui.r_buffer_cache_size 8
+ setprop ro.hwui.path_cache_size 32
+ setprop ro.hwui.gradient_cache_size 1
+ setprop ro.hwui.drop_shadow_cache_size 6
+ setprop ro.hwui.texture_cache_flushrate 0.4
+ setprop ro.hwui.text_small_cache_width 1024
+ setprop ro.hwui.text_small_cache_height 1024
+ setprop ro.hwui.text_large_cache_width 2048
+ setprop ro.hwui.text_large_cache_height 1024
+
# disable some daemons the emulator doesn't want
stop dund
stop akmd
diff --git a/init.ranchu.rc b/init.ranchu.rc
index 9d2008d..2a20cd5 100644
--- a/init.ranchu.rc
+++ b/init.ranchu.rc
@@ -5,12 +5,6 @@ on early-init
mount debugfs debugfs /sys/kernel/debug
on init
- # See storage config details at http://source.android.com/tech/storage/
- mkdir /storage/sdcard 0555 root root
-
- # Support legacy paths
- #symlink /storage/sdcard /sdcard
- #symlink /storage/sdcard /mnt/sdcard
symlink /dev/goldfish_pipe /dev/android_pipe
symlink /dev/goldfish_pipe /dev/qemu_pipe
@@ -22,6 +16,7 @@ on boot
setprop ro.radio.use-ppp no
setprop ro.build.product generic
setprop ro.product.device generic
+ setprop ro.hardware.audio.primary goldfish
# fake some battery state
setprop status.battery.state Slow
@@ -29,25 +24,59 @@ on boot
setprop status.battery.level_raw 50
setprop status.battery.level_scale 9
-# Disable GPU support
- setprop ro.kernel.qemu 1
- setprop ro.kernel.qemu.gles 0
- symlink /system/lib64/hw/gralloc.default.aosp.so /system/lib64/hw/gralloc.default.so
-
-# disable RenderScript
- setprop config.disable_renderscript 1
+# set up the GPU caching
+ setprop ro.hwui.texture_cache_size 72
+ setprop ro.hwui.layer_cache_size 48
+ setprop ro.hwui.r_buffer_cache_size 8
+ setprop ro.hwui.path_cache_size 32
+ setprop ro.hwui.gradient_cache_size 1
+ setprop ro.hwui.drop_shadow_cache_size 6
+ setprop ro.hwui.texture_cache_flushrate 0.4
+ setprop ro.hwui.text_small_cache_width 1024
+ setprop ro.hwui.text_small_cache_height 1024
+ setprop ro.hwui.text_large_cache_width 2048
+ setprop ro.hwui.text_large_cache_height 1024
# disable some daemons the emulator doesn't want
stop dund
stop akmd
-# enable dhcpcd on eth0 interface
-service dhcpcd_eth0 /system/bin/dhcpcd -ABDKL
- class main
- disabled
- oneshot
+# start essential services
+# These were written for the classic emulator, but are applicable to ranchu
+ start goldfish-logcat
+ start goldfish-setup
+
# enable Google-specific location features,
# like NetworkLocationProvider and LocationCollector
setprop ro.com.google.locationfeatures 1
+service goldfish-setup /system/etc/init.goldfish.sh
+ user root
+ group root
+ oneshot
+
+# The qemu-props program is used to set various system
+# properties on boot. It must be run early during the boot
+# process to avoid race conditions with other daemons that
+# might read them (e.g. surface flinger), so define it in
+# class 'core'
+#
+service qemu-props /system/bin/qemu-props
+ class core
+ user root
+ group root
+ oneshot
+
+# -Q is a special logcat option that forces the
+# program to check wether it runs on the emulator
+# if it does, it redirects its output to the device
+# named by the androidboot.console kernel option
+# if not, is simply exits immediately
+
+service goldfish-logcat /system/bin/logcat -Q
+ oneshot
+
+service fingerprintd /system/bin/fingerprintd
+ class late_start
+ user system
diff --git a/opengl/shared/OpenglCodecCommon/Android.mk b/opengl/shared/OpenglCodecCommon/Android.mk
index 1c0aca5..2104398 100644
--- a/opengl/shared/OpenglCodecCommon/Android.mk
+++ b/opengl/shared/OpenglCodecCommon/Android.mk
@@ -5,11 +5,11 @@ LOCAL_PATH := $(call my-dir)
commonSources := \
GLClientState.cpp \
+ ChecksumCalculator.cpp \
GLSharedGroup.cpp \
glUtils.cpp \
SocketStream.cpp \
TcpStream.cpp \
- TimeUtils.cpp
### CodecCommon guest ##############################################
$(call emugl-begin-static-library,libOpenglCodecCommon)
diff --git a/opengl/shared/OpenglCodecCommon/ChecksumCalculator.cpp b/opengl/shared/OpenglCodecCommon/ChecksumCalculator.cpp
new file mode 100644
index 0000000..60940b8
--- /dev/null
+++ b/opengl/shared/OpenglCodecCommon/ChecksumCalculator.cpp
@@ -0,0 +1,154 @@
+/*
+* Copyright (C) 2016 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#include "ChecksumCalculator.h"
+
+#include <string>
+#include <vector>
+#include <string.h>
+
+// Checklist when implementing new protocol:
+// 1. update CHECKSUMHELPER_MAX_VERSION
+// 2. update maxChecksumSize()
+// 3. update checksumByteSize()
+// 4. update addBuffer, writeChecksum, resetChecksum, validate
+
+// change CHECKSUMHELPER_MAX_VERSION when you want to update the protocol version
+#define CHECKSUMHELPER_MAX_VERSION 1
+
+// checksum buffer size
+// Please add a new checksum buffer size when implementing a new protocol,
+// as well as modifying the maxChecksumSize function.
+static const size_t kV1ChecksumSize = 8;
+
+static constexpr size_t maxChecksumSize() {
+ return 0 > kV1ChecksumSize ? 0 : kV1ChecksumSize;
+}
+
+static const size_t kMaxChecksumSize = maxChecksumSize();
+
+// utility macros to create checksum string at compilation time
+#define CHECKSUMHELPER_VERSION_STR_PREFIX "ANDROID_EMU_CHECKSUM_HELPER_v"
+#define CHECKSUMHELPER_MACRO_TO_STR(x) #x
+#define CHECKSUMHELPER_MACRO_VAL_TO_STR(x) CHECKSUMHELPER_MACRO_TO_STR(x)
+
+static const uint32_t kMaxVersion = CHECKSUMHELPER_MAX_VERSION;
+static const char* kMaxVersionStrPrefix = CHECKSUMHELPER_VERSION_STR_PREFIX;
+static const char* kMaxVersionStr = CHECKSUMHELPER_VERSION_STR_PREFIX CHECKSUMHELPER_MACRO_VAL_TO_STR(CHECKSUMHELPER_MAX_VERSION);
+
+#undef CHECKSUMHELPER_MAX_VERSION
+#undef CHECKSUMHELPER_VERSION_STR_PREFIX
+#undef CHECKSUMHELPER_MACRO_TO_STR
+#undef CHECKSUMHELPER_MACRO_VAL_TO_STR
+
+uint32_t ChecksumCalculator::getMaxVersion() {return kMaxVersion;}
+const char* ChecksumCalculator::getMaxVersionStr() {return kMaxVersionStr;}
+const char* ChecksumCalculator::getMaxVersionStrPrefix() {return kMaxVersionStrPrefix;}
+
+bool ChecksumCalculator::setVersion(uint32_t version) {
+ if (version > kMaxVersion) { // unsupported version
+ LOG_CHECKSUMHELPER("%s: ChecksumCalculator Set Unsupported version Version %d\n",
+ __FUNCTION__, m_version);
+ return false;
+ }
+ if (m_isEncodingChecksum) { // setVersion is called in the middle of encoding checksums
+ LOG_CHECKSUMHELPER("%s: called between addBuffer and writeChecksum\n",
+ __FUNCTION__);
+ return false;
+ }
+ m_version = version;
+ LOG_CHECKSUMHELPER("%s: ChecksumCalculator Set Version %d\n", __FUNCTION__,
+ m_version);
+ return true;
+}
+
+size_t ChecksumCalculator::checksumByteSize() const {
+ switch (m_version) {
+ case 0:
+ return 0;
+ case 1:
+ return sizeof(uint32_t) + sizeof(m_numWrite);
+ default:
+ return 0;
+ }
+}
+
+void ChecksumCalculator::addBuffer(const void* buf, size_t packetLen) {
+ m_isEncodingChecksum = true;
+ switch (m_version) {
+ case 1:
+ m_v1BufferTotalLength += packetLen;
+ break;
+ }
+}
+
+bool ChecksumCalculator::writeChecksum(void* outputChecksum, size_t outputChecksumLen) {
+ if (outputChecksumLen < checksumByteSize()) return false;
+ char *checksumPtr = (char *)outputChecksum;
+ switch (m_version) {
+ case 1: { // protocol v1 is to reverse the packetLen and write it at the end
+ uint32_t val = computeV1Checksum();
+ memcpy(checksumPtr, &val, sizeof(val));
+ memcpy(checksumPtr+sizeof(val), &m_numWrite, sizeof(m_numWrite));
+ break;
+ }
+ }
+ resetChecksum();
+ m_numWrite++;
+ return true;
+}
+
+void ChecksumCalculator::resetChecksum() {
+ switch (m_version) {
+ case 1:
+ m_v1BufferTotalLength = 0;
+ break;
+ }
+ m_isEncodingChecksum = false;
+}
+
+bool ChecksumCalculator::validate(const void* expectedChecksum, size_t expectedChecksumLen) {
+ size_t checksumSize = checksumByteSize();
+ if (expectedChecksumLen != checksumSize) {
+ m_numRead++;
+ resetChecksum();
+ return false;
+ }
+ // buffers for computing the checksum
+ unsigned char sChecksumBuffer[kMaxChecksumSize];
+ switch (m_version) {
+ case 1: {
+ uint32_t val = computeV1Checksum();
+ memcpy(sChecksumBuffer, &val, sizeof(val));
+ memcpy(sChecksumBuffer+sizeof(val), &m_numRead, sizeof(m_numRead));
+ break;
+ }
+ }
+ bool isValid = !memcmp(sChecksumBuffer, expectedChecksum, checksumSize);
+ m_numRead++;
+ resetChecksum();
+ return isValid;
+}
+
+uint32_t ChecksumCalculator::computeV1Checksum() {
+ uint32_t revLen = m_v1BufferTotalLength;
+ revLen = (revLen & 0xffff0000) >> 16 | (revLen & 0x0000ffff) << 16;
+ revLen = (revLen & 0xff00ff00) >> 8 | (revLen & 0x00ff00ff) << 8;
+ revLen = (revLen & 0xf0f0f0f0) >> 4 | (revLen & 0x0f0f0f0f) << 4;
+ revLen = (revLen & 0xcccccccc) >> 2 | (revLen & 0x33333333) << 2;
+ revLen = (revLen & 0xaaaaaaaa) >> 1 | (revLen & 0x55555555) << 1;
+ return revLen;
+}
diff --git a/opengl/shared/OpenglCodecCommon/ChecksumCalculator.h b/opengl/shared/OpenglCodecCommon/ChecksumCalculator.h
new file mode 100644
index 0000000..4cc231a
--- /dev/null
+++ b/opengl/shared/OpenglCodecCommon/ChecksumCalculator.h
@@ -0,0 +1,181 @@
+/*
+* Copyright (C) 2016 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#pragma once
+
+#include <stdint.h>
+#include <stdlib.h>
+
+// Set TRACE_CHECKSUMHELPER to 1 to debug creation/destruction of GLprotocol
+// instances.
+#define TRACE_CHECKSUMHELPER 0
+
+#if TRACE_CHECKSUMHELPER
+#define LOG_CHECKSUMHELPER(x...) fprintf(stderr, x)
+#else
+#define LOG_CHECKSUMHELPER(x...)
+#endif
+
+// ChecksumCalculator adds checksum as an array of bytes to GL pipe communication, which
+// size depends on the protocol version. Each pipe should use one ChecksumCalculator.
+// It can:
+// (1) take a list of buffers one by one and compute their checksum string,
+// in this case the checksum should be as the data in those buffers are
+// concatenated;
+// (2) compute the checksum of the buffer list, then either write them into
+// a buffer provided by user, or compare it against a checksum provided
+// by user
+// (3) support different checksum version in future.
+//
+// For backward compatibility, checksum version 0 behaves the same as there is
+// no checksum (i.e., checksumByteSize returns 0, validate always returns true,
+// addBuffer and writeCheckSum does nothing).
+//
+// Notice that to detect package lost, ChecksumCalculator also keeps track of how
+// many times it generates/validates checksums, and might use it as part of the
+// checksum.
+//
+// To evaluate checksums from a list of data buffers buf1, buf2... Please call
+// addBuffer(buf1, buf1len), addBuffer(buf2, buf2len) ... in order.
+// Then if the checksum needs to be encoded into a buffer, one needs to allocate
+// a checksum buffer with size checksumByteSize(), and call
+// writeChecksum(checksumBuffer) to write the checksum to the buffer.
+// If the checksum needs to be validated against an existing one, one needs to
+// call validate(existChecksum, existChecksumLen).
+//
+// The checksum generator and validator must be set to the same version, and
+// the validator must check ALL checksums in the order they are generated,
+// otherwise the validation function will return false.
+//
+// It is allowed to change the checksum version between calculating two
+// checksums. This is designed for backward compatibility reason.
+//
+// Example 1, encoding and decoding:
+//
+// bool testChecksum(void* buf, size_t bufLen) {
+// // encoding message
+// ChecksumCalculator encoder;
+// encoder.setVersion(1);
+// encoder.addBuffer(buf, bufLen);
+// std::vector<unsigned char> message(bufLen + encoder.checksumByteSize());
+// memcpy(&message[0], buf, bufLen);
+// encoder.writeChecksum(&message[0] + bufLen, encoder.checksumByteSize());
+//
+// // decoding message
+// ChecksumCalculator decoder;
+// decoder.setVersion(1);
+// decoder.addBuffer(&message[0], bufLen);
+// return decoder.validate(&message[0] + bufLen, decoder.checksumByteSize());
+// }
+// The return value is true.
+//
+// Example 2, decoding will fail if the order of messages is wrong:
+//
+// bool testChecksumOrder(void* buf1, size_t bufLen1,
+// void* buf2, size_t bufLen2) {
+// // encoding messages
+// ChecksumCalculator encoder;
+// encoder.setVersion(1);
+//
+// std::vector<unsigned char> message1(bufLen1 + encoder.checksumByteSize());
+// std::vector<unsigned char> message2(bufLen2 + encoder.checksumByteSize());
+//
+// encoder.addBuffer(buf1, bufLen1);
+// std::vector<unsigned char> message1(bufLen1 + encoder.checksumByteSize());
+// memcpy(&message1[0], buf1, bufLen1);
+// encoder.writeChecksum(&message1[0] + bufLen1, encoder.checksumByteSize());
+//
+// encoder.addBuffer(buf2, bufLen2);
+// std::vector<unsigned char> message2(bufLen2 + encoder.checksumByteSize());
+// memcpy(&message2[0], buf2, bufLen2);
+// encoder.writeChecksum(&message2[0] + bufLen2, encoder.checksumByteSize());
+//
+// // decoding messages
+// ChecksumCalculator decoder;
+// decoder.setVersion(1);
+// decoder.addBuffer(&message2[0], bufLen2);
+// // returns false because the decoding order is not consistent with
+// // encoding order
+// if (!decoder.validate(&message2[0]+bufLen2, decoder.checksumByteSize())) {
+// return false;
+// }
+//
+// decoder.addBuffer(&message1[0], bufLen1);
+// if (!decoder.validate(&message1[0]+bufLen1, decoder.checksumByteSize())) {
+// return false;
+// }
+//
+// return false;
+// }
+
+class ChecksumCalculator {
+public:
+ // Get and set current checksum version
+ uint32_t getVersion() const { return m_version; }
+ // Call setVersion to set a checksum version. It should be called before
+ // addBuffer(), writeChecksum() and validate(). And it should be called
+ // exact once per rendering thread if both host and guest support checksum.
+ // It won't be called if either host or guest does not support checksum.
+ bool setVersion(uint32_t version);
+
+ // Maximum supported checksum version
+ static uint32_t getMaxVersion();
+ // A version string that looks like "ANDROID_EMU_CHECKSUM_HELPER_v1"
+ // Used multiple times when the guest queries the maximum supported version
+ // from the host.
+ // The library owns the returned pointer. The returned pointer will be
+ // deconstructed when unloading library.
+ static const char* getMaxVersionStr();
+ static const char* getMaxVersionStrPrefix();
+
+ // Size of checksum in the current version
+ size_t checksumByteSize() const;
+
+ // Update the current checksum value from the data
+ // at |buf| of |bufLen| bytes. Once all buffers
+ // have been added, call writeChecksum() to store
+ // the final checksum value and reset its state.
+ void addBuffer(const void* buf, size_t bufLen);
+ // Write the checksum from the list of buffers to outputChecksum
+ // Will reset the list of buffers by calling resetChecksum.
+ // Return false if the buffer is not long enough
+ // Please query buffer size from checksumByteSize()
+ bool writeChecksum(void* outputChecksum, size_t outputChecksumLen);
+ // Restore the states for computing checksums.
+ // Automatically called at the end of writeChecksum and validate.
+ // Can also be used to abandon the current checksum being calculated.
+ // Notes: it doesn't update the internal read / write counter
+ void resetChecksum();
+
+ // Calculate the checksum from the list of buffers and
+ // compare it with the checksum encoded in expectedChecksum
+ // Will reset the list of buffers by calling resetChecksum.
+ bool validate(const void* expectedChecksum, size_t expectedChecksumLen);
+protected:
+ uint32_t m_version = 0;
+ // A temporary state used to compute the total length of a list of buffers,
+ // if addBuffer is called.
+ uint32_t m_numRead = 0;
+ uint32_t m_numWrite = 0;
+ // m_isEncodingChecksum is true when between addBuffer and writeChecksum
+ bool m_isEncodingChecksum = false;
+private:
+ // Compute a 32bit checksum
+ // Used in protocol v1
+ uint32_t computeV1Checksum();
+ // The buffer used in protocol version 1 to compute checksum.
+ uint32_t m_v1BufferTotalLength = 0;
+};
diff --git a/opengl/shared/OpenglCodecCommon/ErrorLog.h b/opengl/shared/OpenglCodecCommon/ErrorLog.h
index 6f41fd7..d2388e6 100644
--- a/opengl/shared/OpenglCodecCommon/ErrorLog.h
+++ b/opengl/shared/OpenglCodecCommon/ErrorLog.h
@@ -16,7 +16,7 @@
#ifndef _ERROR_LOG_H_
#define _ERROR_LOG_H_
-#if (HAVE_ANDROID_OS == 1)
+#if defined(__ANDROID__)
# include <cutils/log.h>
# define ERR(...) ALOGE(__VA_ARGS__)
# ifdef EMUGL_DEBUG
diff --git a/opengl/shared/OpenglCodecCommon/GLClientState.cpp b/opengl/shared/OpenglCodecCommon/GLClientState.cpp
index 0826a14..638eb4c 100644
--- a/opengl/shared/OpenglCodecCommon/GLClientState.cpp
+++ b/opengl/shared/OpenglCodecCommon/GLClientState.cpp
@@ -65,6 +65,8 @@ GLClientState::GLClientState(int nLocations)
m_tex.textures = NULL;
m_tex.numTextures = 0;
m_tex.allocTextures = 0;
+
+ m_maxVertexAttribsDirty = true;
}
GLClientState::~GLClientState()
@@ -92,7 +94,7 @@ void GLClientState::setState(int location, int size, GLenum type, GLboolean norm
m_states[location].stride = stride;
m_states[location].data = (void*)data;
m_states[location].bufferObject = m_currentArrayVbo;
- m_states[location].elementSize = glSizeof(type) * size;
+ m_states[location].elementSize = size ? (glSizeof(type) * size) : 0;
m_states[location].normalized = normalized;
}
@@ -247,7 +249,7 @@ GLenum GLClientState::setActiveTextureUnit(GLenum texture)
{
GLuint unit = texture - GL_TEXTURE0;
if (unit >= MAX_TEXTURE_UNITS) {
- return GL_INVALID_OPERATION;
+ return GL_INVALID_ENUM;
}
m_tex.activeUnit = &m_tex.unit[unit];
return GL_NO_ERROR;
diff --git a/opengl/shared/OpenglCodecCommon/GLClientState.h b/opengl/shared/OpenglCodecCommon/GLClientState.h
index 09ee571..8e95c37 100644
--- a/opengl/shared/OpenglCodecCommon/GLClientState.h
+++ b/opengl/shared/OpenglCodecCommon/GLClientState.h
@@ -90,6 +90,10 @@ public:
int getLocation(GLenum loc);
void setActiveTexture(int texUnit) {m_activeTexture = texUnit; };
int getActiveTexture() const { return m_activeTexture; }
+ void setMaxVertexAttribs(int val) {
+ m_maxVertexAttribs = val;
+ m_maxVertexAttribsDirty = false;
+ }
void unBindBuffer(GLuint id)
{
@@ -184,6 +188,8 @@ public:
private:
PixelStoreState m_pixelStore;
VertexAttribState *m_states;
+ int m_maxVertexAttribs;
+ bool m_maxVertexAttribsDirty;
int m_nLocations;
GLuint m_currentArrayVbo;
GLuint m_currentIndexVbo;
@@ -439,6 +445,15 @@ public:
isClientStateParam = true;
break;
}
+ case GL_MAX_VERTEX_ATTRIBS: {
+ if (m_maxVertexAttribsDirty) {
+ isClientStateParam = false;
+ } else {
+ *ptr = m_maxVertexAttribs;
+ isClientStateParam = true;
+ }
+ break;
+ }
}
return isClientStateParam;
}
diff --git a/opengl/shared/OpenglCodecCommon/GLDecoderContextData.h b/opengl/shared/OpenglCodecCommon/GLDecoderContextData.h
deleted file mode 100644
index 23785ae..0000000
--- a/opengl/shared/OpenglCodecCommon/GLDecoderContextData.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _GL_DECODER_CONTEXT_DATA_H_
-#define _GL_DECODER_CONTEXT_DATA_H_
-
-#include <assert.h>
-#include <string.h>
-#include "FixedBuffer.h"
-#include "codec_defs.h"
-
-class GLDecoderContextData {
-public:
- typedef enum {
- VERTEX_LOCATION = 0,
- NORMAL_LOCATION = 1,
- COLOR_LOCATION = 2,
- POINTSIZE_LOCATION = 3,
- TEXCOORD0_LOCATION = 4,
- TEXCOORD1_LOCATION = 5,
- TEXCOORD2_LOCATION = 6,
- TEXCOORD3_LOCATION = 7,
- TEXCOORD4_LOCATION = 8,
- TEXCOORD5_LOCATION = 9,
- TEXCOORD6_LOCATION = 10,
- TEXCOORD7_LOCATION = 11,
- MATRIXINDEX_LOCATION = 12,
- WEIGHT_LOCATION = 13,
- LAST_LOCATION = 14
- } PointerDataLocation;
-
- GLDecoderContextData(int nLocations = CODEC_MAX_VERTEX_ATTRIBUTES) :
- m_nLocations(nLocations)
- {
- m_pointerData = new FixedBuffer[m_nLocations];
- }
-
- ~GLDecoderContextData() {
- delete [] m_pointerData;
- }
-
- void storePointerData(unsigned int loc, void *data, size_t len) {
-
- assert(loc < m_nLocations);
- m_pointerData[loc].alloc(len);
- memcpy(m_pointerData[loc].ptr(), data, len);
- }
- void *pointerData(unsigned int loc) {
- assert(loc < m_nLocations);
- return m_pointerData[loc].ptr();
- }
-private:
- FixedBuffer *m_pointerData;
- int m_nLocations;
-};
-
-#endif
diff --git a/opengl/shared/OpenglCodecCommon/GLErrorLog.h b/opengl/shared/OpenglCodecCommon/GLErrorLog.h
deleted file mode 100644
index 5654aea..0000000
--- a/opengl/shared/OpenglCodecCommon/GLErrorLog.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-* Copyright 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifndef __GL_ERROR_LOG_H__
-#define __GL_ERROR_LOG_H__
-
-#include "ErrorLog.h"
-
-#ifdef CHECK_GL_ERROR
-void dbg(){}
-#define GET_GL_ERROR(gl) \
- { \
- int err = gl.glGetError(); \
- if (err) { dbg(); ERR("Error: 0x%X in %s (%s:%d)\n", err, __FUNCTION__, __FILE__, __LINE__); } \
- }
-
-#else
-#define GET_GL_ERROR(gl)
-#endif
-
-#endif //__GL_ERROR_LOG_H__
diff --git a/opengl/shared/OpenglCodecCommon/TimeUtils.cpp b/opengl/shared/OpenglCodecCommon/TimeUtils.cpp
deleted file mode 100644
index 50aeb03..0000000
--- a/opengl/shared/OpenglCodecCommon/TimeUtils.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "TimeUtils.h"
-
-#ifdef _WIN32
-#include <windows.h>
-#include <time.h>
-#include <stdio.h>
-#elif defined(__linux__)
-#include <stdlib.h>
-#include <sys/time.h>
-#include <time.h>
-#include <unistd.h>
-#else
-#include <sys/time.h>
-#include <unistd.h>
-#endif
-
-long long GetCurrentTimeMS()
-{
-#ifdef _WIN32
- static LARGE_INTEGER freq;
- static bool bNotInit = true;
- if ( bNotInit ) {
- bNotInit = (QueryPerformanceFrequency( &freq ) == FALSE);
- }
- LARGE_INTEGER currVal;
- QueryPerformanceCounter( &currVal );
-
- return currVal.QuadPart / (freq.QuadPart / 1000);
-
-#elif defined(__linux__)
-
- struct timespec now;
- clock_gettime(CLOCK_MONOTONIC, &now);
- long long iDiff = (now.tv_sec * 1000LL) + now.tv_nsec/1000000LL;
- return iDiff;
-
-#else /* Others, e.g. OS X */
-
- struct timeval now;
- gettimeofday(&now, NULL);
- long long iDiff = (now.tv_sec * 1000LL) + now.tv_usec/1000LL;
- return iDiff;
-
-#endif
-}
-
-void TimeSleepMS(int p_mili)
-{
-#ifdef _WIN32
- Sleep(p_mili);
-#else
- usleep(p_mili * 1000);
-#endif
-}
diff --git a/opengl/shared/OpenglCodecCommon/UnixStream.cpp b/opengl/shared/OpenglCodecCommon/UnixStream.cpp
deleted file mode 100644
index 8e463a3..0000000
--- a/opengl/shared/OpenglCodecCommon/UnixStream.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "UnixStream.h"
-#include <cutils/sockets.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <sys/un.h>
-#include <sys/stat.h>
-
-/* Not all systems define PATH_MAX, those who don't generally don't
- * have a limit on the maximum path size, so use a value that is
- * large enough for our very limited needs.
- */
-#ifndef PATH_MAX
-#define PATH_MAX 128
-#endif
-
-UnixStream::UnixStream(size_t bufSize) :
- SocketStream(bufSize)
-{
-}
-
-UnixStream::UnixStream(int sock, size_t bufSize) :
- SocketStream(sock, bufSize)
-{
-}
-
-/* Initialize a sockaddr_un with the appropriate values corresponding
- * to a given 'virtual port'. Returns 0 on success, -1 on error.
- */
-static int
-make_unix_path(char *path, size_t pathlen, int port_number)
-{
- char tmp[PATH_MAX]; // temp directory
- int ret = 0;
-
- // First, create user-specific temp directory if needed
- const char* user = getenv("USER");
- if (user != NULL) {
- struct stat st;
- snprintf(tmp, sizeof(tmp), "/tmp/android-%s", user);
- do {
- ret = ::lstat(tmp, &st);
- } while (ret < 0 && errno == EINTR);
-
- if (ret < 0 && errno == ENOENT) {
- do {
- ret = ::mkdir(tmp, 0766);
- } while (ret < 0 && errno == EINTR);
- if (ret < 0) {
- ERR("Could not create temp directory: %s", tmp);
- user = NULL; // will fall-back to /tmp
- }
- }
- else if (ret < 0) {
- user = NULL; // will fallback to /tmp
- }
- }
-
- if (user == NULL) { // fallback to /tmp in case of error
- snprintf(tmp, sizeof(tmp), "/tmp");
- }
-
- // Now, initialize it properly
- snprintf(path, pathlen, "%s/qemu-gles-%d", tmp, port_number);
- return 0;
-}
-
-
-int UnixStream::listen(unsigned short port)
-{
- char path[PATH_MAX];
-
- if (make_unix_path(path, sizeof(path), port) < 0) {
- return -1;
- }
-
- m_sock = socket_local_server(path, ANDROID_SOCKET_NAMESPACE_FILESYSTEM, SOCK_STREAM);
- if (!valid()) return int(ERR_INVALID_SOCKET);
-
- return 0;
-}
-
-SocketStream * UnixStream::accept()
-{
- int clientSock = -1;
-
- while (true) {
- struct sockaddr_un addr;
- socklen_t len = sizeof(addr);
- clientSock = ::accept(m_sock, (sockaddr *)&addr, &len);
-
- if (clientSock < 0 && errno == EINTR) {
- continue;
- }
- break;
- }
-
- UnixStream *clientStream = NULL;
-
- if (clientSock >= 0) {
- clientStream = new UnixStream(clientSock, m_bufsize);
- }
- return clientStream;
-}
-
-int UnixStream::connect(unsigned short port)
-{
- char path[PATH_MAX];
-
- if (make_unix_path(path, sizeof(path), port) < 0)
- return -1;
-
- m_sock = socket_local_client(path, ANDROID_SOCKET_NAMESPACE_FILESYSTEM, SOCK_STREAM);
- if (!valid()) return -1;
-
- return 0;
-}
diff --git a/opengl/shared/OpenglCodecCommon/UnixStream.h b/opengl/shared/OpenglCodecCommon/UnixStream.h
deleted file mode 100644
index c184b19..0000000
--- a/opengl/shared/OpenglCodecCommon/UnixStream.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef __UNIX_STREAM_H
-#define __UNIX_STREAM_H
-
-#include "SocketStream.h"
-
-class UnixStream : public SocketStream {
-public:
- explicit UnixStream(size_t bufsize = 10000);
- virtual int listen(unsigned short port);
- virtual SocketStream *accept();
- virtual int connect(unsigned short port);
-private:
- UnixStream(int sock, size_t bufSize);
-};
-
-#endif
diff --git a/opengl/shared/OpenglCodecCommon/Win32PipeStream.cpp b/opengl/shared/OpenglCodecCommon/Win32PipeStream.cpp
deleted file mode 100644
index e1a0b9b..0000000
--- a/opengl/shared/OpenglCodecCommon/Win32PipeStream.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "Win32PipeStream.h"
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <windows.h>
-
-#ifndef _WIN32
-#error ONLY BUILD THIS SOURCE FILE FOR WINDOWS!
-#endif
-
-/* The official documentation states that the name of a given named
- * pipe cannot be more than 256 characters long.
- */
-#define NAMED_PIPE_MAX 256
-
-Win32PipeStream::Win32PipeStream(size_t bufSize) :
- SocketStream(bufSize),
- m_pipe(INVALID_HANDLE_VALUE)
-{
-}
-
-Win32PipeStream::Win32PipeStream(HANDLE pipe, size_t bufSize) :
- SocketStream(-1, bufSize),
- m_pipe(pipe)
-{
-}
-
-Win32PipeStream::~Win32PipeStream()
-{
- if (m_pipe != INVALID_HANDLE_VALUE) {
- CloseHandle(m_pipe);
- m_pipe = INVALID_HANDLE_VALUE;
- }
-}
-
-/* Initialize the pipe name corresponding to a given port
- */
-static void
-make_pipe_name(char *path, size_t pathlen, int port_number)
-{
- snprintf(path, pathlen, "\\\\.\\pipe\\qemu-gles-%d", port_number);
-}
-
-
-/* Technical note: Named pipes work differently from BSD Sockets.
- * One does not create/bind a pipe, and collect a new handle each
- * time a client connects with accept().
- *
- * Instead, the server creates a new pipe instance each time it wants
- * to get a new client connection, then calls ConnectNamedPipe() to
- * wait for a connection.
- *
- * So listen() is a no-op, and accept() really creates the pipe handle.
- *
- * Also, connect() must create a pipe handle with CreateFile() and
- * wait for a server instance with WaitNamedPipe()
- */
-int Win32PipeStream::listen(unsigned short port)
-{
- // just save the port number for accept()
- m_port = port;
- return 0;
-}
-
-SocketStream * Win32PipeStream::accept()
-{
- char path[NAMED_PIPE_MAX+1];
- SocketStream* clientStream;
- HANDLE pipe;
-
- make_pipe_name(path, sizeof(path), m_port);
-
- pipe = ::CreateNamedPipe(
- path, // pipe name
- PIPE_ACCESS_DUPLEX, // read-write access
- PIPE_TYPE_BYTE | // byte-oriented writes
- PIPE_READMODE_BYTE | // byte-oriented reads
- PIPE_WAIT, // blocking operations
- PIPE_UNLIMITED_INSTANCES, // no limit on clients
- 4096, // input buffer size
- 4096, // output buffer size
- 0, // client time-out
- NULL); // default security attributes
-
- if (pipe == INVALID_HANDLE_VALUE) {
- ERR("%s: CreateNamedPipe failed %d\n", __FUNCTION__, (int)GetLastError());
- return NULL;
- }
-
- // Stupid Win32 API design: If a client is already connected, then
- // ConnectNamedPipe will return 0, and GetLastError() will return
- // ERROR_PIPE_CONNECTED. This is not an error! It just means that the
- // function didn't have to wait.
- //
- if (::ConnectNamedPipe(pipe, NULL) == 0 && GetLastError() != ERROR_PIPE_CONNECTED) {
- ERR("%s: ConnectNamedPipe failed: %d\n", __FUNCTION__, (int)GetLastError());
- CloseHandle(pipe);
- return NULL;
- }
-
- clientStream = new Win32PipeStream(pipe, m_bufsize);
- return clientStream;
-}
-
-int Win32PipeStream::connect(unsigned short port)
-{
- char path[NAMED_PIPE_MAX+1];
- HANDLE pipe;
- int tries = 10;
-
- make_pipe_name(path, sizeof(path), port);
-
- /* We're going to loop in order to wait for the pipe server to
- * be setup properly.
- */
- for (; tries > 0; tries--) {
- pipe = ::CreateFile(
- path, // pipe name
- GENERIC_READ | GENERIC_WRITE, // read & write
- 0, // no sharing
- NULL, // default security attrs
- OPEN_EXISTING, // open existing pipe
- 0, // default attributes
- NULL); // no template file
-
- /* If we have a valid pipe handle, break from the loop */
- if (pipe != INVALID_HANDLE_VALUE) {
- break;
- }
-
- /* We can get here if the pipe is busy, i.e. if the server hasn't
- * create a new pipe instance to service our request. In which case
- * GetLastError() will return ERROR_PIPE_BUSY.
- *
- * If so, then use WaitNamedPipe() to wait for a decent time
- * to try again.
- */
- if (GetLastError() != ERROR_PIPE_BUSY) {
- /* Not ERROR_PIPE_BUSY */
- ERR("%s: CreateFile failed: %d\n", __FUNCTION__, (int)GetLastError());
- errno = EINVAL;
- return -1;
- }
-
- /* Wait for 5 seconds */
- if ( !WaitNamedPipe(path, 5000) ) {
- ERR("%s: WaitNamedPipe failed: %d\n", __FUNCTION__, (int)GetLastError());
- errno = EINVAL;
- return -1;
- }
- }
-
- m_pipe = pipe;
- return 0;
-}
-
-/* Special buffer methods, since we can't use socket functions here */
-
-int Win32PipeStream::commitBuffer(size_t size)
-{
- if (m_pipe == INVALID_HANDLE_VALUE)
- return -1;
-
- size_t res = size;
- int retval = 0;
-
- while (res > 0) {
- DWORD written;
- if (! ::WriteFile(m_pipe, (const char *)m_buf + (size - res), res, &written, NULL)) {
- retval = -1;
- ERR("%s: failed: %d\n", __FUNCTION__, (int)GetLastError());
- break;
- }
- res -= written;
- }
- return retval;
-}
-
-const unsigned char *Win32PipeStream::readFully(void *buf, size_t len)
-{
- const unsigned char* ret = NULL;
-
- if (m_pipe == INVALID_HANDLE_VALUE)
- return NULL;
-
- if (!buf) {
- return NULL; // do not allow NULL buf in that implementation
- }
-
- size_t res = len;
- while (res > 0) {
- DWORD readcount = 0;
- if (! ::ReadFile(m_pipe, (char *)buf + (len - res), res, &readcount, NULL) || readcount == 0) {
- errno = (int)GetLastError();
- return NULL;
- }
- res -= readcount;
- }
- return (const unsigned char *)buf;
-}
-
-const unsigned char *Win32PipeStream::read( void *buf, size_t *inout_len)
-{
- size_t len = *inout_len;
- DWORD readcount;
-
- if (m_pipe == INVALID_HANDLE_VALUE)
- return NULL;
-
- if (!buf) {
- return NULL; // do not allow NULL buf in that implementation
- }
-
- if (!::ReadFile(m_pipe, (char *)buf, len, &readcount, NULL)) {
- errno = (int)GetLastError();
- return NULL;
- }
-
- *inout_len = (size_t)readcount;
- return (const unsigned char *)buf;
-}
diff --git a/opengl/shared/OpenglCodecCommon/Win32PipeStream.h b/opengl/shared/OpenglCodecCommon/Win32PipeStream.h
deleted file mode 100644
index 4114545..0000000
--- a/opengl/shared/OpenglCodecCommon/Win32PipeStream.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef __WIN32_PIPE_STREAM_H
-#define __WIN32_PIPE_STREAM_H
-
-#include "SocketStream.h"
-#include <windows.h>
-
-class Win32PipeStream : public SocketStream {
-public:
- explicit Win32PipeStream(size_t bufsize = 10000);
- virtual ~Win32PipeStream();
- virtual int listen(unsigned short port);
- virtual SocketStream *accept();
- virtual int connect(unsigned short port);
-
- virtual int commitBuffer(size_t size);
- virtual const unsigned char *readFully(void *buf, size_t len);
- virtual const unsigned char *read(void *buf, size_t *inout_len);
-
-private:
- Win32PipeStream(HANDLE pipe, size_t bufSize);
- HANDLE m_pipe;
- int m_port;
-};
-
-
-#endif
diff --git a/opengl/shared/OpenglCodecCommon/glUtils.cpp b/opengl/shared/OpenglCodecCommon/glUtils.cpp
index 4b7fc89..a61f76f 100644
--- a/opengl/shared/OpenglCodecCommon/glUtils.cpp
+++ b/opengl/shared/OpenglCodecCommon/glUtils.cpp
@@ -31,6 +31,7 @@ size_t glSizeof(GLenum type)
case GL_HALF_FLOAT_OES:
retval = 2;
break;
+ case GL_UNSIGNED_INT:
case GL_INT:
case GL_FLOAT:
case GL_FIXED:
@@ -109,6 +110,7 @@ size_t glUtilsParamSize(GLenum param)
case GL_POINT_SIZE_MIN:
case GL_POINT_SIZE_MAX:
case GL_POINT_FADE_THRESHOLD_SIZE:
+ case GL_CULL_FACE:
case GL_CULL_FACE_MODE:
case GL_FRONT_FACE:
case GL_SHADE_MODEL:
@@ -126,6 +128,7 @@ size_t glUtilsParamSize(GLenum param)
case GL_ALPHA_TEST_FUNC:
case GL_ALPHA_TEST_REF:
case GL_ALPHA_TEST:
+ case GL_DITHER:
case GL_BLEND_DST:
case GL_BLEND_SRC:
case GL_BLEND:
@@ -187,6 +190,7 @@ size_t glUtilsParamSize(GLenum param)
case GL_SAMPLE_COVERAGE_INVERT:
case GL_SAMPLE_COVERAGE_VALUE:
case GL_SAMPLES:
+ case GL_MAX_SAMPLES_EXT:
case GL_STENCIL_BITS:
case GL_STENCIL_CLEAR_VALUE:
case GL_STENCIL_FUNC:
diff --git a/opengl/shared/OpenglCodecCommon/gl_base_types.h b/opengl/shared/OpenglCodecCommon/gl_base_types.h
index d7bdef8..d7ecf95 100644
--- a/opengl/shared/OpenglCodecCommon/gl_base_types.h
+++ b/opengl/shared/OpenglCodecCommon/gl_base_types.h
@@ -57,6 +57,7 @@ typedef void * GLeglImageOES;
#define GL_STACK_OVERFLOW 0x0503
#define GL_STACK_UNDERFLOW 0x0504
#define GL_OUT_OF_MEMORY 0x0505
+#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
#endif
#endif
diff --git a/opengl/system/GLESv1/gl.cpp b/opengl/system/GLESv1/gl.cpp
index a7950eb..8aaf347 100644
--- a/opengl/system/GLESv1/gl.cpp
+++ b/opengl/system/GLESv1/gl.cpp
@@ -22,6 +22,7 @@
#include "ErrorLog.h"
#include "gralloc_cb.h"
#include "ThreadInfo.h"
+#include "EGLImage.h"
//XXX: fix this macro to get the context from fast tls path
@@ -48,31 +49,41 @@ static EGLClient_glesInterface * s_gl = NULL;
}
//GL extensions
-void glEGLImageTargetTexture2DOES(void * self, GLenum target, GLeglImageOES image)
+void glEGLImageTargetTexture2DOES(void * self, GLenum target, GLeglImageOES img)
{
(void)self;
- DBG("glEGLImageTargetTexture2DOES v1 target=%#x image=%p", target, image);
- //TODO: check error - we don't have a way to set gl error
- android_native_buffer_t* native_buffer = (android_native_buffer_t*)image;
+ DBG("glEGLImageTargetTexture2DOES v1 target=%#x img=%p", target, img);
- if (native_buffer->common.magic != ANDROID_NATIVE_BUFFER_MAGIC) {
- return;
- }
+ EGLImage_t *image = (EGLImage_t*)img;
- if (native_buffer->common.version != sizeof(android_native_buffer_t)) {
- return;
- }
+ if (image->target == EGL_NATIVE_BUFFER_ANDROID) {
+ //TODO: check error - we don't have a way to set gl error
+ android_native_buffer_t* native_buffer = image->native_buffer;
- GET_CONTEXT;
- DEFINE_AND_VALIDATE_HOST_CONNECTION();
+ if (native_buffer->common.magic != ANDROID_NATIVE_BUFFER_MAGIC) {
+ return;
+ }
- ctx->override2DTextureTarget(target);
- rcEnc->rcBindTexture(rcEnc,
- ((cb_handle_t *)(native_buffer->handle))->hostHandle);
- ctx->restore2DTextureTarget();
+ if (native_buffer->common.version != sizeof(android_native_buffer_t)) {
+ return;
+ }
- return;
+ GET_CONTEXT;
+ DEFINE_AND_VALIDATE_HOST_CONNECTION();
+
+ ctx->override2DTextureTarget(target);
+ rcEnc->rcBindTexture(rcEnc,
+ ((cb_handle_t *)(native_buffer->handle))->hostHandle);
+ ctx->restore2DTextureTarget();
+ }
+ else if (image->target == EGL_GL_TEXTURE_2D_KHR) {
+ GET_CONTEXT;
+ ctx->override2DTextureTarget(target);
+ GLeglImageOES hostImage = reinterpret_cast<GLeglImageOES>((intptr_t)image->host_egl_image);
+ ctx->m_glEGLImageTargetTexture2DOES_enc(self, target, hostImage);
+ ctx->restore2DTextureTarget();
+ }
}
void glEGLImageTargetRenderbufferStorageOES(void *self, GLenum target, GLeglImageOES image)
@@ -129,6 +140,7 @@ const GLubyte *my_glGetString (void *self, GLenum name)
void init()
{
GET_CONTEXT;
+ ctx->m_glEGLImageTargetTexture2DOES_enc = ctx->glEGLImageTargetTexture2DOES;
ctx->glEGLImageTargetTexture2DOES = &glEGLImageTargetTexture2DOES;
ctx->glEGLImageTargetRenderbufferStorageOES = &glEGLImageTargetRenderbufferStorageOES;
ctx->glGetString = &my_glGetString;
diff --git a/opengl/system/GLESv1_enc/GLEncoder.cpp b/opengl/system/GLESv1_enc/GLEncoder.cpp
index d6f45a8..8556c27 100644
--- a/opengl/system/GLESv1_enc/GLEncoder.cpp
+++ b/opengl/system/GLESv1_enc/GLEncoder.cpp
@@ -26,7 +26,7 @@
static GLubyte *gVendorString= (GLubyte *) "Android";
static GLubyte *gRendererString= (GLubyte *) "Android HW-GLES 1.0";
static GLubyte *gVersionString= (GLubyte *) "OpenGL ES-CM 1.0";
-static GLubyte *gExtensionsString= (GLubyte *) ""; // no extensions at this point;
+static GLubyte *gExtensionsString= (GLubyte *) "GL_OES_EGL_image_external ";
#define SET_ERROR_IF(condition,err) if((condition)) { \
ALOGE("%s:%s:%d GL error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \
@@ -421,6 +421,7 @@ void GLEncoder::sendVertexData(unsigned int first, unsigned int count)
if (stride == 0) stride = state->elementSize;
int firstIndex = stride * first;
+ this->m_glBindBuffer_enc(this, GL_ARRAY_BUFFER, state->bufferObject);
if (state->bufferObject == 0) {
switch(i) {
@@ -461,7 +462,6 @@ void GLEncoder::sendVertexData(unsigned int first, unsigned int count)
break;
}
} else {
- this->m_glBindBuffer_enc(this, GL_ARRAY_BUFFER, state->bufferObject);
switch(i) {
case GLClientState::VERTEX_LOCATION:
@@ -500,8 +500,8 @@ void GLEncoder::sendVertexData(unsigned int first, unsigned int count)
(uintptr_t)state->data+firstIndex);
break;
}
- this->m_glBindBuffer_enc(this, GL_ARRAY_BUFFER, m_state->currentArrayVbo());
}
+ this->m_glBindBuffer_enc(this, GL_ARRAY_BUFFER, m_state->currentArrayVbo());
} else {
this->m_glDisableClientState_enc(this, state->glConst);
}
@@ -512,6 +512,24 @@ void GLEncoder::s_glDrawArrays(void *self, GLenum mode, GLint first, GLsizei cou
{
GLEncoder *ctx = (GLEncoder *)self;
+ bool has_arrays = false;
+ for (int i = 0; i < GLClientState::LAST_LOCATION; i++) {
+ const GLClientState::VertexAttribState *state = ctx->m_state->getState(i);
+ if (state->enabled) {
+ if (state->bufferObject || state->data) {
+ has_arrays = true;
+ } else {
+ ALOGE("glDrawArrays: a vertex attribute array is enabled with no data bound\n");
+ ctx->setError(GL_INVALID_OPERATION);
+ return;
+ }
+ }
+ }
+ if (!has_arrays) {
+ ALOGE("glDrawArrays: no data bound to the command - ignoring\n");
+ return;
+ }
+
ctx->sendVertexData(first, count);
ctx->m_glDrawArrays_enc(ctx, mode, /*first*/ 0, count);
}
@@ -531,8 +549,12 @@ void GLEncoder::s_glDrawElements(void *self, GLenum mode, GLsizei count, GLenum
if (state->enabled) {
if (state->bufferObject != 0) {
has_indirect_arrays = true;
- } else {
+ } else if (state->data) {
has_immediate_arrays = true;
+ } else {
+ ALOGE("glDrawElements: a vertex attribute array is enabled with no data bound\n");
+ ctx->setError(GL_INVALID_OPERATION);
+ return;
}
}
}
@@ -580,6 +602,16 @@ void GLEncoder::s_glDrawElements(void *self, GLenum mode, GLsizei count, GLenum
count, -minIndex);
}
break;
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ GLUtils::minmax<unsigned int>((unsigned int *)indices, count, &minIndex, &maxIndex);
+ if (minIndex != 0) {
+ adjustedIndices = ctx->m_fixedBuffer.alloc(glSizeof(type) * count);
+ GLUtils::shiftIndices<unsigned int>((unsigned int *)indices,
+ (unsigned int *)adjustedIndices,
+ count, -minIndex);
+ }
+ break;
default:
ALOGE("unsupported index buffer type %d\n", type);
}
@@ -918,7 +950,8 @@ void GLEncoder::restore2DTextureTarget()
m_state->getBoundTexture(priorityTarget));
}
-GLEncoder::GLEncoder(IOStream *stream) : gl_encoder_context_t(stream)
+GLEncoder::GLEncoder(IOStream *stream, ChecksumCalculator *protocol)
+ : gl_encoder_context_t(stream, protocol)
{
m_initialized = false;
m_state = NULL;
diff --git a/opengl/system/GLESv1_enc/GLEncoder.h b/opengl/system/GLESv1_enc/GLEncoder.h
index 3c794f2..f6d4b6a 100644
--- a/opengl/system/GLESv1_enc/GLEncoder.h
+++ b/opengl/system/GLESv1_enc/GLEncoder.h
@@ -20,11 +20,12 @@
#include "GLClientState.h"
#include "GLSharedGroup.h"
#include "FixedBuffer.h"
+#include "ChecksumCalculator.h"
class GLEncoder : public gl_encoder_context_t {
public:
- GLEncoder(IOStream *stream);
+ GLEncoder(IOStream *stream, ChecksumCalculator* protocol);
virtual ~GLEncoder();
void setClientState(GLClientState *state) {
m_state = state;
@@ -145,5 +146,9 @@ private:
static void s_glTexParameterx(void* self, GLenum target, GLenum pname, GLfixed param);
static void s_glTexParameteriv(void* self, GLenum target, GLenum pname, const GLint* params);
static void s_glTexParameterxv(void* self, GLenum target, GLenum pname, const GLfixed* params);
+
+public:
+ glEGLImageTargetTexture2DOES_client_proc_t m_glEGLImageTargetTexture2DOES_enc;
+
};
#endif
diff --git a/opengl/system/GLESv1_enc/GLEncoderUtils.h b/opengl/system/GLESv1_enc/GLEncoderUtils.h
index 05cc9e1..88d989f 100644
--- a/opengl/system/GLESv1_enc/GLEncoderUtils.h
+++ b/opengl/system/GLESv1_enc/GLEncoderUtils.h
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#ifndef GL_ENCODER_UTILS_H
-#define GL_ENCLODER_UTILS_H
+#define GL_ENCODER_UTILS_H
namespace glesv1_enc {
size_t pixelDataSize(void *self, GLsizei width, GLsizei height, GLenum format, GLenum type, int pack);
diff --git a/opengl/system/GLESv1_enc/gl_client_context.h b/opengl/system/GLESv1_enc/gl_client_context.h
index 35fb27a..8074095 100644
--- a/opengl/system/GLESv1_enc/gl_client_context.h
+++ b/opengl/system/GLESv1_enc/gl_client_context.h
@@ -5,6 +5,8 @@
#include "gl_client_proc.h"
+#include "gl_types.h"
+
struct gl_client_context_t {
diff --git a/opengl/system/GLESv1_enc/gl_enc.cpp b/opengl/system/GLESv1_enc/gl_enc.cpp
index 61c0cee..6206cce 100644
--- a/opengl/system/GLESv1_enc/gl_enc.cpp
+++ b/opengl/system/GLESv1_enc/gl_enc.cpp
@@ -2,6 +2,7 @@
// generated by 'emugen'
+#include <memory>
#include <string.h>
#include "gl_opcodes.h"
@@ -22,15 +23,25 @@ void glAlphaFunc_enc(void *self , GLenum func, GLclampf ref)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glAlphaFunc;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &func, 4); ptr += 4;
memcpy(ptr, &ref, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
@@ -38,17 +49,27 @@ void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue,
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClearColor;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &red, 4); ptr += 4;
memcpy(ptr, &green, 4); ptr += 4;
memcpy(ptr, &blue, 4); ptr += 4;
memcpy(ptr, &alpha, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClearDepthf_enc(void *self , GLclampf depth)
@@ -56,14 +77,24 @@ void glClearDepthf_enc(void *self , GLclampf depth)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClearDepthf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &depth, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClipPlanef_enc(void *self , GLenum plane, const GLfloat* equation)
@@ -71,17 +102,27 @@ void glClipPlanef_enc(void *self , GLenum plane, const GLfloat* equation)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_equation = (4 * sizeof(float));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_equation + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_equation + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClipPlanef;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &plane, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_equation; ptr += 4;
memcpy(ptr, equation, __size_equation);ptr += __size_equation;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glColor4f_enc(void *self , GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
@@ -89,17 +130,27 @@ void glColor4f_enc(void *self , GLfloat red, GLfloat green, GLfloat blue, GLfloa
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glColor4f;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &red, 4); ptr += 4;
memcpy(ptr, &green, 4); ptr += 4;
memcpy(ptr, &blue, 4); ptr += 4;
memcpy(ptr, &alpha, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar)
@@ -107,15 +158,25 @@ void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDepthRangef;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFogf_enc(void *self , GLenum pname, GLfloat param)
@@ -123,15 +184,25 @@ void glFogf_enc(void *self , GLenum pname, GLfloat param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFogf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFogfv_enc(void *self , GLenum pname, const GLfloat* params)
@@ -139,17 +210,27 @@ void glFogfv_enc(void *self , GLenum pname, const GLfloat* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFogfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFrustumf_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
@@ -157,12 +238,18 @@ void glFrustumf_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GL
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFrustumf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &left, 4); ptr += 4;
memcpy(ptr, &right, 4); ptr += 4;
@@ -170,6 +257,10 @@ void glFrustumf_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GL
memcpy(ptr, &top, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGetClipPlanef_enc(void *self , GLenum pname, GLfloat* eqn)
@@ -177,17 +268,36 @@ void glGetClipPlanef_enc(void *self , GLenum pname, GLfloat* eqn)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_eqn = (4 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_eqn + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_eqn + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetClipPlanef;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(eqn, __size_eqn);
+ if (useChecksum) checksumCalculator->addBuffer(eqn, __size_eqn);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetClipPlanef: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params)
@@ -195,17 +305,36 @@ void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetFloatv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetFloatv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetLightfv_enc(void *self , GLenum light, GLenum pname, GLfloat* params)
@@ -213,18 +342,37 @@ void glGetLightfv_enc(void *self , GLenum light, GLenum pname, GLfloat* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetLightfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &light, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetLightfv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetMaterialfv_enc(void *self , GLenum face, GLenum pname, GLfloat* params)
@@ -232,18 +380,37 @@ void glGetMaterialfv_enc(void *self , GLenum face, GLenum pname, GLfloat* params
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetMaterialfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetMaterialfv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetTexEnvfv_enc(void *self , GLenum env, GLenum pname, GLfloat* params)
@@ -251,18 +418,37 @@ void glGetTexEnvfv_enc(void *self , GLenum env, GLenum pname, GLfloat* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexEnvfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &env, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetTexEnvfv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params)
@@ -270,18 +456,37 @@ void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat*
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetTexParameterfv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glLightModelf_enc(void *self , GLenum pname, GLfloat param)
@@ -289,15 +494,25 @@ void glLightModelf_enc(void *self , GLenum pname, GLfloat param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLightModelf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLightModelfv_enc(void *self , GLenum pname, const GLfloat* params)
@@ -305,17 +520,27 @@ void glLightModelfv_enc(void *self , GLenum pname, const GLfloat* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLightModelfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLightf_enc(void *self , GLenum light, GLenum pname, GLfloat param)
@@ -323,16 +548,26 @@ void glLightf_enc(void *self , GLenum light, GLenum pname, GLfloat param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glLightf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &light, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLightfv_enc(void *self , GLenum light, GLenum pname, const GLfloat* params)
@@ -340,18 +575,28 @@ void glLightfv_enc(void *self , GLenum light, GLenum pname, const GLfloat* param
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLightfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &light, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLineWidth_enc(void *self , GLfloat width)
@@ -359,14 +604,24 @@ void glLineWidth_enc(void *self , GLfloat width)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLineWidth;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLoadMatrixf_enc(void *self , const GLfloat* m)
@@ -374,16 +629,26 @@ void glLoadMatrixf_enc(void *self , const GLfloat* m)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_m = (16 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_m + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_m + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLoadMatrixf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_m; ptr += 4;
memcpy(ptr, m, __size_m);ptr += __size_m;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMaterialf_enc(void *self , GLenum face, GLenum pname, GLfloat param)
@@ -391,16 +656,26 @@ void glMaterialf_enc(void *self , GLenum face, GLenum pname, GLfloat param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glMaterialf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMaterialfv_enc(void *self , GLenum face, GLenum pname, const GLfloat* params)
@@ -408,18 +683,28 @@ void glMaterialfv_enc(void *self , GLenum face, GLenum pname, const GLfloat* par
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glMaterialfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMultMatrixf_enc(void *self , const GLfloat* m)
@@ -427,16 +712,26 @@ void glMultMatrixf_enc(void *self , const GLfloat* m)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_m = (16 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_m + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_m + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glMultMatrixf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_m; ptr += 4;
memcpy(ptr, m, __size_m);ptr += __size_m;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMultiTexCoord4f_enc(void *self , GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
@@ -444,18 +739,28 @@ void glMultiTexCoord4f_enc(void *self , GLenum target, GLfloat s, GLfloat t, GLf
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glMultiTexCoord4f;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &s, 4); ptr += 4;
memcpy(ptr, &t, 4); ptr += 4;
memcpy(ptr, &r, 4); ptr += 4;
memcpy(ptr, &q, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glNormal3f_enc(void *self , GLfloat nx, GLfloat ny, GLfloat nz)
@@ -463,16 +768,26 @@ void glNormal3f_enc(void *self , GLfloat nx, GLfloat ny, GLfloat nz)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glNormal3f;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &nx, 4); ptr += 4;
memcpy(ptr, &ny, 4); ptr += 4;
memcpy(ptr, &nz, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glOrthof_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
@@ -480,12 +795,18 @@ void glOrthof_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfl
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glOrthof;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &left, 4); ptr += 4;
memcpy(ptr, &right, 4); ptr += 4;
@@ -493,6 +814,10 @@ void glOrthof_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfl
memcpy(ptr, &top, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPointParameterf_enc(void *self , GLenum pname, GLfloat param)
@@ -500,15 +825,25 @@ void glPointParameterf_enc(void *self , GLenum pname, GLfloat param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPointParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPointParameterfv_enc(void *self , GLenum pname, const GLfloat* params)
@@ -516,17 +851,27 @@ void glPointParameterfv_enc(void *self , GLenum pname, const GLfloat* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPointParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPointSize_enc(void *self , GLfloat size)
@@ -534,14 +879,24 @@ void glPointSize_enc(void *self , GLfloat size)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPointSize;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units)
@@ -549,15 +904,25 @@ void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPolygonOffset;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &factor, 4); ptr += 4;
memcpy(ptr, &units, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glRotatef_enc(void *self , GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
@@ -565,17 +930,27 @@ void glRotatef_enc(void *self , GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glRotatef;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &angle, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glScalef_enc(void *self , GLfloat x, GLfloat y, GLfloat z)
@@ -583,16 +958,26 @@ void glScalef_enc(void *self , GLfloat x, GLfloat y, GLfloat z)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glScalef;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexEnvf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
@@ -600,16 +985,26 @@ void glTexEnvf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexEnvf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexEnvfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
@@ -617,18 +1012,28 @@ void glTexEnvfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* par
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexEnvfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
@@ -636,16 +1041,26 @@ void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
@@ -653,18 +1068,28 @@ void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloa
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTranslatef_enc(void *self , GLfloat x, GLfloat y, GLfloat z)
@@ -672,16 +1097,26 @@ void glTranslatef_enc(void *self , GLfloat x, GLfloat y, GLfloat z)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTranslatef;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glActiveTexture_enc(void *self , GLenum texture)
@@ -689,14 +1124,24 @@ void glActiveTexture_enc(void *self , GLenum texture)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &texture, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glAlphaFuncx_enc(void *self , GLenum func, GLclampx ref)
@@ -704,15 +1149,25 @@ void glAlphaFuncx_enc(void *self , GLenum func, GLclampx ref)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glAlphaFuncx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &func, 4); ptr += 4;
memcpy(ptr, &ref, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBindBuffer_enc(void *self , GLenum target, GLuint buffer)
@@ -720,15 +1175,25 @@ void glBindBuffer_enc(void *self , GLenum target, GLuint buffer)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBindBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &buffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBindTexture_enc(void *self , GLenum target, GLuint texture)
@@ -736,15 +1201,25 @@ void glBindTexture_enc(void *self , GLenum target, GLuint texture)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBindTexture;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &texture, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor)
@@ -752,15 +1227,25 @@ void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBlendFunc;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &sfactor, 4); ptr += 4;
memcpy(ptr, &dfactor, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
@@ -768,19 +1253,29 @@ void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid*
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
- const unsigned int __size_data = size;
+ const unsigned int __size_data = ((data != NULL) ? size : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_data + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBufferData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_data; ptr += 4;
- memcpy(ptr, data, __size_data);ptr += __size_data;
+ if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
memcpy(ptr, &usage, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
@@ -788,19 +1283,29 @@ void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
- const unsigned int __size_data = size;
+ const unsigned int __size_data = ((data != NULL) ? size : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &offset, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_data; ptr += 4;
- memcpy(ptr, data, __size_data);ptr += __size_data;
+ if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClear_enc(void *self , GLbitfield mask)
@@ -808,14 +1313,24 @@ void glClear_enc(void *self , GLbitfield mask)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClear;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mask, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClearColorx_enc(void *self , GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
@@ -823,17 +1338,27 @@ void glClearColorx_enc(void *self , GLclampx red, GLclampx green, GLclampx blue,
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClearColorx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &red, 4); ptr += 4;
memcpy(ptr, &green, 4); ptr += 4;
memcpy(ptr, &blue, 4); ptr += 4;
memcpy(ptr, &alpha, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClearDepthx_enc(void *self , GLclampx depth)
@@ -841,14 +1366,24 @@ void glClearDepthx_enc(void *self , GLclampx depth)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClearDepthx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &depth, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClearStencil_enc(void *self , GLint s)
@@ -856,14 +1391,24 @@ void glClearStencil_enc(void *self , GLint s)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClearStencil;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &s, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClientActiveTexture_enc(void *self , GLenum texture)
@@ -871,14 +1416,24 @@ void glClientActiveTexture_enc(void *self , GLenum texture)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClientActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &texture, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glColor4ub_enc(void *self , GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
@@ -886,17 +1441,27 @@ void glColor4ub_enc(void *self , GLubyte red, GLubyte green, GLubyte blue, GLuby
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 1 + 1 + 1 + 1;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 1 + 1 + 1 + 1;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glColor4ub;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &red, 1); ptr += 1;
memcpy(ptr, &green, 1); ptr += 1;
memcpy(ptr, &blue, 1); ptr += 1;
memcpy(ptr, &alpha, 1); ptr += 1;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glColor4x_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
@@ -904,17 +1469,27 @@ void glColor4x_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLfixe
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glColor4x;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &red, 4); ptr += 4;
memcpy(ptr, &green, 4); ptr += 4;
memcpy(ptr, &blue, 4); ptr += 4;
memcpy(ptr, &alpha, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
@@ -922,17 +1497,27 @@ void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 1 + 1 + 1 + 1;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 1 + 1 + 1 + 1;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glColorMask;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &red, 1); ptr += 1;
memcpy(ptr, &green, 1); ptr += 1;
memcpy(ptr, &blue, 1); ptr += 1;
memcpy(ptr, &alpha, 1); ptr += 1;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
@@ -940,13 +1525,19 @@ void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCompressedTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -957,6 +1548,10 @@ void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum
memcpy(ptr, &imageSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_data; ptr += 4;
if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
@@ -964,13 +1559,19 @@ void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLin
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
- const unsigned int __size_data = imageSize;
+ const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCompressedTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -981,7 +1582,11 @@ void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLin
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &imageSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_data; ptr += 4;
- memcpy(ptr, data, __size_data);ptr += __size_data;
+ if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
@@ -989,12 +1594,18 @@ void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum intern
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCopyTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -1004,6 +1615,10 @@ void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum intern
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
memcpy(ptr, &border, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
@@ -1011,12 +1626,18 @@ void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoff
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCopyTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -1026,6 +1647,10 @@ void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoff
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glCullFace_enc(void *self , GLenum mode)
@@ -1033,14 +1658,24 @@ void glCullFace_enc(void *self , GLenum mode)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCullFace;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers)
@@ -1048,17 +1683,27 @@ void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_buffers = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_buffers + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_buffers + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
memcpy(ptr, buffers, __size_buffers);ptr += __size_buffers;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures)
@@ -1066,17 +1711,27 @@ void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_textures = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_textures + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_textures + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteTextures;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_textures; ptr += 4;
memcpy(ptr, textures, __size_textures);ptr += __size_textures;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDepthFunc_enc(void *self , GLenum func)
@@ -1084,14 +1739,24 @@ void glDepthFunc_enc(void *self , GLenum func)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDepthFunc;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &func, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDepthMask_enc(void *self , GLboolean flag)
@@ -1099,14 +1764,24 @@ void glDepthMask_enc(void *self , GLboolean flag)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 1;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 1;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDepthMask;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &flag, 1); ptr += 1;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDepthRangex_enc(void *self , GLclampx zNear, GLclampx zFar)
@@ -1114,15 +1789,25 @@ void glDepthRangex_enc(void *self , GLclampx zNear, GLclampx zFar)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDepthRangex;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDisable_enc(void *self , GLenum cap)
@@ -1130,14 +1815,24 @@ void glDisable_enc(void *self , GLenum cap)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDisable;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &cap, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDisableClientState_enc(void *self , GLenum array)
@@ -1145,14 +1840,24 @@ void glDisableClientState_enc(void *self , GLenum array)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDisableClientState;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &array, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count)
@@ -1160,16 +1865,26 @@ void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glDrawArrays;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
memcpy(ptr, &first, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glEnable_enc(void *self , GLenum cap)
@@ -1177,14 +1892,24 @@ void glEnable_enc(void *self , GLenum cap)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glEnable;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &cap, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glEnableClientState_enc(void *self , GLenum array)
@@ -1192,14 +1917,24 @@ void glEnableClientState_enc(void *self , GLenum array)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glEnableClientState;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &array, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFinish_enc(void *self )
@@ -1207,12 +1942,22 @@ void glFinish_enc(void *self )
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFinish;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
}
@@ -1221,12 +1966,22 @@ void glFlush_enc(void *self )
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFlush;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
}
@@ -1235,15 +1990,25 @@ void glFogx_enc(void *self , GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFogx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFogxv_enc(void *self , GLenum pname, const GLfixed* params)
@@ -1251,17 +2016,27 @@ void glFogxv_enc(void *self , GLenum pname, const GLfixed* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFogxv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFrontFace_enc(void *self , GLenum mode)
@@ -1269,14 +2044,24 @@ void glFrontFace_enc(void *self , GLenum mode)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFrontFace;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFrustumx_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
@@ -1284,12 +2069,18 @@ void glFrustumx_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GL
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFrustumx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &left, 4); ptr += 4;
memcpy(ptr, &right, 4); ptr += 4;
@@ -1297,6 +2088,10 @@ void glFrustumx_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GL
memcpy(ptr, &top, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params)
@@ -1304,17 +2099,36 @@ void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLboolean));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetBooleanv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetBooleanv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
@@ -1322,18 +2136,37 @@ void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint*
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetBufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetBufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glClipPlanex_enc(void *self , GLenum pname, const GLfixed* eqn)
@@ -1341,17 +2174,27 @@ void glClipPlanex_enc(void *self , GLenum pname, const GLfixed* eqn)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_eqn = (4 * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_eqn + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_eqn + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClipPlanex;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
memcpy(ptr, eqn, __size_eqn);ptr += __size_eqn;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers)
@@ -1359,17 +2202,36 @@ void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_buffers = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_buffers + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_buffers + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(buffers, __size_buffers);
+ if (useChecksum) checksumCalculator->addBuffer(buffers, __size_buffers);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGenBuffers: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGenTextures_enc(void *self , GLsizei n, GLuint* textures)
@@ -1377,17 +2239,36 @@ void glGenTextures_enc(void *self , GLsizei n, GLuint* textures)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_textures = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_textures + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_textures + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenTextures;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_textures; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(textures, __size_textures);
+ if (useChecksum) checksumCalculator->addBuffer(textures, __size_textures);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGenTextures: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
GLenum glGetError_enc(void *self )
@@ -1395,16 +2276,35 @@ GLenum glGetError_enc(void *self )
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetError;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
GLenum retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetError: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1413,17 +2313,36 @@ void glGetFixedv_enc(void *self , GLenum pname, GLfixed* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetFixedv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetFixedv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetIntegerv_enc(void *self , GLenum pname, GLint* params)
@@ -1431,17 +2350,36 @@ void glGetIntegerv_enc(void *self , GLenum pname, GLint* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetIntegerv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetIntegerv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetLightxv_enc(void *self , GLenum light, GLenum pname, GLfixed* params)
@@ -1449,18 +2387,37 @@ void glGetLightxv_enc(void *self , GLenum light, GLenum pname, GLfixed* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetLightxv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &light, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetLightxv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetMaterialxv_enc(void *self , GLenum face, GLenum pname, GLfixed* params)
@@ -1468,18 +2425,37 @@ void glGetMaterialxv_enc(void *self , GLenum face, GLenum pname, GLfixed* params
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetMaterialxv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetMaterialxv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetTexEnviv_enc(void *self , GLenum env, GLenum pname, GLint* params)
@@ -1487,18 +2463,37 @@ void glGetTexEnviv_enc(void *self , GLenum env, GLenum pname, GLint* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexEnviv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &env, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetTexEnviv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetTexEnvxv_enc(void *self , GLenum env, GLenum pname, GLfixed* params)
@@ -1506,18 +2501,37 @@ void glGetTexEnvxv_enc(void *self , GLenum env, GLenum pname, GLfixed* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexEnvxv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &env, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetTexEnvxv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
@@ -1525,18 +2539,37 @@ void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* pa
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetTexParameteriv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetTexParameterxv_enc(void *self , GLenum target, GLenum pname, GLfixed* params)
@@ -1544,18 +2577,37 @@ void glGetTexParameterxv_enc(void *self , GLenum target, GLenum pname, GLfixed*
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexParameterxv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetTexParameterxv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glHint_enc(void *self , GLenum target, GLenum mode)
@@ -1563,15 +2615,25 @@ void glHint_enc(void *self , GLenum target, GLenum mode)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glHint;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
GLboolean glIsBuffer_enc(void *self , GLuint buffer)
@@ -1579,17 +2641,36 @@ GLboolean glIsBuffer_enc(void *self , GLuint buffer)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &buffer, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsBuffer: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1598,17 +2679,36 @@ GLboolean glIsEnabled_enc(void *self , GLenum cap)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsEnabled;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &cap, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsEnabled: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1617,17 +2717,36 @@ GLboolean glIsTexture_enc(void *self , GLuint texture)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsTexture;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &texture, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsTexture: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1636,15 +2755,25 @@ void glLightModelx_enc(void *self , GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLightModelx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLightModelxv_enc(void *self , GLenum pname, const GLfixed* params)
@@ -1652,17 +2781,27 @@ void glLightModelxv_enc(void *self , GLenum pname, const GLfixed* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLightModelxv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLightx_enc(void *self , GLenum light, GLenum pname, GLfixed param)
@@ -1670,16 +2809,26 @@ void glLightx_enc(void *self , GLenum light, GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glLightx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &light, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLightxv_enc(void *self , GLenum light, GLenum pname, const GLfixed* params)
@@ -1687,18 +2836,28 @@ void glLightxv_enc(void *self , GLenum light, GLenum pname, const GLfixed* param
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLightxv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &light, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLineWidthx_enc(void *self , GLfixed width)
@@ -1706,14 +2865,24 @@ void glLineWidthx_enc(void *self , GLfixed width)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLineWidthx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLoadIdentity_enc(void *self )
@@ -1721,12 +2890,22 @@ void glLoadIdentity_enc(void *self )
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLoadIdentity;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
}
@@ -1735,16 +2914,26 @@ void glLoadMatrixx_enc(void *self , const GLfixed* m)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_m = (16 * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_m + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_m + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLoadMatrixx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_m; ptr += 4;
memcpy(ptr, m, __size_m);ptr += __size_m;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLogicOp_enc(void *self , GLenum opcode)
@@ -1752,14 +2941,24 @@ void glLogicOp_enc(void *self , GLenum opcode)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLogicOp;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &opcode, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMaterialx_enc(void *self , GLenum face, GLenum pname, GLfixed param)
@@ -1767,16 +2966,26 @@ void glMaterialx_enc(void *self , GLenum face, GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glMaterialx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMaterialxv_enc(void *self , GLenum face, GLenum pname, const GLfixed* params)
@@ -1784,18 +2993,28 @@ void glMaterialxv_enc(void *self , GLenum face, GLenum pname, const GLfixed* par
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glMaterialxv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMatrixMode_enc(void *self , GLenum mode)
@@ -1803,14 +3022,24 @@ void glMatrixMode_enc(void *self , GLenum mode)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glMatrixMode;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMultMatrixx_enc(void *self , const GLfixed* m)
@@ -1818,16 +3047,26 @@ void glMultMatrixx_enc(void *self , const GLfixed* m)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_m = (16 * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_m + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_m + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glMultMatrixx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_m; ptr += 4;
memcpy(ptr, m, __size_m);ptr += __size_m;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMultiTexCoord4x_enc(void *self , GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
@@ -1835,18 +3074,28 @@ void glMultiTexCoord4x_enc(void *self , GLenum target, GLfixed s, GLfixed t, GLf
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glMultiTexCoord4x;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &s, 4); ptr += 4;
memcpy(ptr, &t, 4); ptr += 4;
memcpy(ptr, &r, 4); ptr += 4;
memcpy(ptr, &q, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glNormal3x_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz)
@@ -1854,16 +3103,26 @@ void glNormal3x_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glNormal3x;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &nx, 4); ptr += 4;
memcpy(ptr, &ny, 4); ptr += 4;
memcpy(ptr, &nz, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glOrthox_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
@@ -1871,12 +3130,18 @@ void glOrthox_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfi
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glOrthox;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &left, 4); ptr += 4;
memcpy(ptr, &right, 4); ptr += 4;
@@ -1884,6 +3149,10 @@ void glOrthox_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfi
memcpy(ptr, &top, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPixelStorei_enc(void *self , GLenum pname, GLint param)
@@ -1891,15 +3160,25 @@ void glPixelStorei_enc(void *self , GLenum pname, GLint param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPixelStorei;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPointParameterx_enc(void *self , GLenum pname, GLfixed param)
@@ -1907,15 +3186,25 @@ void glPointParameterx_enc(void *self , GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPointParameterx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPointParameterxv_enc(void *self , GLenum pname, const GLfixed* params)
@@ -1923,17 +3212,27 @@ void glPointParameterxv_enc(void *self , GLenum pname, const GLfixed* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPointParameterxv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPointSizex_enc(void *self , GLfixed size)
@@ -1941,14 +3240,24 @@ void glPointSizex_enc(void *self , GLfixed size)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPointSizex;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPolygonOffsetx_enc(void *self , GLfixed factor, GLfixed units)
@@ -1956,15 +3265,25 @@ void glPolygonOffsetx_enc(void *self , GLfixed factor, GLfixed units)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPolygonOffsetx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &factor, 4); ptr += 4;
memcpy(ptr, &units, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPopMatrix_enc(void *self )
@@ -1972,12 +3291,22 @@ void glPopMatrix_enc(void *self )
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPopMatrix;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
}
@@ -1986,12 +3315,22 @@ void glPushMatrix_enc(void *self )
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPushMatrix;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
}
@@ -2000,13 +3339,19 @@ void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei heig
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_pixels = glesv1_enc::pixelDataSize(self, width, height, format, type, 1);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glReadPixels;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
@@ -2015,7 +3360,20 @@ void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei heig
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_pixels; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glReadPixels: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glRotatex_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
@@ -2023,17 +3381,27 @@ void glRotatex_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glRotatex;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &angle, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert)
@@ -2041,15 +3409,25 @@ void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 1;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 1;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glSampleCoverage;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &value, 4); ptr += 4;
memcpy(ptr, &invert, 1); ptr += 1;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glSampleCoveragex_enc(void *self , GLclampx value, GLboolean invert)
@@ -2057,15 +3435,25 @@ void glSampleCoveragex_enc(void *self , GLclampx value, GLboolean invert)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 1;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 1;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glSampleCoveragex;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &value, 4); ptr += 4;
memcpy(ptr, &invert, 1); ptr += 1;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glScalex_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
@@ -2073,16 +3461,26 @@ void glScalex_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glScalex;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
@@ -2090,17 +3488,27 @@ void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glScissor;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glShadeModel_enc(void *self , GLenum mode)
@@ -2108,14 +3516,24 @@ void glShadeModel_enc(void *self , GLenum mode)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glShadeModel;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask)
@@ -2123,16 +3541,26 @@ void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glStencilFunc;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &func, 4); ptr += 4;
memcpy(ptr, &ref, 4); ptr += 4;
memcpy(ptr, &mask, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glStencilMask_enc(void *self , GLuint mask)
@@ -2140,14 +3568,24 @@ void glStencilMask_enc(void *self , GLuint mask)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glStencilMask;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mask, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass)
@@ -2155,16 +3593,26 @@ void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glStencilOp;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &fail, 4); ptr += 4;
memcpy(ptr, &zfail, 4); ptr += 4;
memcpy(ptr, &zpass, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexEnvi_enc(void *self , GLenum target, GLenum pname, GLint param)
@@ -2172,16 +3620,26 @@ void glTexEnvi_enc(void *self , GLenum target, GLenum pname, GLint param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexEnvi;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexEnvx_enc(void *self , GLenum target, GLenum pname, GLfixed param)
@@ -2189,16 +3647,26 @@ void glTexEnvx_enc(void *self , GLenum target, GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexEnvx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexEnviv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
@@ -2206,18 +3674,28 @@ void glTexEnviv_enc(void *self , GLenum target, GLenum pname, const GLint* param
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexEnviv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexEnvxv_enc(void *self , GLenum target, GLenum pname, const GLfixed* params)
@@ -2225,18 +3703,28 @@ void glTexEnvxv_enc(void *self , GLenum target, GLenum pname, const GLfixed* par
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexEnvxv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
@@ -2244,13 +3732,19 @@ void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalfor
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_pixels = ((pixels != NULL) ? glesv1_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
- ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ ptr = buf;
int tmp = OP_glTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -2260,9 +3754,18 @@ void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalfor
memcpy(ptr, &border, 4); ptr += 4;
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_pixels,4);
- if (pixels != NULL) stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
+ if (pixels != NULL) {
+ stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
+ }
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
}
void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
@@ -2270,16 +3773,26 @@ void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexParameterx_enc(void *self , GLenum target, GLenum pname, GLfixed param)
@@ -2287,16 +3800,26 @@ void glTexParameterx_enc(void *self , GLenum target, GLenum pname, GLfixed param
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexParameterx;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
@@ -2304,18 +3827,28 @@ void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint*
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexParameterxv_enc(void *self , GLenum target, GLenum pname, const GLfixed* params)
@@ -2323,18 +3856,28 @@ void glTexParameterxv_enc(void *self , GLenum target, GLenum pname, const GLfixe
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexParameterxv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
@@ -2342,13 +3885,19 @@ void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset,
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
- const unsigned int __size_pixels = glesv1_enc::pixelDataSize(self, width, height, format, type, 0);
+ const unsigned int __size_pixels = ((pixels != NULL) ? glesv1_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
- ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ ptr = buf;
int tmp = OP_glTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -2358,9 +3907,18 @@ void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset,
memcpy(ptr, &height, 4); ptr += 4;
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_pixels,4);
- stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
+ if (pixels != NULL) {
+ stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
+ }
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
}
void glTranslatex_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
@@ -2368,16 +3926,26 @@ void glTranslatex_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTranslatex;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
@@ -2385,17 +3953,27 @@ void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glViewport;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glVertexPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
@@ -2403,17 +3981,27 @@ void glVertexPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei str
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glVertexPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
memcpy(ptr, &stride, 4); ptr += 4;
memcpy(ptr, &offset, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glColorPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
@@ -2421,17 +4009,27 @@ void glColorPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stri
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glColorPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
memcpy(ptr, &stride, 4); ptr += 4;
memcpy(ptr, &offset, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glNormalPointerOffset_enc(void *self , GLenum type, GLsizei stride, GLuint offset)
@@ -2439,16 +4037,26 @@ void glNormalPointerOffset_enc(void *self , GLenum type, GLsizei stride, GLuint
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glNormalPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
memcpy(ptr, &stride, 4); ptr += 4;
memcpy(ptr, &offset, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPointSizePointerOffset_enc(void *self , GLenum type, GLsizei stride, GLuint offset)
@@ -2456,16 +4064,26 @@ void glPointSizePointerOffset_enc(void *self , GLenum type, GLsizei stride, GLui
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glPointSizePointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
memcpy(ptr, &stride, 4); ptr += 4;
memcpy(ptr, &offset, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexCoordPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
@@ -2473,17 +4091,27 @@ void glTexCoordPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei s
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexCoordPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
memcpy(ptr, &stride, 4); ptr += 4;
memcpy(ptr, &offset, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glWeightPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
@@ -2491,17 +4119,27 @@ void glWeightPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei str
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glWeightPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
memcpy(ptr, &stride, 4); ptr += 4;
memcpy(ptr, &offset, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMatrixIndexPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
@@ -2509,17 +4147,27 @@ void glMatrixIndexPointerOffset_enc(void *self , GLint size, GLenum type, GLsize
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glMatrixIndexPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
memcpy(ptr, &stride, 4); ptr += 4;
memcpy(ptr, &offset, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glVertexPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
@@ -2527,13 +4175,19 @@ void glVertexPointerData_enc(void *self , GLint size, GLenum type, GLsizei strid
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = datalen;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glVertexPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
@@ -2541,6 +4195,10 @@ void glVertexPointerData_enc(void *self , GLint size, GLenum type, GLsizei strid
*(unsigned int *)(ptr) = __size_data; ptr += 4;
glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
memcpy(ptr, &datalen, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glColorPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
@@ -2548,13 +4206,19 @@ void glColorPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = datalen;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glColorPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
@@ -2562,6 +4226,10 @@ void glColorPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride
*(unsigned int *)(ptr) = __size_data; ptr += 4;
glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
memcpy(ptr, &datalen, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glNormalPointerData_enc(void *self , GLenum type, GLsizei stride, void* data, GLuint datalen)
@@ -2569,19 +4237,29 @@ void glNormalPointerData_enc(void *self , GLenum type, GLsizei stride, void* dat
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = datalen;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_data + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glNormalPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
memcpy(ptr, &stride, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_data; ptr += 4;
glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, 3, type, stride, datalen);ptr += __size_data;
memcpy(ptr, &datalen, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexCoordPointerData_enc(void *self , GLint unit, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
@@ -2589,13 +4267,19 @@ void glTexCoordPointerData_enc(void *self , GLint unit, GLint size, GLenum type,
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = datalen;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + __size_data + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexCoordPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &unit, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
@@ -2604,6 +4288,10 @@ void glTexCoordPointerData_enc(void *self , GLint unit, GLint size, GLenum type,
*(unsigned int *)(ptr) = __size_data; ptr += 4;
glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
memcpy(ptr, &datalen, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPointSizePointerData_enc(void *self , GLenum type, GLsizei stride, void* data, GLuint datalen)
@@ -2611,19 +4299,29 @@ void glPointSizePointerData_enc(void *self , GLenum type, GLsizei stride, void*
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = datalen;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_data + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPointSizePointerData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
memcpy(ptr, &stride, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_data; ptr += 4;
glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, 1, type, stride, datalen);ptr += __size_data;
memcpy(ptr, &datalen, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glWeightPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
@@ -2631,13 +4329,19 @@ void glWeightPointerData_enc(void *self , GLint size, GLenum type, GLsizei strid
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = datalen;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glWeightPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
@@ -2645,6 +4349,10 @@ void glWeightPointerData_enc(void *self , GLint size, GLenum type, GLsizei strid
*(unsigned int *)(ptr) = __size_data; ptr += 4;
glUtilsPackPointerData((unsigned char *)ptr, (unsigned char*)data, size, type, stride, datalen);ptr += __size_data;
memcpy(ptr, &datalen, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMatrixIndexPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
@@ -2652,13 +4360,19 @@ void glMatrixIndexPointerData_enc(void *self , GLint size, GLenum type, GLsizei
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = datalen;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glMatrixIndexPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
@@ -2666,6 +4380,10 @@ void glMatrixIndexPointerData_enc(void *self , GLint size, GLenum type, GLsizei
*(unsigned int *)(ptr) = __size_data; ptr += 4;
glUtilsPackPointerData((unsigned char *)ptr, (unsigned char*)data, size, type, stride, datalen);ptr += __size_data;
memcpy(ptr, &datalen, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
@@ -2673,17 +4391,27 @@ void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum ty
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDrawElementsOffset;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
memcpy(ptr, &offset, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
@@ -2691,13 +4419,19 @@ void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = datalen;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDrawElementsData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
@@ -2705,6 +4439,10 @@ void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type
*(unsigned int *)(ptr) = __size_data; ptr += 4;
memcpy(ptr, data, __size_data);ptr += __size_data;
memcpy(ptr, &datalen, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats)
@@ -2712,17 +4450,36 @@ void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_formats = (count * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_formats + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_formats + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetCompressedTextureFormats;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_formats; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(formats, __size_formats);
+ if (useChecksum) checksumCalculator->addBuffer(formats, __size_formats);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetCompressedTextureFormats: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
int glFinishRoundTrip_enc(void *self )
@@ -2730,16 +4487,35 @@ int glFinishRoundTrip_enc(void *self )
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFinishRoundTrip;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ 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) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glFinishRoundTrip: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -2748,15 +4524,25 @@ void glBlendEquationSeparateOES_enc(void *self , GLenum modeRGB, GLenum modeAlph
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBlendEquationSeparateOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &modeRGB, 4); ptr += 4;
memcpy(ptr, &modeAlpha, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBlendFuncSeparateOES_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
@@ -2764,17 +4550,27 @@ void glBlendFuncSeparateOES_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenu
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBlendFuncSeparateOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &srcRGB, 4); ptr += 4;
memcpy(ptr, &dstRGB, 4); ptr += 4;
memcpy(ptr, &srcAlpha, 4); ptr += 4;
memcpy(ptr, &dstAlpha, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBlendEquationOES_enc(void *self , GLenum mode)
@@ -2782,14 +4578,24 @@ void glBlendEquationOES_enc(void *self , GLenum mode)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBlendEquationOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawTexsOES_enc(void *self , GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
@@ -2797,18 +4603,28 @@ void glDrawTexsOES_enc(void *self , GLshort x, GLshort y, GLshort z, GLshort wid
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 2 + 2 + 2 + 2 + 2;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 2 + 2 + 2 + 2 + 2;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDrawTexsOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 2); ptr += 2;
memcpy(ptr, &y, 2); ptr += 2;
memcpy(ptr, &z, 2); ptr += 2;
memcpy(ptr, &width, 2); ptr += 2;
memcpy(ptr, &height, 2); ptr += 2;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawTexiOES_enc(void *self , GLint x, GLint y, GLint z, GLint width, GLint height)
@@ -2816,18 +4632,28 @@ void glDrawTexiOES_enc(void *self , GLint x, GLint y, GLint z, GLint width, GLin
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDrawTexiOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawTexxOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
@@ -2835,18 +4661,28 @@ void glDrawTexxOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z, GLfixed wid
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDrawTexxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawTexsvOES_enc(void *self , const GLshort* coords)
@@ -2854,16 +4690,26 @@ void glDrawTexsvOES_enc(void *self , const GLshort* coords)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_coords = (5 * sizeof(GLshort));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_coords + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_coords + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDrawTexsvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_coords; ptr += 4;
memcpy(ptr, coords, __size_coords);ptr += __size_coords;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawTexivOES_enc(void *self , const GLint* coords)
@@ -2871,16 +4717,26 @@ void glDrawTexivOES_enc(void *self , const GLint* coords)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_coords = (5 * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_coords + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_coords + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDrawTexivOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_coords; ptr += 4;
memcpy(ptr, coords, __size_coords);ptr += __size_coords;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawTexxvOES_enc(void *self , const GLfixed* coords)
@@ -2888,16 +4744,26 @@ void glDrawTexxvOES_enc(void *self , const GLfixed* coords)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_coords = (5 * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_coords + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_coords + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDrawTexxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_coords; ptr += 4;
memcpy(ptr, coords, __size_coords);ptr += __size_coords;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawTexfOES_enc(void *self , GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
@@ -2905,18 +4771,28 @@ void glDrawTexfOES_enc(void *self , GLfloat x, GLfloat y, GLfloat z, GLfloat wid
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDrawTexfOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawTexfvOES_enc(void *self , const GLfloat* coords)
@@ -2924,16 +4800,26 @@ void glDrawTexfvOES_enc(void *self , const GLfloat* coords)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_coords = (5 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_coords + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_coords + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDrawTexfvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_coords; ptr += 4;
memcpy(ptr, coords, __size_coords);ptr += __size_coords;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image)
@@ -2941,15 +4827,25 @@ void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glEGLImageTargetTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &image, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image)
@@ -2957,15 +4853,25 @@ void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeg
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glEGLImageTargetRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &image, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glAlphaFuncxOES_enc(void *self , GLenum func, GLclampx ref)
@@ -2973,15 +4879,25 @@ void glAlphaFuncxOES_enc(void *self , GLenum func, GLclampx ref)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glAlphaFuncxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &func, 4); ptr += 4;
memcpy(ptr, &ref, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClearColorxOES_enc(void *self , GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
@@ -2989,17 +4905,27 @@ void glClearColorxOES_enc(void *self , GLclampx red, GLclampx green, GLclampx bl
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClearColorxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &red, 4); ptr += 4;
memcpy(ptr, &green, 4); ptr += 4;
memcpy(ptr, &blue, 4); ptr += 4;
memcpy(ptr, &alpha, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClearDepthxOES_enc(void *self , GLclampx depth)
@@ -3007,14 +4933,24 @@ void glClearDepthxOES_enc(void *self , GLclampx depth)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClearDepthxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &depth, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClipPlanexOES_enc(void *self , GLenum plane, const GLfixed* equation)
@@ -3022,17 +4958,27 @@ void glClipPlanexOES_enc(void *self , GLenum plane, const GLfixed* equation)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_equation = (4 * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_equation + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_equation + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClipPlanexOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &plane, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_equation; ptr += 4;
memcpy(ptr, equation, __size_equation);ptr += __size_equation;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClipPlanexIMG_enc(void *self , GLenum plane, const GLfixed* equation)
@@ -3040,17 +4986,27 @@ void glClipPlanexIMG_enc(void *self , GLenum plane, const GLfixed* equation)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_equation = (4 * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_equation + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_equation + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClipPlanexIMG;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &plane, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_equation; ptr += 4;
memcpy(ptr, equation, __size_equation);ptr += __size_equation;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glColor4xOES_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
@@ -3058,17 +5014,27 @@ void glColor4xOES_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLf
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glColor4xOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &red, 4); ptr += 4;
memcpy(ptr, &green, 4); ptr += 4;
memcpy(ptr, &blue, 4); ptr += 4;
memcpy(ptr, &alpha, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDepthRangexOES_enc(void *self , GLclampx zNear, GLclampx zFar)
@@ -3076,15 +5042,25 @@ void glDepthRangexOES_enc(void *self , GLclampx zNear, GLclampx zFar)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDepthRangexOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFogxOES_enc(void *self , GLenum pname, GLfixed param)
@@ -3092,15 +5068,25 @@ void glFogxOES_enc(void *self , GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFogxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFogxvOES_enc(void *self , GLenum pname, const GLfixed* params)
@@ -3108,17 +5094,27 @@ void glFogxvOES_enc(void *self , GLenum pname, const GLfixed* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFogxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFrustumxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
@@ -3126,12 +5122,18 @@ void glFrustumxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom,
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFrustumxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &left, 4); ptr += 4;
memcpy(ptr, &right, 4); ptr += 4;
@@ -3139,6 +5141,10 @@ void glFrustumxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom,
memcpy(ptr, &top, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGetClipPlanexOES_enc(void *self , GLenum pname, GLfixed* eqn)
@@ -3146,17 +5152,36 @@ void glGetClipPlanexOES_enc(void *self , GLenum pname, GLfixed* eqn)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_eqn = (4 * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_eqn + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_eqn + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetClipPlanexOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(eqn, __size_eqn);
+ if (useChecksum) checksumCalculator->addBuffer(eqn, __size_eqn);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetClipPlanexOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetClipPlanex_enc(void *self , GLenum pname, GLfixed* eqn)
@@ -3164,17 +5189,36 @@ void glGetClipPlanex_enc(void *self , GLenum pname, GLfixed* eqn)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_eqn = (4 * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_eqn + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_eqn + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetClipPlanex;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(eqn, __size_eqn);
+ if (useChecksum) checksumCalculator->addBuffer(eqn, __size_eqn);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetClipPlanex: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetFixedvOES_enc(void *self , GLenum pname, GLfixed* params)
@@ -3182,17 +5226,36 @@ void glGetFixedvOES_enc(void *self , GLenum pname, GLfixed* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetFixedvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetFixedvOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetLightxvOES_enc(void *self , GLenum light, GLenum pname, GLfixed* params)
@@ -3200,18 +5263,37 @@ void glGetLightxvOES_enc(void *self , GLenum light, GLenum pname, GLfixed* param
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetLightxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &light, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetLightxvOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetMaterialxvOES_enc(void *self , GLenum face, GLenum pname, GLfixed* params)
@@ -3219,18 +5301,37 @@ void glGetMaterialxvOES_enc(void *self , GLenum face, GLenum pname, GLfixed* par
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetMaterialxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetMaterialxvOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetTexEnvxvOES_enc(void *self , GLenum env, GLenum pname, GLfixed* params)
@@ -3238,18 +5339,37 @@ void glGetTexEnvxvOES_enc(void *self , GLenum env, GLenum pname, GLfixed* params
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexEnvxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &env, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetTexEnvxvOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, GLfixed* params)
@@ -3257,18 +5377,37 @@ void glGetTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, GLfixe
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexParameterxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetTexParameterxvOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glLightModelxOES_enc(void *self , GLenum pname, GLfixed param)
@@ -3276,15 +5415,25 @@ void glLightModelxOES_enc(void *self , GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLightModelxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLightModelxvOES_enc(void *self , GLenum pname, const GLfixed* params)
@@ -3292,17 +5441,27 @@ void glLightModelxvOES_enc(void *self , GLenum pname, const GLfixed* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLightModelxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLightxOES_enc(void *self , GLenum light, GLenum pname, GLfixed param)
@@ -3310,16 +5469,26 @@ void glLightxOES_enc(void *self , GLenum light, GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glLightxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &light, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLightxvOES_enc(void *self , GLenum light, GLenum pname, const GLfixed* params)
@@ -3327,18 +5496,28 @@ void glLightxvOES_enc(void *self , GLenum light, GLenum pname, const GLfixed* pa
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLightxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &light, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLineWidthxOES_enc(void *self , GLfixed width)
@@ -3346,14 +5525,24 @@ void glLineWidthxOES_enc(void *self , GLfixed width)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLineWidthxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLoadMatrixxOES_enc(void *self , const GLfixed* m)
@@ -3361,16 +5550,26 @@ void glLoadMatrixxOES_enc(void *self , const GLfixed* m)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_m = (16 * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_m + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_m + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLoadMatrixxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_m; ptr += 4;
memcpy(ptr, m, __size_m);ptr += __size_m;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMaterialxOES_enc(void *self , GLenum face, GLenum pname, GLfixed param)
@@ -3378,16 +5577,26 @@ void glMaterialxOES_enc(void *self , GLenum face, GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glMaterialxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMaterialxvOES_enc(void *self , GLenum face, GLenum pname, const GLfixed* params)
@@ -3395,18 +5604,28 @@ void glMaterialxvOES_enc(void *self , GLenum face, GLenum pname, const GLfixed*
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glMaterialxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMultMatrixxOES_enc(void *self , const GLfixed* m)
@@ -3414,16 +5633,26 @@ void glMultMatrixxOES_enc(void *self , const GLfixed* m)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_m = (16 * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_m + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_m + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glMultMatrixxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_m; ptr += 4;
memcpy(ptr, m, __size_m);ptr += __size_m;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glMultiTexCoord4xOES_enc(void *self , GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
@@ -3431,18 +5660,28 @@ void glMultiTexCoord4xOES_enc(void *self , GLenum target, GLfixed s, GLfixed t,
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glMultiTexCoord4xOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &s, 4); ptr += 4;
memcpy(ptr, &t, 4); ptr += 4;
memcpy(ptr, &r, 4); ptr += 4;
memcpy(ptr, &q, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glNormal3xOES_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz)
@@ -3450,16 +5689,26 @@ void glNormal3xOES_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glNormal3xOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &nx, 4); ptr += 4;
memcpy(ptr, &ny, 4); ptr += 4;
memcpy(ptr, &nz, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glOrthoxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
@@ -3467,12 +5716,18 @@ void glOrthoxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, G
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glOrthoxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &left, 4); ptr += 4;
memcpy(ptr, &right, 4); ptr += 4;
@@ -3480,6 +5735,10 @@ void glOrthoxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, G
memcpy(ptr, &top, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPointParameterxOES_enc(void *self , GLenum pname, GLfixed param)
@@ -3487,15 +5746,25 @@ void glPointParameterxOES_enc(void *self , GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPointParameterxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPointParameterxvOES_enc(void *self , GLenum pname, const GLfixed* params)
@@ -3503,17 +5772,27 @@ void glPointParameterxvOES_enc(void *self , GLenum pname, const GLfixed* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPointParameterxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPointSizexOES_enc(void *self , GLfixed size)
@@ -3521,14 +5800,24 @@ void glPointSizexOES_enc(void *self , GLfixed size)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPointSizexOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPolygonOffsetxOES_enc(void *self , GLfixed factor, GLfixed units)
@@ -3536,15 +5825,25 @@ void glPolygonOffsetxOES_enc(void *self , GLfixed factor, GLfixed units)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPolygonOffsetxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &factor, 4); ptr += 4;
memcpy(ptr, &units, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glRotatexOES_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
@@ -3552,17 +5851,27 @@ void glRotatexOES_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glRotatexOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &angle, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glSampleCoveragexOES_enc(void *self , GLclampx value, GLboolean invert)
@@ -3570,15 +5879,25 @@ void glSampleCoveragexOES_enc(void *self , GLclampx value, GLboolean invert)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 1;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 1;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glSampleCoveragexOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &value, 4); ptr += 4;
memcpy(ptr, &invert, 1); ptr += 1;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glScalexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
@@ -3586,16 +5905,26 @@ void glScalexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glScalexOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexEnvxOES_enc(void *self , GLenum target, GLenum pname, GLfixed param)
@@ -3603,16 +5932,26 @@ void glTexEnvxOES_enc(void *self , GLenum target, GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexEnvxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexEnvxvOES_enc(void *self , GLenum target, GLenum pname, const GLfixed* params)
@@ -3620,18 +5959,28 @@ void glTexEnvxvOES_enc(void *self , GLenum target, GLenum pname, const GLfixed*
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexEnvxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexParameterxOES_enc(void *self , GLenum target, GLenum pname, GLfixed param)
@@ -3639,16 +5988,26 @@ void glTexParameterxOES_enc(void *self , GLenum target, GLenum pname, GLfixed pa
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexParameterxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, const GLfixed* params)
@@ -3656,18 +6015,28 @@ void glTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, const GLf
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexParameterxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTranslatexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
@@ -3675,16 +6044,26 @@ void glTranslatexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTranslatexOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
GLboolean glIsRenderbufferOES_enc(void *self , GLuint renderbuffer)
@@ -3692,17 +6071,36 @@ GLboolean glIsRenderbufferOES_enc(void *self , GLuint renderbuffer)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsRenderbufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &renderbuffer, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsRenderbufferOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -3711,15 +6109,25 @@ void glBindRenderbufferOES_enc(void *self , GLenum target, GLuint renderbuffer)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBindRenderbufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &renderbuffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteRenderbuffersOES_enc(void *self , GLsizei n, const GLuint* renderbuffers)
@@ -3727,17 +6135,27 @@ void glDeleteRenderbuffersOES_enc(void *self , GLsizei n, const GLuint* renderbu
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_renderbuffers = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_renderbuffers + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_renderbuffers + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteRenderbuffersOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
memcpy(ptr, renderbuffers, __size_renderbuffers);ptr += __size_renderbuffers;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGenRenderbuffersOES_enc(void *self , GLsizei n, GLuint* renderbuffers)
@@ -3745,17 +6163,36 @@ void glGenRenderbuffersOES_enc(void *self , GLsizei n, GLuint* renderbuffers)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_renderbuffers = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_renderbuffers + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_renderbuffers + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenRenderbuffersOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(renderbuffers, __size_renderbuffers);
+ if (useChecksum) checksumCalculator->addBuffer(renderbuffers, __size_renderbuffers);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGenRenderbuffersOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glRenderbufferStorageOES_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
@@ -3763,17 +6200,27 @@ void glRenderbufferStorageOES_enc(void *self , GLenum target, GLenum internalfor
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &internalformat, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGetRenderbufferParameterivOES_enc(void *self , GLenum target, GLenum pname, GLint* params)
@@ -3781,18 +6228,37 @@ void glGetRenderbufferParameterivOES_enc(void *self , GLenum target, GLenum pnam
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetRenderbufferParameterivOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetRenderbufferParameterivOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
GLboolean glIsFramebufferOES_enc(void *self , GLuint framebuffer)
@@ -3800,17 +6266,36 @@ GLboolean glIsFramebufferOES_enc(void *self , GLuint framebuffer)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsFramebufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &framebuffer, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsFramebufferOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -3819,15 +6304,25 @@ void glBindFramebufferOES_enc(void *self , GLenum target, GLuint framebuffer)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBindFramebufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &framebuffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteFramebuffersOES_enc(void *self , GLsizei n, const GLuint* framebuffers)
@@ -3835,17 +6330,27 @@ void glDeleteFramebuffersOES_enc(void *self , GLsizei n, const GLuint* framebuff
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_framebuffers = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_framebuffers + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_framebuffers + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteFramebuffersOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
memcpy(ptr, framebuffers, __size_framebuffers);ptr += __size_framebuffers;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGenFramebuffersOES_enc(void *self , GLsizei n, GLuint* framebuffers)
@@ -3853,17 +6358,36 @@ void glGenFramebuffersOES_enc(void *self , GLsizei n, GLuint* framebuffers)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_framebuffers = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_framebuffers + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_framebuffers + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenFramebuffersOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(framebuffers, __size_framebuffers);
+ if (useChecksum) checksumCalculator->addBuffer(framebuffers, __size_framebuffers);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGenFramebuffersOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
GLenum glCheckFramebufferStatusOES_enc(void *self , GLenum target)
@@ -3871,17 +6395,36 @@ GLenum glCheckFramebufferStatusOES_enc(void *self , GLenum target)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCheckFramebufferStatusOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLenum retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glCheckFramebufferStatusOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -3890,17 +6433,27 @@ void glFramebufferRenderbufferOES_enc(void *self , GLenum target, GLenum attachm
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFramebufferRenderbufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &attachment, 4); ptr += 4;
memcpy(ptr, &renderbuffertarget, 4); ptr += 4;
memcpy(ptr, &renderbuffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFramebufferTexture2DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
@@ -3908,18 +6461,28 @@ void glFramebufferTexture2DOES_enc(void *self , GLenum target, GLenum attachment
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFramebufferTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &attachment, 4); ptr += 4;
memcpy(ptr, &textarget, 4); ptr += 4;
memcpy(ptr, &texture, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGetFramebufferAttachmentParameterivOES_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params)
@@ -3927,19 +6490,38 @@ void glGetFramebufferAttachmentParameterivOES_enc(void *self , GLenum target, GL
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetFramebufferAttachmentParameterivOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &attachment, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetFramebufferAttachmentParameterivOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGenerateMipmapOES_enc(void *self , GLenum target)
@@ -3947,14 +6529,24 @@ void glGenerateMipmapOES_enc(void *self , GLenum target)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenerateMipmapOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
GLboolean glUnmapBufferOES_enc(void *self , GLenum target)
@@ -3962,17 +6554,36 @@ GLboolean glUnmapBufferOES_enc(void *self , GLenum target)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUnmapBufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glUnmapBufferOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -3981,14 +6592,24 @@ void glCurrentPaletteMatrixOES_enc(void *self , GLuint matrixpaletteindex)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCurrentPaletteMatrixOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &matrixpaletteindex, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLoadPaletteFromModelViewMatrixOES_enc(void *self )
@@ -3996,12 +6617,22 @@ void glLoadPaletteFromModelViewMatrixOES_enc(void *self )
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLoadPaletteFromModelViewMatrixOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
}
@@ -4010,22 +6641,43 @@ GLbitfield glQueryMatrixxOES_enc(void *self , GLfixed* mantissa, GLint* exponent
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_mantissa = (16 * sizeof(GLfixed));
const unsigned int __size_exponent = (16 * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_mantissa + __size_exponent + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_mantissa + __size_exponent + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glQueryMatrixxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_mantissa; ptr += 4;
*(unsigned int *)(ptr) = __size_exponent; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(mantissa, __size_mantissa);
+ if (useChecksum) checksumCalculator->addBuffer(mantissa, __size_mantissa);
stream->readback(exponent, __size_exponent);
+ if (useChecksum) checksumCalculator->addBuffer(exponent, __size_exponent);
GLbitfield retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glQueryMatrixxOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -4034,15 +6686,25 @@ void glDepthRangefOES_enc(void *self , GLclampf zNear, GLclampf zFar)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDepthRangefOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFrustumfOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
@@ -4050,12 +6712,18 @@ void glFrustumfOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom,
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFrustumfOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &left, 4); ptr += 4;
memcpy(ptr, &right, 4); ptr += 4;
@@ -4063,6 +6731,10 @@ void glFrustumfOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom,
memcpy(ptr, &top, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glOrthofOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
@@ -4070,12 +6742,18 @@ void glOrthofOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, G
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glOrthofOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &left, 4); ptr += 4;
memcpy(ptr, &right, 4); ptr += 4;
@@ -4083,6 +6761,10 @@ void glOrthofOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, G
memcpy(ptr, &top, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClipPlanefOES_enc(void *self , GLenum plane, const GLfloat* equation)
@@ -4090,17 +6772,27 @@ void glClipPlanefOES_enc(void *self , GLenum plane, const GLfloat* equation)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_equation = (4 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_equation + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_equation + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClipPlanefOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &plane, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_equation; ptr += 4;
memcpy(ptr, equation, __size_equation);ptr += __size_equation;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClipPlanefIMG_enc(void *self , GLenum plane, const GLfloat* equation)
@@ -4108,17 +6800,27 @@ void glClipPlanefIMG_enc(void *self , GLenum plane, const GLfloat* equation)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_equation = (4 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_equation + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_equation + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClipPlanefIMG;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &plane, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_equation; ptr += 4;
memcpy(ptr, equation, __size_equation);ptr += __size_equation;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGetClipPlanefOES_enc(void *self , GLenum pname, GLfloat* eqn)
@@ -4126,17 +6828,36 @@ void glGetClipPlanefOES_enc(void *self , GLenum pname, GLfloat* eqn)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_eqn = (4 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_eqn + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_eqn + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetClipPlanefOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(eqn, __size_eqn);
+ if (useChecksum) checksumCalculator->addBuffer(eqn, __size_eqn);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetClipPlanefOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glClearDepthfOES_enc(void *self , GLclampf depth)
@@ -4144,14 +6865,24 @@ void glClearDepthfOES_enc(void *self , GLclampf depth)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClearDepthfOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &depth, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexGenfOES_enc(void *self , GLenum coord, GLenum pname, GLfloat param)
@@ -4159,16 +6890,26 @@ void glTexGenfOES_enc(void *self , GLenum coord, GLenum pname, GLfloat param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexGenfOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &coord, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, const GLfloat* params)
@@ -4176,18 +6917,28 @@ void glTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, const GLfloat* p
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexGenfvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &coord, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexGeniOES_enc(void *self , GLenum coord, GLenum pname, GLint param)
@@ -4195,16 +6946,26 @@ void glTexGeniOES_enc(void *self , GLenum coord, GLenum pname, GLint param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexGeniOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &coord, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexGenivOES_enc(void *self , GLenum coord, GLenum pname, const GLint* params)
@@ -4212,18 +6973,28 @@ void glTexGenivOES_enc(void *self , GLenum coord, GLenum pname, const GLint* par
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexGenivOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &coord, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexGenxOES_enc(void *self , GLenum coord, GLenum pname, GLfixed param)
@@ -4231,16 +7002,26 @@ void glTexGenxOES_enc(void *self , GLenum coord, GLenum pname, GLfixed param)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexGenxOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &coord, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, const GLfixed* params)
@@ -4248,18 +7029,28 @@ void glTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, const GLfixed* p
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexGenxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &coord, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGetTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, GLfloat* params)
@@ -4267,18 +7058,28 @@ void glGetTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, GLfloat* para
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexGenfvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &coord, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGetTexGenivOES_enc(void *self , GLenum coord, GLenum pname, GLint* params)
@@ -4286,18 +7087,28 @@ void glGetTexGenivOES_enc(void *self , GLenum coord, GLenum pname, GLint* params
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexGenivOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &coord, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGetTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, GLfixed* params)
@@ -4305,18 +7116,28 @@ void glGetTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, GLfixed* para
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfixed));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexGenxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &coord, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBindVertexArrayOES_enc(void *self , GLuint array)
@@ -4324,14 +7145,24 @@ void glBindVertexArrayOES_enc(void *self , GLuint array)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBindVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &array, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays)
@@ -4339,17 +7170,27 @@ void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_arrays = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_arrays + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays)
@@ -4357,17 +7198,36 @@ void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_arrays = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_arrays + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(arrays, __size_arrays);
+ if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGenVertexArraysOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
GLboolean glIsVertexArrayOES_enc(void *self , GLuint array)
@@ -4375,17 +7235,36 @@ GLboolean glIsVertexArrayOES_enc(void *self , GLuint array)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &array, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsVertexArrayOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -4394,18 +7273,28 @@ void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachme
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_attachments = (numAttachments * sizeof(const GLenum));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_attachments + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDiscardFramebufferEXT;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &numAttachments, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_attachments; ptr += 4;
memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glRenderbufferStorageMultisampleIMG_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
@@ -4413,18 +7302,28 @@ void glRenderbufferStorageMultisampleIMG_enc(void *self , GLenum target, GLsizei
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glRenderbufferStorageMultisampleIMG;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &samples, 4); ptr += 4;
memcpy(ptr, &internalformat, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFramebufferTexture2DMultisampleIMG_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
@@ -4432,12 +7331,18 @@ void glFramebufferTexture2DMultisampleIMG_enc(void *self , GLenum target, GLenum
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFramebufferTexture2DMultisampleIMG;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &attachment, 4); ptr += 4;
@@ -4445,6 +7350,10 @@ void glFramebufferTexture2DMultisampleIMG_enc(void *self , GLenum target, GLenum
memcpy(ptr, &texture, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
memcpy(ptr, &samples, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteFencesNV_enc(void *self , GLsizei n, const GLuint* fences)
@@ -4452,17 +7361,27 @@ void glDeleteFencesNV_enc(void *self , GLsizei n, const GLuint* fences)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_fences = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_fences + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_fences + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteFencesNV;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_fences; ptr += 4;
memcpy(ptr, fences, __size_fences);ptr += __size_fences;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGenFencesNV_enc(void *self , GLsizei n, GLuint* fences)
@@ -4470,17 +7389,27 @@ void glGenFencesNV_enc(void *self , GLsizei n, GLuint* fences)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_fences = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_fences + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_fences + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenFencesNV;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_fences; ptr += 4;
memcpy(ptr, fences, __size_fences);ptr += __size_fences;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
GLboolean glIsFenceNV_enc(void *self , GLuint fence)
@@ -4488,17 +7417,36 @@ GLboolean glIsFenceNV_enc(void *self , GLuint fence)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsFenceNV;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &fence, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsFenceNV: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -4507,17 +7455,36 @@ GLboolean glTestFenceNV_enc(void *self , GLuint fence)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTestFenceNV;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &fence, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glTestFenceNV: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -4526,18 +7493,37 @@ void glGetFenceivNV_enc(void *self , GLuint fence, GLenum pname, GLint* params)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetFenceivNV;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &fence, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetFenceivNV: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glFinishFenceNV_enc(void *self , GLuint fence)
@@ -4545,14 +7531,24 @@ void glFinishFenceNV_enc(void *self , GLuint fence)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFinishFenceNV;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &fence, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glSetFenceNV_enc(void *self , GLuint fence, GLenum condition)
@@ -4560,15 +7556,25 @@ void glSetFenceNV_enc(void *self , GLuint fence, GLenum condition)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glSetFenceNV;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &fence, 4); ptr += 4;
memcpy(ptr, &condition, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGetDriverControlsQCOM_enc(void *self , GLint* num, GLsizei size, GLuint* driverControls)
@@ -4576,20 +7582,40 @@ void glGetDriverControlsQCOM_enc(void *self , GLint* num, GLsizei size, GLuint*
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_num = (1 * sizeof(GLint));
const unsigned int __size_driverControls = (size * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_num + 4 + __size_driverControls + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_num + 4 + __size_driverControls + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetDriverControlsQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_num; ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_driverControls; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(num, __size_num);
+ if (useChecksum) checksumCalculator->addBuffer(num, __size_num);
stream->readback(driverControls, __size_driverControls);
+ if (useChecksum) checksumCalculator->addBuffer(driverControls, __size_driverControls);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetDriverControlsQCOM: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetDriverControlStringQCOM_enc(void *self , GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar* driverControlString)
@@ -4597,21 +7623,41 @@ void glGetDriverControlStringQCOM_enc(void *self , GLuint driverControl, GLsizei
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_length = (1 * sizeof(GLsizei));
const unsigned int __size_driverControlString = (1 * sizeof(GLchar));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_length + __size_driverControlString + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_length + __size_driverControlString + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetDriverControlStringQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &driverControl, 4); ptr += 4;
memcpy(ptr, &bufSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_length; ptr += 4;
*(unsigned int *)(ptr) = __size_driverControlString; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(length, __size_length);
+ if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
stream->readback(driverControlString, __size_driverControlString);
+ if (useChecksum) checksumCalculator->addBuffer(driverControlString, __size_driverControlString);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetDriverControlStringQCOM: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glEnableDriverControlQCOM_enc(void *self , GLuint driverControl)
@@ -4619,14 +7665,24 @@ void glEnableDriverControlQCOM_enc(void *self , GLuint driverControl)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glEnableDriverControlQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &driverControl, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDisableDriverControlQCOM_enc(void *self , GLuint driverControl)
@@ -4634,14 +7690,24 @@ void glDisableDriverControlQCOM_enc(void *self , GLuint driverControl)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDisableDriverControlQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &driverControl, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glExtGetTexturesQCOM_enc(void *self , GLuint* textures, GLint maxTextures, GLint* numTextures)
@@ -4649,20 +7715,40 @@ void glExtGetTexturesQCOM_enc(void *self , GLuint* textures, GLint maxTextures,
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_textures = (maxTextures * sizeof(GLuint));
const unsigned int __size_numTextures = (1 * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_textures + 4 + __size_numTextures + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_textures + 4 + __size_numTextures + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glExtGetTexturesQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_textures; ptr += 4;
memcpy(ptr, &maxTextures, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_numTextures; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(textures, __size_textures);
+ if (useChecksum) checksumCalculator->addBuffer(textures, __size_textures);
stream->readback(numTextures, __size_numTextures);
+ if (useChecksum) checksumCalculator->addBuffer(numTextures, __size_numTextures);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glExtGetTexturesQCOM: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glExtGetBuffersQCOM_enc(void *self , GLuint* buffers, GLint maxBuffers, GLint* numBuffers)
@@ -4670,20 +7756,40 @@ void glExtGetBuffersQCOM_enc(void *self , GLuint* buffers, GLint maxBuffers, GLi
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_buffers = (maxBuffers * sizeof(GLuint));
const unsigned int __size_numBuffers = (1 * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_buffers + 4 + __size_numBuffers + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_buffers + 4 + __size_numBuffers + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glExtGetBuffersQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
memcpy(ptr, &maxBuffers, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_numBuffers; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(buffers, __size_buffers);
+ if (useChecksum) checksumCalculator->addBuffer(buffers, __size_buffers);
stream->readback(numBuffers, __size_numBuffers);
+ if (useChecksum) checksumCalculator->addBuffer(numBuffers, __size_numBuffers);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glExtGetBuffersQCOM: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glExtGetRenderbuffersQCOM_enc(void *self , GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers)
@@ -4691,20 +7797,40 @@ void glExtGetRenderbuffersQCOM_enc(void *self , GLuint* renderbuffers, GLint max
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_renderbuffers = (maxRenderbuffers * sizeof(GLuint));
const unsigned int __size_numRenderbuffers = (1 * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_renderbuffers + 4 + __size_numRenderbuffers + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_renderbuffers + 4 + __size_numRenderbuffers + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glExtGetRenderbuffersQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
memcpy(ptr, &maxRenderbuffers, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_numRenderbuffers; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(renderbuffers, __size_renderbuffers);
+ if (useChecksum) checksumCalculator->addBuffer(renderbuffers, __size_renderbuffers);
stream->readback(numRenderbuffers, __size_numRenderbuffers);
+ if (useChecksum) checksumCalculator->addBuffer(numRenderbuffers, __size_numRenderbuffers);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glExtGetRenderbuffersQCOM: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glExtGetFramebuffersQCOM_enc(void *self , GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers)
@@ -4712,20 +7838,40 @@ void glExtGetFramebuffersQCOM_enc(void *self , GLuint* framebuffers, GLint maxFr
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_framebuffers = (maxFramebuffers * sizeof(GLuint));
const unsigned int __size_numFramebuffers = (1 * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_framebuffers + 4 + __size_numFramebuffers + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_framebuffers + 4 + __size_numFramebuffers + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glExtGetFramebuffersQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
memcpy(ptr, &maxFramebuffers, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_numFramebuffers; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(framebuffers, __size_framebuffers);
+ if (useChecksum) checksumCalculator->addBuffer(framebuffers, __size_framebuffers);
stream->readback(numFramebuffers, __size_numFramebuffers);
+ if (useChecksum) checksumCalculator->addBuffer(numFramebuffers, __size_numFramebuffers);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glExtGetFramebuffersQCOM: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glExtGetTexLevelParameterivQCOM_enc(void *self , GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params)
@@ -4733,20 +7879,39 @@ void glExtGetTexLevelParameterivQCOM_enc(void *self , GLuint texture, GLenum fac
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glExtGetTexLevelParameterivQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &texture, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glExtGetTexLevelParameterivQCOM: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glExtTexObjectStateOverrideiQCOM_enc(void *self , GLenum target, GLenum pname, GLint param)
@@ -4754,16 +7919,26 @@ void glExtTexObjectStateOverrideiQCOM_enc(void *self , GLenum target, GLenum pna
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glExtTexObjectStateOverrideiQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
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)
@@ -4771,13 +7946,19 @@ void glExtGetTexSubImageQCOM_enc(void *self , GLenum target, GLint level, GLint
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_texels = (depth * glesv1_enc::pixelDataSize(self, width, height, format, type, 0));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_texels + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_texels + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glExtGetTexSubImageQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -4790,7 +7971,20 @@ void glExtGetTexSubImageQCOM_enc(void *self , GLenum target, GLint level, GLint
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_texels; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(texels, __size_texels);
+ if (useChecksum) checksumCalculator->addBuffer(texels, __size_texels);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glExtGetTexSubImageQCOM: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glExtGetShadersQCOM_enc(void *self , GLuint* shaders, GLint maxShaders, GLint* numShaders)
@@ -4798,20 +7992,40 @@ void glExtGetShadersQCOM_enc(void *self , GLuint* shaders, GLint maxShaders, GLi
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_shaders = (maxShaders * sizeof(GLuint));
const unsigned int __size_numShaders = (1 * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_shaders + 4 + __size_numShaders + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_shaders + 4 + __size_numShaders + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glExtGetShadersQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_shaders; ptr += 4;
memcpy(ptr, &maxShaders, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_numShaders; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(shaders, __size_shaders);
+ if (useChecksum) checksumCalculator->addBuffer(shaders, __size_shaders);
stream->readback(numShaders, __size_numShaders);
+ if (useChecksum) checksumCalculator->addBuffer(numShaders, __size_numShaders);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glExtGetShadersQCOM: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glExtGetProgramsQCOM_enc(void *self , GLuint* programs, GLint maxPrograms, GLint* numPrograms)
@@ -4819,20 +8033,40 @@ void glExtGetProgramsQCOM_enc(void *self , GLuint* programs, GLint maxPrograms,
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_programs = (maxPrograms * sizeof(GLuint));
const unsigned int __size_numPrograms = (1 * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + __size_programs + 4 + __size_numPrograms + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_programs + 4 + __size_numPrograms + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glExtGetProgramsQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_programs; ptr += 4;
memcpy(ptr, &maxPrograms, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_numPrograms; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(programs, __size_programs);
+ if (useChecksum) checksumCalculator->addBuffer(programs, __size_programs);
stream->readback(numPrograms, __size_numPrograms);
+ if (useChecksum) checksumCalculator->addBuffer(numPrograms, __size_numPrograms);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glExtGetProgramsQCOM: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
GLboolean glExtIsProgramBinaryQCOM_enc(void *self , GLuint program)
@@ -4840,17 +8074,36 @@ GLboolean glExtIsProgramBinaryQCOM_enc(void *self , GLuint program)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glExtIsProgramBinaryQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glExtIsProgramBinaryQCOM: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -4859,18 +8112,28 @@ void glStartTilingQCOM_enc(void *self , GLuint x, GLuint y, GLuint width, GLuint
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glStartTilingQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
memcpy(ptr, &preserveMask, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glEndTilingQCOM_enc(void *self , GLbitfield preserveMask)
@@ -4878,21 +8141,32 @@ void glEndTilingQCOM_enc(void *self , GLbitfield preserveMask)
gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glEndTilingQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &preserveMask, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
} // namespace
-gl_encoder_context_t::gl_encoder_context_t(IOStream *stream)
+gl_encoder_context_t::gl_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator)
{
m_stream = stream;
+ m_checksumCalculator = checksumCalculator;
this->glAlphaFunc = &glAlphaFunc_enc;
this->glClearColor = &glClearColor_enc;
diff --git a/opengl/system/GLESv1_enc/gl_enc.h b/opengl/system/GLESv1_enc/gl_enc.h
index 03ebb42..37de4c4 100644
--- a/opengl/system/GLESv1_enc/gl_enc.h
+++ b/opengl/system/GLESv1_enc/gl_enc.h
@@ -5,6 +5,7 @@
#define GUARD_gl_encoder_context_t
#include "IOStream.h"
+#include "ChecksumCalculator.h"
#include "gl_client_context.h"
@@ -14,8 +15,9 @@
struct gl_encoder_context_t : public gl_client_context_t {
IOStream *m_stream;
+ ChecksumCalculator *m_checksumCalculator;
- gl_encoder_context_t(IOStream *stream);
+ gl_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator);
};
#endif // GUARD_gl_encoder_context_t \ No newline at end of file
diff --git a/opengl/system/GLESv2/gl2.cpp b/opengl/system/GLESv2/gl2.cpp
index e545779..5aaac5f 100644
--- a/opengl/system/GLESv2/gl2.cpp
+++ b/opengl/system/GLESv2/gl2.cpp
@@ -22,6 +22,7 @@
#include "ErrorLog.h"
#include "gralloc_cb.h"
#include "ThreadInfo.h"
+#include "EGLImage.h"
//XXX: fix this macro to get the context from fast tls path
#define GET_CONTEXT GL2Encoder * ctx = getEGLThreadInfo()->hostConn->gl2Encoder();
@@ -48,31 +49,41 @@ static EGLClient_glesInterface * s_gl = NULL;
}
//GL extensions
-void glEGLImageTargetTexture2DOES(void * self, GLenum target, GLeglImageOES image)
+void glEGLImageTargetTexture2DOES(void * self, GLenum target, GLeglImageOES img)
{
(void)self;
(void)target;
- DBG("glEGLImageTargetTexture2DOES v2 target=%#x img=%p\n", target, image);
- //TODO: check error - we don't have a way to set gl error
- android_native_buffer_t* native_buffer = (android_native_buffer_t*)image;
+ DBG("glEGLImageTargetTexture2DOES v2 target=%#x img=%p\n", target, img);
- if (native_buffer->common.magic != ANDROID_NATIVE_BUFFER_MAGIC) {
- return;
- }
+ EGLImage_t *image = (EGLImage_t*)img;
- if (native_buffer->common.version != sizeof(android_native_buffer_t)) {
- return;
- }
+ if (image->target == EGL_NATIVE_BUFFER_ANDROID) {
+ //TODO: check error - we don't have a way to set gl error
+ android_native_buffer_t* native_buffer = image->native_buffer;
- GET_CONTEXT;
- DEFINE_AND_VALIDATE_HOST_CONNECTION();
+ if (native_buffer->common.magic != ANDROID_NATIVE_BUFFER_MAGIC) {
+ return;
+ }
+
+ if (native_buffer->common.version != sizeof(android_native_buffer_t)) {
+ return;
+ }
- ctx->override2DTextureTarget(target);
- rcEnc->rcBindTexture(rcEnc, ((cb_handle_t *)(native_buffer->handle))->hostHandle);
- ctx->restore2DTextureTarget();
+ GET_CONTEXT;
+ DEFINE_AND_VALIDATE_HOST_CONNECTION();
- return;
+ ctx->override2DTextureTarget(target);
+ rcEnc->rcBindTexture(rcEnc, ((cb_handle_t *)(native_buffer->handle))->hostHandle);
+ ctx->restore2DTextureTarget();
+ }
+ else if (image->target == EGL_GL_TEXTURE_2D_KHR) {
+ GET_CONTEXT;
+ ctx->override2DTextureTarget(target);
+ GLeglImageOES hostImage = reinterpret_cast<GLeglImageOES>((intptr_t)image->host_egl_image);
+ ctx->m_glEGLImageTargetTexture2DOES_enc(self, target, hostImage);
+ ctx->restore2DTextureTarget();
+ }
}
void glEGLImageTargetRenderbufferStorageOES(void *self, GLenum target, GLeglImageOES image)
@@ -118,8 +129,22 @@ const GLubyte *my_glGetString (void *self, GLenum name)
{
(void)self;
- if (s_egl) {
- return (const GLubyte*)s_egl->getGLString(name);
+ //see ref in https://www.khronos.org/opengles/sdk/docs/man
+ //name in glGetString can be one of the following five values
+ switch (name) {
+ case GL_VERSION:
+ case GL_VENDOR:
+ case GL_RENDERER:
+ case GL_SHADING_LANGUAGE_VERSION:
+ case GL_EXTENSIONS:
+ if (s_egl) {
+ return (const GLubyte*)s_egl->getGLString(name);
+ }
+ break;
+ default:
+ GET_CONTEXT;
+ ctx->setError(GL_INVALID_ENUM);
+ break;
}
return NULL;
}
@@ -127,6 +152,7 @@ const GLubyte *my_glGetString (void *self, GLenum name)
void init()
{
GET_CONTEXT;
+ ctx->m_glEGLImageTargetTexture2DOES_enc = ctx->glEGLImageTargetTexture2DOES;
ctx->glEGLImageTargetTexture2DOES = &glEGLImageTargetTexture2DOES;
ctx->glEGLImageTargetRenderbufferStorageOES = &glEGLImageTargetRenderbufferStorageOES;
ctx->glGetString = &my_glGetString;
diff --git a/opengl/system/GLESv2_enc/GL2Encoder.cpp b/opengl/system/GLESv2_enc/GL2Encoder.cpp
index dca504d..268f76c 100755
--- a/opengl/system/GLESv2_enc/GL2Encoder.cpp
+++ b/opengl/system/GLESv2_enc/GL2Encoder.cpp
@@ -17,6 +17,7 @@
#include "GL2Encoder.h"
#include <assert.h>
#include <ctype.h>
+#include <cmath>
#ifndef MIN
#define MIN(a, b) ((a) < (b) ? (a) : (b))
@@ -25,7 +26,7 @@
static GLubyte *gVendorString= (GLubyte *) "Android";
static GLubyte *gRendererString= (GLubyte *) "Android HW-GLES 2.0";
static GLubyte *gVersionString= (GLubyte *) "OpenGL ES 2.0";
-static GLubyte *gExtensionsString= (GLubyte *) ""; // no extensions at this point;
+static GLubyte *gExtensionsString= (GLubyte *) "GL_OES_EGL_image_external ";
#define SET_ERROR_IF(condition,err) if((condition)) { \
ALOGE("%s:%s:%d GL error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \
@@ -41,12 +42,16 @@ static GLubyte *gExtensionsString= (GLubyte *) ""; // no extensions at this poin
}
-GL2Encoder::GL2Encoder(IOStream *stream) : gl2_encoder_context_t(stream)
+GL2Encoder::GL2Encoder(IOStream *stream, ChecksumCalculator *protocol)
+ : gl2_encoder_context_t(stream, protocol)
{
m_initialized = false;
m_state = NULL;
m_error = GL_NO_ERROR;
m_num_compressedTextureFormats = 0;
+ m_max_cubeMapTextureSize = 0;
+ m_max_renderBufferSize = 0;
+ m_max_textureSize = 0;
m_compressedTextureFormats = NULL;
//overrides
@@ -123,6 +128,7 @@ GL2Encoder::GL2Encoder(IOStream *stream) : gl2_encoder_context_t(stream)
OVERRIDE(glTexParameteri);
OVERRIDE(glTexParameteriv);
OVERRIDE(glTexImage2D);
+ OVERRIDE(glTexSubImage2D);
}
GL2Encoder::~GL2Encoder()
@@ -271,6 +277,36 @@ void GL2Encoder::s_glGetIntegerv(void *self, GLenum param, GLint *ptr)
*ptr = state->getBoundTexture(GL_TEXTURE_EXTERNAL_OES);
break;
+ case GL_MAX_CUBE_MAP_TEXTURE_SIZE:
+ if (ctx->m_max_cubeMapTextureSize != 0) {
+ *ptr = ctx->m_max_cubeMapTextureSize;
+ } else {
+ ctx->m_glGetIntegerv_enc(self, param, ptr);
+ ctx->m_max_cubeMapTextureSize = *ptr;
+ }
+ break;
+ case GL_MAX_RENDERBUFFER_SIZE:
+ if (ctx->m_max_renderBufferSize != 0) {
+ *ptr = ctx->m_max_renderBufferSize;
+ } else {
+ ctx->m_glGetIntegerv_enc(self, param, ptr);
+ ctx->m_max_renderBufferSize = *ptr;
+ }
+ break;
+ case GL_MAX_TEXTURE_SIZE:
+ if (ctx->m_max_textureSize != 0) {
+ *ptr = ctx->m_max_textureSize;
+ } else {
+ ctx->m_glGetIntegerv_enc(self, param, ptr);
+ ctx->m_max_textureSize = *ptr;
+ }
+ break;
+ case GL_MAX_VERTEX_ATTRIBS:
+ if (!ctx->m_state->getClientStateParameter<GLint>(param, ptr)) {
+ ctx->m_glGetIntegerv_enc(self, param, ptr);
+ ctx->m_state->setMaxVertexAttribs(*ptr);
+ }
+ break;
default:
if (!ctx->m_state->getClientStateParameter<GLint>(param, ptr)) {
ctx->m_glGetIntegerv_enc(self, param, ptr);
@@ -375,6 +411,9 @@ void GL2Encoder::s_glEnableVertexAttribArray(void *self, GLuint index)
{
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);
ctx->m_state->enable(index, 1);
}
@@ -382,6 +421,9 @@ void GL2Encoder::s_glDisableVertexAttribArray(void *self, GLuint index)
{
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);
ctx->m_state->enable(index, 0);
}
@@ -390,6 +432,9 @@ void GL2Encoder::s_glGetVertexAttribiv(void *self, GLuint index, GLenum pname, G
{
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);
if (!ctx->m_state->getVertexAttribParameter<GLint>(index, pname, params)) {
ctx->m_glGetVertexAttribiv_enc(self, index, pname, params);
@@ -400,6 +445,9 @@ void GL2Encoder::s_glGetVertexAttribfv(void *self, GLuint index, GLenum pname, G
{
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);
if (!ctx->m_state->getVertexAttribParameter<GLfloat>(index, pname, params)) {
ctx->m_glGetVertexAttribfv_enc(self, index, pname, params);
@@ -410,6 +458,10 @@ 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);
+ SET_ERROR_IF(pname != GL_VERTEX_ATTRIB_ARRAY_POINTER, GL_INVALID_ENUM);
(void)pname;
@@ -459,19 +511,63 @@ void GL2Encoder::sendVertexAttributes(GLint first, GLsizei count)
}
}
+static bool isValidDrawMode(GLenum mode) {
+ switch(mode) {
+ case GL_POINTS:
+ case GL_LINE_STRIP:
+ case GL_LINE_LOOP:
+ case GL_LINES:
+ case GL_TRIANGLE_STRIP:
+ case GL_TRIANGLE_FAN:
+ case GL_TRIANGLES:
+ return true;
+ }
+ return false;
+}
+
+static bool isValidDrawType(GLenum mode) {
+ return mode == GL_UNSIGNED_BYTE ||
+ mode == GL_UNSIGNED_SHORT ||
+ mode == GL_UNSIGNED_INT;
+}
+
void GL2Encoder::s_glDrawArrays(void *self, GLenum mode, GLint first, GLsizei count)
{
GL2Encoder *ctx = (GL2Encoder *)self;
+
+ SET_ERROR_IF(!isValidDrawMode(mode), GL_INVALID_ENUM);
+ SET_ERROR_IF(count<0, GL_INVALID_VALUE);
+
+ bool has_arrays = false;
+ int nLocations = ctx->m_state->nLocations();
+ for (int i = 0; i < nLocations; i++) {
+ const GLClientState::VertexAttribState *state = ctx->m_state->getState(i);
+ if (state->enabled) {
+ if (state->bufferObject || state->data) {
+ has_arrays = true;
+ }
+ else {
+ ALOGE("glDrawArrays: a vertex attribute array is enabled with no data bound\n");
+ ctx->setError(GL_INVALID_OPERATION);
+ return;
+ }
+ }
+ }
+ if (!has_arrays) {
+ ALOGE("glDrawArrays: no data bound to the command - ignoring\n");
+ return;
+ }
+
ctx->sendVertexAttributes(first, count);
ctx->m_glDrawArrays_enc(ctx, mode, 0, count);
}
-
void GL2Encoder::s_glDrawElements(void *self, GLenum mode, GLsizei count, GLenum type, const void *indices)
{
GL2Encoder *ctx = (GL2Encoder *)self;
assert(ctx->m_state != NULL);
+ SET_ERROR_IF(!(isValidDrawMode(mode) && isValidDrawType(type)),GL_INVALID_ENUM);
SET_ERROR_IF(count<0, GL_INVALID_VALUE);
bool has_immediate_arrays = false;
@@ -483,8 +579,12 @@ void GL2Encoder::s_glDrawElements(void *self, GLenum mode, GLsizei count, GLenum
if (state->enabled) {
if (state->bufferObject != 0) {
has_indirect_arrays = true;
- } else {
+ } else if (state->data) {
has_immediate_arrays = true;
+ } else {
+ ALOGW("glDrawElements: a vertex attribute array is enabled with no data bound\n");
+ ctx->setError(GL_INVALID_OPERATION);
+ return;
}
}
}
@@ -532,6 +632,16 @@ void GL2Encoder::s_glDrawElements(void *self, GLenum mode, GLsizei count, GLenum
count, -minIndex);
}
break;
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ GLUtils::minmax<unsigned int>((unsigned int *)indices, count, &minIndex, &maxIndex);
+ if (minIndex != 0) {
+ adjustedIndices = ctx->m_fixedBuffer.alloc(glSizeof(type) * count);
+ GLUtils::shiftIndices<unsigned int>((unsigned int *)indices,
+ (unsigned int *)adjustedIndices,
+ count, -minIndex);
+ }
+ break;
default:
ALOGE("unsupported index buffer type %d\n", type);
}
@@ -737,7 +847,8 @@ void GL2Encoder::s_glDeleteProgram(void *self, GLuint program)
void GL2Encoder::s_glGetUniformiv(void *self, GLuint program, GLint location, GLint* params)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- SET_ERROR_IF(!ctx->m_shared->isProgram(program), GL_INVALID_VALUE);
+ SET_ERROR_IF(!ctx->m_shared->isObject(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 = ctx->m_shared->locationWARAppToHost(program, location);
SET_ERROR_IF(ctx->m_shared->getProgramUniformType(program,hostLoc)==0, GL_INVALID_OPERATION);
@@ -746,7 +857,8 @@ void GL2Encoder::s_glGetUniformiv(void *self, GLuint program, GLint location, GL
void GL2Encoder::s_glGetUniformfv(void *self, GLuint program, GLint location, GLfloat* params)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- SET_ERROR_IF(!ctx->m_shared->isProgram(program), GL_INVALID_VALUE);
+ SET_ERROR_IF(!ctx->m_shared->isObject(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 = ctx->m_shared->locationWARAppToHost(program,location);
SET_ERROR_IF(ctx->m_shared->getProgramUniformType(program,hostLoc)==0, GL_INVALID_OPERATION);
@@ -912,17 +1024,46 @@ void GL2Encoder::s_glUseProgram(void *self, GLuint program)
}
}
+void GL2Encoder::checkValidUniformParam(void *self, GLsizei count, GLboolean transpose)
+{
+ GL2Encoder *ctx = (GL2Encoder*)self;
+ GLuint program = ctx->m_state->currentProgram();
+ SET_ERROR_IF(!ctx->m_shared->isProgram(program), GL_INVALID_OPERATION);
+ SET_ERROR_IF((count < 0 || transpose == GL_TRUE), GL_INVALID_VALUE);
+}
+
+void GL2Encoder::getHostLocation(void *self, GLint location, GLint *hostLoc)
+{
+ GL2Encoder *ctx = (GL2Encoder*)self;
+ GLuint program = ctx->m_state->currentProgram();
+ if (location == -1) {
+ *hostLoc = location;
+ return;
+ }
+ SET_ERROR_IF((location < 0), GL_INVALID_OPERATION);
+ GLint curHostLoc = ctx->m_shared->locationWARAppToHost(program,location);
+ SET_ERROR_IF((ctx->m_shared->getProgramUniformType(program,curHostLoc) == 0 &&
+ curHostLoc!=-1), GL_INVALID_OPERATION);
+ *hostLoc = curHostLoc;
+}
+
void GL2Encoder::s_glUniform1f(void *self , GLint location, GLfloat x)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, 0, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform1f_enc(self, hostLoc, x);
}
void GL2Encoder::s_glUniform1fv(void *self , GLint location, GLsizei count, const GLfloat* v)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, count, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform1fv_enc(self, hostLoc, count, v);
}
@@ -931,8 +1072,10 @@ void GL2Encoder::s_glUniform1i(void *self , GLint location, GLint x)
GL2Encoder *ctx = (GL2Encoder*)self;
GLClientState* state = ctx->m_state;
GLSharedGroupPtr shared = ctx->m_shared;
+ GLint hostLoc;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ ctx->checkValidUniformParam(self, 0, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform1i_enc(self, hostLoc, x);
GLenum target;
@@ -948,112 +1091,160 @@ 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 = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, count, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform1iv_enc(self, hostLoc, count, v);
}
void GL2Encoder::s_glUniform2f(void *self , GLint location, GLfloat x, GLfloat y)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, 0, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform2f_enc(self, hostLoc, x, y);
}
void GL2Encoder::s_glUniform2fv(void *self , GLint location, GLsizei count, const GLfloat* v)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, count, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform2fv_enc(self, hostLoc, count, v);
}
void GL2Encoder::s_glUniform2i(void *self , GLint location, GLint x, GLint y)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, 0, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform2i_enc(self, hostLoc, x, y);
}
void GL2Encoder::s_glUniform2iv(void *self , GLint location, GLsizei count, const GLint* v)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, count, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform2iv_enc(self, hostLoc, count, v);
}
void GL2Encoder::s_glUniform3f(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, 0, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform3f_enc(self, hostLoc, x, y, z);
}
void GL2Encoder::s_glUniform3fv(void *self , GLint location, GLsizei count, const GLfloat* v)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, count, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform3fv_enc(self, hostLoc, count, v);
}
void GL2Encoder::s_glUniform3i(void *self , GLint location, GLint x, GLint y, GLint z)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, 0, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform3i_enc(self, hostLoc, x, y, z);
}
void GL2Encoder::s_glUniform3iv(void *self , GLint location, GLsizei count, const GLint* v)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, count, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform3iv_enc(self, hostLoc, count, v);
}
void GL2Encoder::s_glUniform4f(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, 0, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform4f_enc(self, hostLoc, x, y, z, w);
}
void GL2Encoder::s_glUniform4fv(void *self , GLint location, GLsizei count, const GLfloat* v)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, count, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform4fv_enc(self, hostLoc, count, v);
}
void GL2Encoder::s_glUniform4i(void *self , GLint location, GLint x, GLint y, GLint z, GLint w)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, 0, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform4i_enc(self, hostLoc, x, y, z, w);
}
void GL2Encoder::s_glUniform4iv(void *self , GLint location, GLsizei count, const GLint* v)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, count, GL_FALSE);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniform4iv_enc(self, hostLoc, count, v);
}
void GL2Encoder::s_glUniformMatrix2fv(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, count, transpose);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniformMatrix2fv_enc(self, hostLoc, count, transpose, value);
}
void GL2Encoder::s_glUniformMatrix3fv(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, count, transpose);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniformMatrix3fv_enc(self, hostLoc, count, transpose, value);
}
void GL2Encoder::s_glUniformMatrix4fv(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
{
GL2Encoder *ctx = (GL2Encoder*)self;
- GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
+ GLint hostLoc;
+
+ ctx->checkValidUniformParam(self, count, transpose);
+ ctx->getHostLocation(self, location, &hostLoc);
ctx->m_glUniformMatrix4fv_enc(self, hostLoc, count, transpose, value);
}
@@ -1240,6 +1431,26 @@ void GL2Encoder::s_glTexImage2D(void* self, GLenum target, GLint level,
}
}
+void GL2Encoder::s_glTexSubImage2D(void* self, GLenum target, GLint level,
+ GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format,
+ GLenum type, const GLvoid* pixels)
+{
+ GL2Encoder* ctx = (GL2Encoder*)self;
+ GLint maxTextureSize;
+ ctx->glGetIntegerv(self, GL_MAX_TEXTURE_SIZE, &maxTextureSize);
+
+ SET_ERROR_IF((level < 0 || level > log2(maxTextureSize)), GL_INVALID_VALUE);
+
+ if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
+ ctx->override2DTextureTarget(target);
+ ctx->m_glTexSubImage2D_enc(ctx, target, level, xoffset, yoffset, width,
+ height, format, type, pixels);
+ ctx->restore2DTextureTarget();
+ } else {
+ ctx->m_glTexSubImage2D_enc(ctx, target, level, xoffset, yoffset, width,
+ height, format, type, pixels);
+ }
+}
void GL2Encoder::s_glTexParameteriv(void* self,
GLenum target, GLenum pname, const GLint* params)
diff --git a/opengl/system/GLESv2_enc/GL2Encoder.h b/opengl/system/GLESv2_enc/GL2Encoder.h
index 21e7932..e3d343a 100644
--- a/opengl/system/GLESv2_enc/GL2Encoder.h
+++ b/opengl/system/GLESv2_enc/GL2Encoder.h
@@ -21,10 +21,9 @@
#include "GLSharedGroup.h"
#include "FixedBuffer.h"
-
class GL2Encoder : public gl2_encoder_context_t {
public:
- GL2Encoder(IOStream *stream);
+ GL2Encoder(IOStream *stream, ChecksumCalculator* protocol);
virtual ~GL2Encoder();
void setClientState(GLClientState *state) {
m_state = state;
@@ -54,10 +53,16 @@ private:
GLint m_num_compressedTextureFormats;
GLint *getCompressedTextureFormats();
+ GLint m_max_cubeMapTextureSize;
+ GLint m_max_renderBufferSize;
+ GLint m_max_textureSize;
FixedBuffer m_fixedBuffer;
void sendVertexAttributes(GLint first, GLsizei count);
bool updateHostTexture2DBinding(GLenum texUnit, GLenum newTarget);
+ void checkValidUniformParam(void * self, GLsizei count, GLboolean transpose);
+ void getHostLocation(void *self, GLint location, GLint *hostLoc);
+
glGetError_client_proc_t m_glGetError_enc;
static GLenum s_glGetError(void * self);
@@ -221,6 +226,7 @@ private:
glTexParameteri_client_proc_t m_glTexParameteri_enc;
glTexParameteriv_client_proc_t m_glTexParameteriv_enc;
glTexImage2D_client_proc_t m_glTexImage2D_enc;
+ glTexSubImage2D_client_proc_t m_glTexSubImage2D_enc;
static void s_glActiveTexture(void* self, GLenum texture);
static void s_glBindTexture(void* self, GLenum target, GLuint texture);
@@ -234,6 +240,12 @@ private:
static void s_glTexImage2D(void* self, GLenum target, GLint level, GLint internalformat,
GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type,
const GLvoid* pixels);
+ static void s_glTexSubImage2D(void* self, GLenum target, GLint level, GLint xoffset,
+ GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type,
+ const GLvoid* pixels);
+
+public:
+ glEGLImageTargetTexture2DOES_client_proc_t m_glEGLImageTargetTexture2DOES_enc;
};
#endif
diff --git a/opengl/system/GLESv2_enc/GL2EncoderUtils.h b/opengl/system/GLESv2_enc/GL2EncoderUtils.h
index 4afec10..211e966 100644
--- a/opengl/system/GLESv2_enc/GL2EncoderUtils.h
+++ b/opengl/system/GLESv2_enc/GL2EncoderUtils.h
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#ifndef GL2_ENCODER_UTILS_H
-#define GL2_ENCLODER_UTILS_H
+#define GL2_ENCODER_UTILS_H
namespace glesv2_enc {
diff --git a/opengl/system/GLESv2_enc/gl2_client_context.h b/opengl/system/GLESv2_enc/gl2_client_context.h
index 87d62d5..7035fec 100644
--- a/opengl/system/GLESv2_enc/gl2_client_context.h
+++ b/opengl/system/GLESv2_enc/gl2_client_context.h
@@ -5,6 +5,8 @@
#include "gl2_client_proc.h"
+#include "gl2_types.h"
+
struct gl2_client_context_t {
diff --git a/opengl/system/GLESv2_enc/gl2_enc.cpp b/opengl/system/GLESv2_enc/gl2_enc.cpp
index 089a9ae..615dcc1 100644
--- a/opengl/system/GLESv2_enc/gl2_enc.cpp
+++ b/opengl/system/GLESv2_enc/gl2_enc.cpp
@@ -2,6 +2,7 @@
// generated by 'emugen'
+#include <memory>
#include <string.h>
#include "gl2_opcodes.h"
@@ -22,14 +23,24 @@ void glActiveTexture_enc(void *self , GLenum texture)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &texture, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glAttachShader_enc(void *self , GLuint program, GLuint shader)
@@ -37,15 +48,25 @@ void glAttachShader_enc(void *self , GLuint program, GLuint shader)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glAttachShader;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
memcpy(ptr, &shader, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBindAttribLocation_enc(void *self , GLuint program, GLuint index, const GLchar* name)
@@ -53,18 +74,28 @@ void glBindAttribLocation_enc(void *self , GLuint program, GLuint index, const G
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_name = (strlen(name) + 1);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_name + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_name + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBindAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
memcpy(ptr, &index, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_name; ptr += 4;
memcpy(ptr, name, __size_name);ptr += __size_name;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBindBuffer_enc(void *self , GLenum target, GLuint buffer)
@@ -72,15 +103,25 @@ void glBindBuffer_enc(void *self , GLenum target, GLuint buffer)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBindBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &buffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBindFramebuffer_enc(void *self , GLenum target, GLuint framebuffer)
@@ -88,15 +129,25 @@ void glBindFramebuffer_enc(void *self , GLenum target, GLuint framebuffer)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBindFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &framebuffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBindRenderbuffer_enc(void *self , GLenum target, GLuint renderbuffer)
@@ -104,15 +155,25 @@ void glBindRenderbuffer_enc(void *self , GLenum target, GLuint renderbuffer)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBindRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &renderbuffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBindTexture_enc(void *self , GLenum target, GLuint texture)
@@ -120,15 +181,25 @@ void glBindTexture_enc(void *self , GLenum target, GLuint texture)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBindTexture;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &texture, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBlendColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
@@ -136,17 +207,27 @@ void glBlendColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue,
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBlendColor;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &red, 4); ptr += 4;
memcpy(ptr, &green, 4); ptr += 4;
memcpy(ptr, &blue, 4); ptr += 4;
memcpy(ptr, &alpha, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBlendEquation_enc(void *self , GLenum mode)
@@ -154,14 +235,24 @@ void glBlendEquation_enc(void *self , GLenum mode)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBlendEquation;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBlendEquationSeparate_enc(void *self , GLenum modeRGB, GLenum modeAlpha)
@@ -169,15 +260,25 @@ void glBlendEquationSeparate_enc(void *self , GLenum modeRGB, GLenum modeAlpha)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBlendEquationSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &modeRGB, 4); ptr += 4;
memcpy(ptr, &modeAlpha, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor)
@@ -185,15 +286,25 @@ void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBlendFunc;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &sfactor, 4); ptr += 4;
memcpy(ptr, &dfactor, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBlendFuncSeparate_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
@@ -201,17 +312,27 @@ void glBlendFuncSeparate_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum s
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBlendFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &srcRGB, 4); ptr += 4;
memcpy(ptr, &dstRGB, 4); ptr += 4;
memcpy(ptr, &srcAlpha, 4); ptr += 4;
memcpy(ptr, &dstAlpha, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
@@ -219,21 +340,39 @@ void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid*
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = ((data != NULL) ? size : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_data + 4 + 1*4;
- ptr = stream->alloc(8 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_data + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4);
+ ptr = buf;
int tmp = OP_glBufferData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_data,4);
- if (data != NULL) stream->writeFully(data, __size_data);
- ptr = stream->alloc(4);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
+ if (data != NULL) {
+ stream->writeFully(data, __size_data);
+ if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
+ }
+ buf = stream->alloc(4);
+ ptr = buf;
memcpy(ptr, &usage, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
}
void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
@@ -241,20 +380,35 @@ void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
- const unsigned int __size_data = size;
+ const unsigned int __size_data = ((data != NULL) ? size : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 1*4;
- ptr = stream->alloc(8 + 4 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4 + 4);
+ ptr = buf;
int tmp = OP_glBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &offset, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_data,4);
- stream->writeFully(data, __size_data);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
+ if (data != NULL) {
+ stream->writeFully(data, __size_data);
+ if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
+ }
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
}
GLenum glCheckFramebufferStatus_enc(void *self , GLenum target)
@@ -262,17 +416,36 @@ GLenum glCheckFramebufferStatus_enc(void *self , GLenum target)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCheckFramebufferStatus;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLenum retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glCheckFramebufferStatus: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -281,14 +454,24 @@ void glClear_enc(void *self , GLbitfield mask)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClear;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mask, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
@@ -296,17 +479,27 @@ void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue,
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClearColor;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &red, 4); ptr += 4;
memcpy(ptr, &green, 4); ptr += 4;
memcpy(ptr, &blue, 4); ptr += 4;
memcpy(ptr, &alpha, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClearDepthf_enc(void *self , GLclampf depth)
@@ -314,14 +507,24 @@ void glClearDepthf_enc(void *self , GLclampf depth)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClearDepthf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &depth, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glClearStencil_enc(void *self , GLint s)
@@ -329,14 +532,24 @@ void glClearStencil_enc(void *self , GLint s)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glClearStencil;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &s, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
@@ -344,17 +557,27 @@ void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 1 + 1 + 1 + 1;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 1 + 1 + 1 + 1;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glColorMask;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &red, 1); ptr += 1;
memcpy(ptr, &green, 1); ptr += 1;
memcpy(ptr, &blue, 1); ptr += 1;
memcpy(ptr, &alpha, 1); ptr += 1;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glCompileShader_enc(void *self , GLuint shader)
@@ -362,14 +585,24 @@ void glCompileShader_enc(void *self , GLuint shader)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCompileShader;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &shader, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
@@ -377,13 +610,19 @@ void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
- ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ ptr = buf;
int tmp = OP_glCompressedTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -392,9 +631,18 @@ void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum
memcpy(ptr, &height, 4); ptr += 4;
memcpy(ptr, &border, 4); ptr += 4;
memcpy(ptr, &imageSize, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_data,4);
- if (data != NULL) stream->writeFully(data, __size_data);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
+ if (data != NULL) {
+ stream->writeFully(data, __size_data);
+ if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
+ }
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
}
void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
@@ -402,13 +650,19 @@ void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLin
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
- const unsigned int __size_data = imageSize;
+ const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
- ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ ptr = buf;
int tmp = OP_glCompressedTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -418,9 +672,18 @@ void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLin
memcpy(ptr, &height, 4); ptr += 4;
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &imageSize, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_data,4);
- stream->writeFully(data, __size_data);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
+ if (data != NULL) {
+ stream->writeFully(data, __size_data);
+ if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
+ }
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
}
void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
@@ -428,12 +691,18 @@ void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum intern
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCopyTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -443,6 +712,10 @@ void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum intern
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
memcpy(ptr, &border, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
@@ -450,12 +723,18 @@ void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoff
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCopyTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -465,6 +744,10 @@ void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoff
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
GLuint glCreateProgram_enc(void *self )
@@ -472,16 +755,35 @@ GLuint glCreateProgram_enc(void *self )
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCreateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
GLuint retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glCreateProgram: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -490,17 +792,36 @@ GLuint glCreateShader_enc(void *self , GLenum type)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCreateShader;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLuint retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glCreateShader: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -509,14 +830,24 @@ void glCullFace_enc(void *self , GLenum mode)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCullFace;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers)
@@ -524,17 +855,27 @@ void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_buffers = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_buffers + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_buffers + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
memcpy(ptr, buffers, __size_buffers);ptr += __size_buffers;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteFramebuffers_enc(void *self , GLsizei n, const GLuint* framebuffers)
@@ -542,17 +883,27 @@ void glDeleteFramebuffers_enc(void *self , GLsizei n, const GLuint* framebuffers
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_framebuffers = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_framebuffers + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_framebuffers + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
memcpy(ptr, framebuffers, __size_framebuffers);ptr += __size_framebuffers;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteProgram_enc(void *self , GLuint program)
@@ -560,14 +911,24 @@ void glDeleteProgram_enc(void *self , GLuint program)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteProgram;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteRenderbuffers_enc(void *self , GLsizei n, const GLuint* renderbuffers)
@@ -575,17 +936,27 @@ void glDeleteRenderbuffers_enc(void *self , GLsizei n, const GLuint* renderbuffe
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_renderbuffers = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_renderbuffers + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_renderbuffers + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
memcpy(ptr, renderbuffers, __size_renderbuffers);ptr += __size_renderbuffers;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteShader_enc(void *self , GLuint shader)
@@ -593,14 +964,24 @@ void glDeleteShader_enc(void *self , GLuint shader)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteShader;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &shader, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures)
@@ -608,17 +989,27 @@ void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_textures = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_textures + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_textures + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteTextures;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_textures; ptr += 4;
memcpy(ptr, textures, __size_textures);ptr += __size_textures;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDepthFunc_enc(void *self , GLenum func)
@@ -626,14 +1017,24 @@ void glDepthFunc_enc(void *self , GLenum func)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDepthFunc;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &func, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDepthMask_enc(void *self , GLboolean flag)
@@ -641,14 +1042,24 @@ void glDepthMask_enc(void *self , GLboolean flag)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 1;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 1;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDepthMask;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &flag, 1); ptr += 1;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar)
@@ -656,15 +1067,25 @@ void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDepthRangef;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &zNear, 4); ptr += 4;
memcpy(ptr, &zFar, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDetachShader_enc(void *self , GLuint program, GLuint shader)
@@ -672,15 +1093,25 @@ void glDetachShader_enc(void *self , GLuint program, GLuint shader)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDetachShader;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
memcpy(ptr, &shader, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDisable_enc(void *self , GLenum cap)
@@ -688,14 +1119,24 @@ void glDisable_enc(void *self , GLenum cap)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDisable;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &cap, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDisableVertexAttribArray_enc(void *self , GLuint index)
@@ -703,14 +1144,24 @@ void glDisableVertexAttribArray_enc(void *self , GLuint index)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDisableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &index, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count)
@@ -718,16 +1169,26 @@ void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glDrawArrays;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
memcpy(ptr, &first, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glEnable_enc(void *self , GLenum cap)
@@ -735,14 +1196,24 @@ void glEnable_enc(void *self , GLenum cap)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glEnable;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &cap, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glEnableVertexAttribArray_enc(void *self , GLuint index)
@@ -750,14 +1221,24 @@ void glEnableVertexAttribArray_enc(void *self , GLuint index)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glEnableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &index, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFinish_enc(void *self )
@@ -765,12 +1246,22 @@ void glFinish_enc(void *self )
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFinish;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
}
@@ -779,12 +1270,22 @@ void glFlush_enc(void *self )
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFlush;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
}
@@ -793,17 +1294,27 @@ void glFramebufferRenderbuffer_enc(void *self , GLenum target, GLenum attachment
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFramebufferRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &attachment, 4); ptr += 4;
memcpy(ptr, &renderbuffertarget, 4); ptr += 4;
memcpy(ptr, &renderbuffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFramebufferTexture2D_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
@@ -811,18 +1322,28 @@ void glFramebufferTexture2D_enc(void *self , GLenum target, GLenum attachment, G
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFramebufferTexture2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &attachment, 4); ptr += 4;
memcpy(ptr, &textarget, 4); ptr += 4;
memcpy(ptr, &texture, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glFrontFace_enc(void *self , GLenum mode)
@@ -830,14 +1351,24 @@ void glFrontFace_enc(void *self , GLenum mode)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFrontFace;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers)
@@ -845,17 +1376,36 @@ void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_buffers = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_buffers + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_buffers + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(buffers, __size_buffers);
+ if (useChecksum) checksumCalculator->addBuffer(buffers, __size_buffers);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGenBuffers: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGenerateMipmap_enc(void *self , GLenum target)
@@ -863,14 +1413,24 @@ void glGenerateMipmap_enc(void *self , GLenum target)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenerateMipmap;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGenFramebuffers_enc(void *self , GLsizei n, GLuint* framebuffers)
@@ -878,17 +1438,36 @@ void glGenFramebuffers_enc(void *self , GLsizei n, GLuint* framebuffers)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_framebuffers = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_framebuffers + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_framebuffers + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(framebuffers, __size_framebuffers);
+ if (useChecksum) checksumCalculator->addBuffer(framebuffers, __size_framebuffers);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGenFramebuffers: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGenRenderbuffers_enc(void *self , GLsizei n, GLuint* renderbuffers)
@@ -896,17 +1475,36 @@ void glGenRenderbuffers_enc(void *self , GLsizei n, GLuint* renderbuffers)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_renderbuffers = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_renderbuffers + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_renderbuffers + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(renderbuffers, __size_renderbuffers);
+ if (useChecksum) checksumCalculator->addBuffer(renderbuffers, __size_renderbuffers);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGenRenderbuffers: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGenTextures_enc(void *self , GLsizei n, GLuint* textures)
@@ -914,17 +1512,36 @@ void glGenTextures_enc(void *self , GLsizei n, GLuint* textures)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_textures = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_textures + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_textures + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenTextures;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_textures; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(textures, __size_textures);
+ if (useChecksum) checksumCalculator->addBuffer(textures, __size_textures);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGenTextures: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetActiveAttrib_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
@@ -932,16 +1549,22 @@ void glGetActiveAttrib_enc(void *self , GLuint program, GLuint index, GLsizei bu
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
const unsigned int __size_size = ((size != NULL) ? (sizeof(GLint)) : 0);
const unsigned int __size_type = ((type != NULL) ? (sizeof(GLenum)) : 0);
const unsigned int __size_name = ((name != NULL) ? bufsize : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + __size_length + __size_size + __size_type + __size_name + 4*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_length + __size_size + __size_type + __size_name + 4*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetActiveAttrib;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
memcpy(ptr, &index, 4); ptr += 4;
@@ -950,10 +1573,34 @@ void glGetActiveAttrib_enc(void *self , GLuint program, GLuint index, GLsizei bu
*(unsigned int *)(ptr) = __size_size; ptr += 4;
*(unsigned int *)(ptr) = __size_type; ptr += 4;
*(unsigned int *)(ptr) = __size_name; ptr += 4;
- if (length != NULL) stream->readback(length, __size_length);
- if (size != NULL) stream->readback(size, __size_size);
- if (type != NULL) stream->readback(type, __size_type);
- if (name != NULL) stream->readback(name, __size_name);
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+ if (length != NULL) {
+ stream->readback(length, __size_length);
+ if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
+ }
+ if (size != NULL) {
+ stream->readback(size, __size_size);
+ if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
+ }
+ if (type != NULL) {
+ stream->readback(type, __size_type);
+ if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
+ }
+ if (name != NULL) {
+ stream->readback(name, __size_name);
+ if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
+ }
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetActiveAttrib: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetActiveUniform_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
@@ -961,16 +1608,22 @@ void glGetActiveUniform_enc(void *self , GLuint program, GLuint index, GLsizei b
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
const unsigned int __size_size = ((size != NULL) ? (sizeof(GLint)) : 0);
const unsigned int __size_type = ((type != NULL) ? (sizeof(GLenum)) : 0);
const unsigned int __size_name = ((name != NULL) ? bufsize : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + __size_length + __size_size + __size_type + __size_name + 4*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_length + __size_size + __size_type + __size_name + 4*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetActiveUniform;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
memcpy(ptr, &index, 4); ptr += 4;
@@ -979,10 +1632,34 @@ void glGetActiveUniform_enc(void *self , GLuint program, GLuint index, GLsizei b
*(unsigned int *)(ptr) = __size_size; ptr += 4;
*(unsigned int *)(ptr) = __size_type; ptr += 4;
*(unsigned int *)(ptr) = __size_name; ptr += 4;
- if (length != NULL) stream->readback(length, __size_length);
- if (size != NULL) stream->readback(size, __size_size);
- if (type != NULL) stream->readback(type, __size_type);
- if (name != NULL) stream->readback(name, __size_name);
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+ if (length != NULL) {
+ stream->readback(length, __size_length);
+ if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
+ }
+ if (size != NULL) {
+ stream->readback(size, __size_size);
+ if (useChecksum) checksumCalculator->addBuffer(size, __size_size);
+ }
+ if (type != NULL) {
+ stream->readback(type, __size_type);
+ if (useChecksum) checksumCalculator->addBuffer(type, __size_type);
+ }
+ if (name != NULL) {
+ stream->readback(name, __size_name);
+ if (useChecksum) checksumCalculator->addBuffer(name, __size_name);
+ }
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetActiveUniform: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetAttachedShaders_enc(void *self , GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
@@ -990,21 +1667,43 @@ void glGetAttachedShaders_enc(void *self , GLuint program, GLsizei maxcount, GLs
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_count = ((count != NULL) ? (sizeof(GLsizei)) : 0);
const unsigned int __size_shaders = (maxcount*sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_count + __size_shaders + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_count + __size_shaders + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetAttachedShaders;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
memcpy(ptr, &maxcount, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_count; ptr += 4;
*(unsigned int *)(ptr) = __size_shaders; ptr += 4;
- if (count != NULL) stream->readback(count, __size_count);
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+ if (count != NULL) {
+ stream->readback(count, __size_count);
+ if (useChecksum) checksumCalculator->addBuffer(count, __size_count);
+ }
stream->readback(shaders, __size_shaders);
+ if (useChecksum) checksumCalculator->addBuffer(shaders, __size_shaders);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetAttachedShaders: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
int glGetAttribLocation_enc(void *self , GLuint program, const GLchar* name)
@@ -1012,20 +1711,39 @@ int glGetAttribLocation_enc(void *self , GLuint program, const GLchar* name)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_name = (strlen(name) + 1);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_name + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_name; ptr += 4;
memcpy(ptr, name, __size_name);ptr += __size_name;
+ 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) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetAttribLocation: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1034,17 +1752,36 @@ void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLboolean));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetBooleanv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetBooleanv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
@@ -1052,18 +1789,37 @@ void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint*
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetBufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetBufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
GLenum glGetError_enc(void *self )
@@ -1071,16 +1827,35 @@ GLenum glGetError_enc(void *self )
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetError;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
GLenum retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetError: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1089,17 +1864,36 @@ void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetFloatv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetFloatv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetFramebufferAttachmentParameteriv_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params)
@@ -1107,19 +1901,38 @@ void glGetFramebufferAttachmentParameteriv_enc(void *self , GLenum target, GLenu
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetFramebufferAttachmentParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &attachment, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetFramebufferAttachmentParameteriv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetIntegerv_enc(void *self , GLenum pname, GLint* params)
@@ -1127,17 +1940,36 @@ void glGetIntegerv_enc(void *self , GLenum pname, GLint* params)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetIntegerv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetIntegerv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetProgramiv_enc(void *self , GLuint program, GLenum pname, GLint* params)
@@ -1145,18 +1977,37 @@ void glGetProgramiv_enc(void *self , GLuint program, GLenum pname, GLint* params
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = sizeof(GLint);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetProgramiv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetProgramiv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetProgramInfoLog_enc(void *self , GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
@@ -1164,21 +2015,43 @@ void glGetProgramInfoLog_enc(void *self , GLuint program, GLsizei bufsize, GLsiz
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_length = ((length != NULL) ? sizeof(GLsizei) : 0);
const unsigned int __size_infolog = bufsize;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_length + __size_infolog + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_length + __size_infolog + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetProgramInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
memcpy(ptr, &bufsize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_length; ptr += 4;
*(unsigned int *)(ptr) = __size_infolog; ptr += 4;
- if (length != NULL) stream->readback(length, __size_length);
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+ if (length != NULL) {
+ stream->readback(length, __size_length);
+ if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
+ }
stream->readback(infolog, __size_infolog);
+ if (useChecksum) checksumCalculator->addBuffer(infolog, __size_infolog);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetProgramInfoLog: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetRenderbufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
@@ -1186,18 +2059,37 @@ void glGetRenderbufferParameteriv_enc(void *self , GLenum target, GLenum pname,
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = sizeof(GLint);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetRenderbufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetRenderbufferParameteriv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetShaderiv_enc(void *self , GLuint shader, GLenum pname, GLint* params)
@@ -1205,18 +2097,37 @@ void glGetShaderiv_enc(void *self , GLuint shader, GLenum pname, GLint* params)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = sizeof(GLint);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetShaderiv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &shader, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetShaderiv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetShaderInfoLog_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
@@ -1224,21 +2135,43 @@ void glGetShaderInfoLog_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
const unsigned int __size_infolog = bufsize;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_length + __size_infolog + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_length + __size_infolog + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetShaderInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &shader, 4); ptr += 4;
memcpy(ptr, &bufsize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_length; ptr += 4;
*(unsigned int *)(ptr) = __size_infolog; ptr += 4;
- if (length != NULL) stream->readback(length, __size_length);
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+ if (length != NULL) {
+ stream->readback(length, __size_length);
+ if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
+ }
stream->readback(infolog, __size_infolog);
+ if (useChecksum) checksumCalculator->addBuffer(infolog, __size_infolog);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetShaderInfoLog: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetShaderPrecisionFormat_enc(void *self , GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
@@ -1246,21 +2179,41 @@ void glGetShaderPrecisionFormat_enc(void *self , GLenum shadertype, GLenum preci
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_range = (2 * sizeof(GLint));
const unsigned int __size_precision = (sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_range + __size_precision + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_range + __size_precision + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetShaderPrecisionFormat;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &shadertype, 4); ptr += 4;
memcpy(ptr, &precisiontype, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_range; ptr += 4;
*(unsigned int *)(ptr) = __size_precision; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(range, __size_range);
+ if (useChecksum) checksumCalculator->addBuffer(range, __size_range);
stream->readback(precision, __size_precision);
+ if (useChecksum) checksumCalculator->addBuffer(precision, __size_precision);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetShaderPrecisionFormat: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetShaderSource_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
@@ -1268,21 +2221,43 @@ void glGetShaderSource_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei*
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_length = ((length != NULL) ? (sizeof(GLsizei)) : 0);
const unsigned int __size_source = bufsize;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_length + __size_source + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_length + __size_source + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetShaderSource;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &shader, 4); ptr += 4;
memcpy(ptr, &bufsize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_length; ptr += 4;
*(unsigned int *)(ptr) = __size_source; ptr += 4;
- if (length != NULL) stream->readback(length, __size_length);
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+ if (length != NULL) {
+ stream->readback(length, __size_length);
+ if (useChecksum) checksumCalculator->addBuffer(length, __size_length);
+ }
stream->readback(source, __size_source);
+ if (useChecksum) checksumCalculator->addBuffer(source, __size_source);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetShaderSource: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params)
@@ -1290,18 +2265,37 @@ void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat*
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetTexParameterfv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
@@ -1309,18 +2303,37 @@ void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* pa
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetTexParameteriv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetUniformfv_enc(void *self , GLuint program, GLint location, GLfloat* params)
@@ -1328,18 +2341,37 @@ void glGetUniformfv_enc(void *self , GLuint program, GLint location, GLfloat* pa
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = glSizeof(glesv2_enc::uniformType(self, program, location));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetUniformfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetUniformfv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetUniformiv_enc(void *self , GLuint program, GLint location, GLint* params)
@@ -1347,18 +2379,37 @@ void glGetUniformiv_enc(void *self , GLuint program, GLint location, GLint* para
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = glSizeof(glesv2_enc::uniformType(self, program, location));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetUniformiv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetUniformiv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
int glGetUniformLocation_enc(void *self , GLuint program, const GLchar* name)
@@ -1366,20 +2417,39 @@ int glGetUniformLocation_enc(void *self , GLuint program, const GLchar* name)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_name = (strlen(name) + 1);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_name + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_name + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetUniformLocation;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_name; ptr += 4;
memcpy(ptr, name, __size_name);ptr += __size_name;
+ 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) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetUniformLocation: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1388,18 +2458,37 @@ void glGetVertexAttribfv_enc(void *self , GLuint index, GLenum pname, GLfloat* p
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetVertexAttribfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &index, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetVertexAttribfv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glGetVertexAttribiv_enc(void *self , GLuint index, GLenum pname, GLint* params)
@@ -1407,18 +2496,37 @@ void glGetVertexAttribiv_enc(void *self , GLuint index, GLenum pname, GLint* par
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetVertexAttribiv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &index, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(params, __size_params);
+ if (useChecksum) checksumCalculator->addBuffer(params, __size_params);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetVertexAttribiv: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glHint_enc(void *self , GLenum target, GLenum mode)
@@ -1426,15 +2534,25 @@ void glHint_enc(void *self , GLenum target, GLenum mode)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glHint;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
GLboolean glIsBuffer_enc(void *self , GLuint buffer)
@@ -1442,17 +2560,36 @@ GLboolean glIsBuffer_enc(void *self , GLuint buffer)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &buffer, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsBuffer: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1461,17 +2598,36 @@ GLboolean glIsEnabled_enc(void *self , GLenum cap)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsEnabled;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &cap, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsEnabled: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1480,17 +2636,36 @@ GLboolean glIsFramebuffer_enc(void *self , GLuint framebuffer)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &framebuffer, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsFramebuffer: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1499,17 +2674,36 @@ GLboolean glIsProgram_enc(void *self , GLuint program)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsProgram;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsProgram: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1518,17 +2712,36 @@ GLboolean glIsRenderbuffer_enc(void *self , GLuint renderbuffer)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &renderbuffer, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsRenderbuffer: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1537,17 +2750,36 @@ GLboolean glIsShader_enc(void *self , GLuint shader)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsShader;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &shader, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsShader: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1556,17 +2788,36 @@ GLboolean glIsTexture_enc(void *self , GLuint texture)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsTexture;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &texture, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsTexture: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -1575,14 +2826,24 @@ void glLineWidth_enc(void *self , GLfloat width)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLineWidth;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glLinkProgram_enc(void *self , GLuint program)
@@ -1590,14 +2851,24 @@ void glLinkProgram_enc(void *self , GLuint program)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glLinkProgram;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPixelStorei_enc(void *self , GLenum pname, GLint param)
@@ -1605,15 +2876,25 @@ void glPixelStorei_enc(void *self , GLenum pname, GLint param)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPixelStorei;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units)
@@ -1621,15 +2902,25 @@ void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glPolygonOffset;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &factor, 4); ptr += 4;
memcpy(ptr, &units, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
@@ -1637,13 +2928,19 @@ void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei heig
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_pixels = glesv2_enc::pixelDataSize(self, width, height, format, type, 1);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glReadPixels;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
@@ -1652,7 +2949,20 @@ void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei heig
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_pixels; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glReadPixels: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glReleaseShaderCompiler_enc(void *self )
@@ -1660,12 +2970,22 @@ void glReleaseShaderCompiler_enc(void *self )
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glReleaseShaderCompiler;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
}
@@ -1674,17 +2994,27 @@ void glRenderbufferStorage_enc(void *self , GLenum target, GLenum internalformat
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glRenderbufferStorage;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &internalformat, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert)
@@ -1692,15 +3022,25 @@ void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 1;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 1;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glSampleCoverage;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &value, 4); ptr += 4;
memcpy(ptr, &invert, 1); ptr += 1;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
@@ -1708,17 +3048,27 @@ void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glScissor;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask)
@@ -1726,16 +3076,26 @@ void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glStencilFunc;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &func, 4); ptr += 4;
memcpy(ptr, &ref, 4); ptr += 4;
memcpy(ptr, &mask, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glStencilFuncSeparate_enc(void *self , GLenum face, GLenum func, GLint ref, GLuint mask)
@@ -1743,17 +3103,27 @@ void glStencilFuncSeparate_enc(void *self , GLenum face, GLenum func, GLint ref,
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glStencilFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &func, 4); ptr += 4;
memcpy(ptr, &ref, 4); ptr += 4;
memcpy(ptr, &mask, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glStencilMask_enc(void *self , GLuint mask)
@@ -1761,14 +3131,24 @@ void glStencilMask_enc(void *self , GLuint mask)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glStencilMask;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mask, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glStencilMaskSeparate_enc(void *self , GLenum face, GLuint mask)
@@ -1776,15 +3156,25 @@ void glStencilMaskSeparate_enc(void *self , GLenum face, GLuint mask)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glStencilMaskSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &mask, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass)
@@ -1792,16 +3182,26 @@ void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glStencilOp;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &fail, 4); ptr += 4;
memcpy(ptr, &zfail, 4); ptr += 4;
memcpy(ptr, &zpass, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glStencilOpSeparate_enc(void *self , GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
@@ -1809,17 +3209,27 @@ void glStencilOpSeparate_enc(void *self , GLenum face, GLenum fail, GLenum zfail
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glStencilOpSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &face, 4); ptr += 4;
memcpy(ptr, &fail, 4); ptr += 4;
memcpy(ptr, &zfail, 4); ptr += 4;
memcpy(ptr, &zpass, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
@@ -1827,13 +3237,19 @@ void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalfor
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_pixels = ((pixels != NULL) ? glesv2_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
- ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ ptr = buf;
int tmp = OP_glTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -1843,9 +3259,18 @@ void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalfor
memcpy(ptr, &border, 4); ptr += 4;
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_pixels,4);
- if (pixels != NULL) stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
+ if (pixels != NULL) {
+ stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
+ }
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
}
void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
@@ -1853,16 +3278,26 @@ void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
@@ -1870,18 +3305,28 @@ void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloa
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
@@ -1889,16 +3334,26 @@ void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glTexParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
@@ -1906,18 +3361,28 @@ void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint*
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_params = (glUtilsParamSize(pname) * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_params + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &pname, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_params; ptr += 4;
memcpy(ptr, params, __size_params);ptr += __size_params;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
@@ -1925,13 +3390,19 @@ void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset,
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_pixels = ((pixels != NULL) ? glesv2_enc::pixelDataSize(self, width, height, format, type, 0) : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
- ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ ptr = buf;
int tmp = OP_glTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -1941,9 +3412,18 @@ void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset,
memcpy(ptr, &height, 4); ptr += 4;
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_pixels,4);
- if (pixels != NULL) stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
+ if (pixels != NULL) {
+ stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
+ }
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
}
void glUniform1f_enc(void *self , GLint location, GLfloat x)
@@ -1951,15 +3431,25 @@ void glUniform1f_enc(void *self , GLint location, GLfloat x)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform1f;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform1fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
@@ -1967,18 +3457,28 @@ void glUniform1fv_enc(void *self , GLint location, GLsizei count, const GLfloat*
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_v = (count * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform1fv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_v; ptr += 4;
memcpy(ptr, v, __size_v);ptr += __size_v;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform1i_enc(void *self , GLint location, GLint x)
@@ -1986,15 +3486,25 @@ void glUniform1i_enc(void *self , GLint location, GLint x)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform1i;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform1iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
@@ -2002,18 +3512,28 @@ void glUniform1iv_enc(void *self , GLint location, GLsizei count, const GLint* v
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_v = (count * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform1iv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_v; ptr += 4;
memcpy(ptr, v, __size_v);ptr += __size_v;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform2f_enc(void *self , GLint location, GLfloat x, GLfloat y)
@@ -2021,16 +3541,26 @@ void glUniform2f_enc(void *self , GLint location, GLfloat x, GLfloat y)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glUniform2f;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform2fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
@@ -2038,18 +3568,28 @@ void glUniform2fv_enc(void *self , GLint location, GLsizei count, const GLfloat*
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_v = (count * 2 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform2fv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_v; ptr += 4;
memcpy(ptr, v, __size_v);ptr += __size_v;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform2i_enc(void *self , GLint location, GLint x, GLint y)
@@ -2057,16 +3597,26 @@ void glUniform2i_enc(void *self , GLint location, GLint x, GLint y)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glUniform2i;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform2iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
@@ -2074,18 +3624,28 @@ void glUniform2iv_enc(void *self , GLint location, GLsizei count, const GLint* v
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_v = (count * 2 * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform2iv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_v; ptr += 4;
memcpy(ptr, v, __size_v);ptr += __size_v;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform3f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z)
@@ -2093,17 +3653,27 @@ void glUniform3f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform3f;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform3fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
@@ -2111,18 +3681,28 @@ void glUniform3fv_enc(void *self , GLint location, GLsizei count, const GLfloat*
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_v = (count * 3 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform3fv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_v; ptr += 4;
memcpy(ptr, v, __size_v);ptr += __size_v;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform3i_enc(void *self , GLint location, GLint x, GLint y, GLint z)
@@ -2130,17 +3710,27 @@ void glUniform3i_enc(void *self , GLint location, GLint x, GLint y, GLint z)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform3i;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform3iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
@@ -2148,18 +3738,28 @@ void glUniform3iv_enc(void *self , GLint location, GLsizei count, const GLint* v
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_v = (3 * count * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform3iv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_v; ptr += 4;
memcpy(ptr, v, __size_v);ptr += __size_v;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform4f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
@@ -2167,18 +3767,28 @@ void glUniform4f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform4f;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
memcpy(ptr, &w, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform4fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
@@ -2186,18 +3796,28 @@ void glUniform4fv_enc(void *self , GLint location, GLsizei count, const GLfloat*
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_v = (4 * count * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform4fv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_v; ptr += 4;
memcpy(ptr, v, __size_v);ptr += __size_v;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform4i_enc(void *self , GLint location, GLint x, GLint y, GLint z, GLint w)
@@ -2205,18 +3825,28 @@ void glUniform4i_enc(void *self , GLint location, GLint x, GLint y, GLint z, GLi
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform4i;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
memcpy(ptr, &w, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniform4iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
@@ -2224,18 +3854,28 @@ void glUniform4iv_enc(void *self , GLint location, GLsizei count, const GLint* v
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_v = (4 * count * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_v + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniform4iv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_v; ptr += 4;
memcpy(ptr, v, __size_v);ptr += __size_v;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniformMatrix2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
@@ -2243,19 +3883,29 @@ void glUniformMatrix2fv_enc(void *self , GLint location, GLsizei count, GLboolea
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_value = (count * 4 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 1 + __size_value + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniformMatrix2fv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
memcpy(ptr, &transpose, 1); ptr += 1;
*(unsigned int *)(ptr) = __size_value; ptr += 4;
memcpy(ptr, value, __size_value);ptr += __size_value;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniformMatrix3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
@@ -2263,19 +3913,29 @@ void glUniformMatrix3fv_enc(void *self , GLint location, GLsizei count, GLboolea
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_value = (count * 9 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 1 + __size_value + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniformMatrix3fv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
memcpy(ptr, &transpose, 1); ptr += 1;
*(unsigned int *)(ptr) = __size_value; ptr += 4;
memcpy(ptr, value, __size_value);ptr += __size_value;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUniformMatrix4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
@@ -2283,19 +3943,29 @@ void glUniformMatrix4fv_enc(void *self , GLint location, GLsizei count, GLboolea
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_value = (count * 16 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 1 + __size_value + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 1 + __size_value + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUniformMatrix4fv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &location, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
memcpy(ptr, &transpose, 1); ptr += 1;
*(unsigned int *)(ptr) = __size_value; ptr += 4;
memcpy(ptr, value, __size_value);ptr += __size_value;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glUseProgram_enc(void *self , GLuint program)
@@ -2303,14 +3973,24 @@ void glUseProgram_enc(void *self , GLuint program)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUseProgram;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glValidateProgram_enc(void *self , GLuint program)
@@ -2318,14 +3998,24 @@ void glValidateProgram_enc(void *self , GLuint program)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glValidateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &program, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glVertexAttrib1f_enc(void *self , GLuint indx, GLfloat x)
@@ -2333,15 +4023,25 @@ void glVertexAttrib1f_enc(void *self , GLuint indx, GLfloat x)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glVertexAttrib1f;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &indx, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glVertexAttrib1fv_enc(void *self , GLuint indx, const GLfloat* values)
@@ -2349,17 +4049,27 @@ void glVertexAttrib1fv_enc(void *self , GLuint indx, const GLfloat* values)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_values = (sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_values + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glVertexAttrib1fv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &indx, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_values; ptr += 4;
memcpy(ptr, values, __size_values);ptr += __size_values;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glVertexAttrib2f_enc(void *self , GLuint indx, GLfloat x, GLfloat y)
@@ -2367,16 +4077,26 @@ void glVertexAttrib2f_enc(void *self , GLuint indx, GLfloat x, GLfloat y)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_glVertexAttrib2f;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &indx, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glVertexAttrib2fv_enc(void *self , GLuint indx, const GLfloat* values)
@@ -2384,17 +4104,27 @@ void glVertexAttrib2fv_enc(void *self , GLuint indx, const GLfloat* values)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_values = (2 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_values + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glVertexAttrib2fv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &indx, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_values; ptr += 4;
memcpy(ptr, values, __size_values);ptr += __size_values;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glVertexAttrib3f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z)
@@ -2402,17 +4132,27 @@ void glVertexAttrib3f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloa
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glVertexAttrib3f;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &indx, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glVertexAttrib3fv_enc(void *self , GLuint indx, const GLfloat* values)
@@ -2420,17 +4160,27 @@ void glVertexAttrib3fv_enc(void *self , GLuint indx, const GLfloat* values)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_values = (3 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_values + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glVertexAttrib3fv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &indx, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_values; ptr += 4;
memcpy(ptr, values, __size_values);ptr += __size_values;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glVertexAttrib4f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
@@ -2438,18 +4188,28 @@ void glVertexAttrib4f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloa
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glVertexAttrib4f;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &indx, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &z, 4); ptr += 4;
memcpy(ptr, &w, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glVertexAttrib4fv_enc(void *self , GLuint indx, const GLfloat* values)
@@ -2457,17 +4217,27 @@ void glVertexAttrib4fv_enc(void *self , GLuint indx, const GLfloat* values)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_values = (4 * sizeof(GLfloat));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_values + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_values + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glVertexAttrib4fv;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &indx, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_values; ptr += 4;
memcpy(ptr, values, __size_values);ptr += __size_values;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
@@ -2475,17 +4245,27 @@ void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glViewport;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image)
@@ -2493,15 +4273,25 @@ void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glEGLImageTargetTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &image, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image)
@@ -2509,15 +4299,25 @@ void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeg
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glEGLImageTargetRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &image, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
GLboolean glUnmapBufferOES_enc(void *self , GLenum target)
@@ -2525,17 +4325,36 @@ GLboolean glUnmapBufferOES_enc(void *self , GLenum target)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glUnmapBufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glUnmapBufferOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -2544,13 +4363,19 @@ void glTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum interna
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_pixels = ((pixels != NULL) ? glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
- ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ ptr = buf;
int tmp = OP_glTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -2561,9 +4386,18 @@ void glTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum interna
memcpy(ptr, &border, 4); ptr += 4;
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_pixels,4);
- if (pixels != NULL) stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
+ if (pixels != NULL) {
+ stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
+ }
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
}
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)
@@ -2571,13 +4405,19 @@ void glTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffs
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
- const unsigned int __size_pixels = glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0);
+ const unsigned int __size_pixels = ((pixels != NULL) ? glesv2_enc::pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
- ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ ptr = buf;
int tmp = OP_glTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -2589,9 +4429,18 @@ void glTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffs
memcpy(ptr, &depth, 4); ptr += 4;
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_pixels,4);
- stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
+ if (pixels != NULL) {
+ stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
+ }
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
}
void glCopyTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
@@ -2599,12 +4448,18 @@ void glCopyTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint x
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glCopyTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -2615,6 +4470,10 @@ void glCopyTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint x
memcpy(ptr, &y, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glCompressedTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
@@ -2622,13 +4481,19 @@ void glCompressedTexImage3DOES_enc(void *self , GLenum target, GLint level, GLen
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
- const unsigned int __size_data = imageSize;
+ const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
- ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ ptr = buf;
int tmp = OP_glCompressedTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -2638,9 +4503,18 @@ void glCompressedTexImage3DOES_enc(void *self , GLenum target, GLint level, GLen
memcpy(ptr, &depth, 4); ptr += 4;
memcpy(ptr, &border, 4); ptr += 4;
memcpy(ptr, &imageSize, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_data,4);
- stream->writeFully(data, __size_data);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
+ if (data != NULL) {
+ stream->writeFully(data, __size_data);
+ if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
+ }
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
}
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)
@@ -2648,13 +4522,19 @@ void glCompressedTexSubImage3DOES_enc(void *self , GLenum target, GLint level, G
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
- const unsigned int __size_data = imageSize;
+ const unsigned int __size_data = ((data != NULL) ? imageSize : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
- ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ ptr = buf;
int tmp = OP_glCompressedTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
@@ -2666,9 +4546,18 @@ void glCompressedTexSubImage3DOES_enc(void *self , GLenum target, GLint level, G
memcpy(ptr, &depth, 4); ptr += 4;
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &imageSize, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_data,4);
- stream->writeFully(data, __size_data);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_data,4);
+ if (data != NULL) {
+ stream->writeFully(data, __size_data);
+ if (useChecksum) checksumCalculator->addBuffer(data, __size_data);
+ }
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
}
void glFramebufferTexture3DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
@@ -2676,12 +4565,18 @@ void glFramebufferTexture3DOES_enc(void *self , GLenum target, GLenum attachment
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFramebufferTexture3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &attachment, 4); ptr += 4;
@@ -2689,6 +4584,10 @@ void glFramebufferTexture3DOES_enc(void *self , GLenum target, GLenum attachment
memcpy(ptr, &texture, 4); ptr += 4;
memcpy(ptr, &level, 4); ptr += 4;
memcpy(ptr, &zoffset, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glBindVertexArrayOES_enc(void *self , GLuint array)
@@ -2696,14 +4595,24 @@ void glBindVertexArrayOES_enc(void *self , GLuint array)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glBindVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &array, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays)
@@ -2711,17 +4620,27 @@ void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_arrays = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_arrays + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDeleteVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays)
@@ -2729,17 +4648,36 @@ void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_arrays = (n * sizeof(GLuint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_arrays + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_arrays + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGenVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &n, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(arrays, __size_arrays);
+ if (useChecksum) checksumCalculator->addBuffer(arrays, __size_arrays);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGenVertexArraysOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
GLboolean glIsVertexArrayOES_enc(void *self , GLuint array)
@@ -2747,17 +4685,36 @@ GLboolean glIsVertexArrayOES_enc(void *self , GLuint array)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glIsVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &array, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
GLboolean retval;
stream->readback(&retval, 1);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 1);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glIsVertexArrayOES: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -2766,18 +4723,28 @@ void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachme
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_attachments = (numAttachments * sizeof(GLenum));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + __size_attachments + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + __size_attachments + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDiscardFramebufferEXT;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &target, 4); ptr += 4;
memcpy(ptr, &numAttachments, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_attachments; ptr += 4;
memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glVertexAttribPointerData_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void* data, GLuint datalen)
@@ -2785,13 +4752,19 @@ void glVertexAttribPointerData_enc(void *self , GLuint indx, GLint size, GLenum
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = datalen;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 1 + 4 + __size_data + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + __size_data + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glVertexAttribPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &indx, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
@@ -2801,6 +4774,10 @@ void glVertexAttribPointerData_enc(void *self , GLuint indx, GLint size, GLenum
*(unsigned int *)(ptr) = __size_data; ptr += 4;
glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
memcpy(ptr, &datalen, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glVertexAttribPointerOffset_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint offset)
@@ -2808,12 +4785,18 @@ void glVertexAttribPointerOffset_enc(void *self , GLuint indx, GLint size, GLenu
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 1 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 1 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glVertexAttribPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &indx, 4); ptr += 4;
memcpy(ptr, &size, 4); ptr += 4;
@@ -2821,6 +4804,10 @@ void glVertexAttribPointerOffset_enc(void *self , GLuint indx, GLint size, GLenu
memcpy(ptr, &normalized, 1); ptr += 1;
memcpy(ptr, &stride, 4); ptr += 4;
memcpy(ptr, &offset, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
@@ -2828,17 +4815,27 @@ void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum ty
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDrawElementsOffset;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
memcpy(ptr, &offset, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
@@ -2846,13 +4843,19 @@ void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_data = datalen;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glDrawElementsData;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &mode, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
@@ -2860,6 +4863,10 @@ void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type
*(unsigned int *)(ptr) = __size_data; ptr += 4;
memcpy(ptr, data, __size_data);ptr += __size_data;
memcpy(ptr, &datalen, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats)
@@ -2867,17 +4874,36 @@ void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats)
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_formats = (count * sizeof(GLint));
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_formats + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_formats + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glGetCompressedTextureFormats;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &count, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_formats; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(formats, __size_formats);
+ if (useChecksum) checksumCalculator->addBuffer(formats, __size_formats);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glGetCompressedTextureFormats: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
void glShaderString_enc(void *self , GLuint shader, const GLchar* string, GLsizei len)
@@ -2885,18 +4911,28 @@ void glShaderString_enc(void *self , GLuint shader, const GLchar* string, GLsize
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
const unsigned int __size_string = len;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_string + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_string + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glShaderString;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &shader, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_string; ptr += 4;
memcpy(ptr, string, __size_string);ptr += __size_string;
memcpy(ptr, &len, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
int glFinishRoundTrip_enc(void *self )
@@ -2904,24 +4940,44 @@ int glFinishRoundTrip_enc(void *self )
gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
IOStream *stream = ctx->m_stream;
+ ChecksumCalculator *checksumCalculator = ctx->m_checksumCalculator;
+ bool useChecksum = checksumCalculator->getVersion() > 0;
unsigned char *ptr;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_glFinishRoundTrip;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+
+ 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) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("glFinishRoundTrip: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
} // namespace
-gl2_encoder_context_t::gl2_encoder_context_t(IOStream *stream)
+gl2_encoder_context_t::gl2_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator)
{
m_stream = stream;
+ m_checksumCalculator = checksumCalculator;
this->glActiveTexture = &glActiveTexture_enc;
this->glAttachShader = &glAttachShader_enc;
diff --git a/opengl/system/GLESv2_enc/gl2_enc.h b/opengl/system/GLESv2_enc/gl2_enc.h
index 6f83d3e..760d729 100644
--- a/opengl/system/GLESv2_enc/gl2_enc.h
+++ b/opengl/system/GLESv2_enc/gl2_enc.h
@@ -5,6 +5,7 @@
#define GUARD_gl2_encoder_context_t
#include "IOStream.h"
+#include "ChecksumCalculator.h"
#include "gl2_client_context.h"
@@ -15,8 +16,9 @@
struct gl2_encoder_context_t : public gl2_client_context_t {
IOStream *m_stream;
+ ChecksumCalculator *m_checksumCalculator;
- gl2_encoder_context_t(IOStream *stream);
+ gl2_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator);
};
#endif // GUARD_gl2_encoder_context_t \ No newline at end of file
diff --git a/opengl/shared/OpenglCodecCommon/TimeUtils.h b/opengl/system/OpenglSystemCommon/EGLImage.h
index bc4fd1c..5edb44e 100644
--- a/opengl/shared/OpenglCodecCommon/TimeUtils.h
+++ b/opengl/system/OpenglSystemCommon/EGLImage.h
@@ -1,5 +1,5 @@
/*
-* Copyright (C) 2011 The Android Open Source Project
+* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,10 +13,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#ifndef _TIME_UTILS_H
-#define _TIME_UTILS_H
+#ifndef __COMMON_EGL_IMAGE_H
+#define __COMMON_EGL_IMAGE_H
-long long GetCurrentTimeMS();
-void TimeSleepMS(int p_mili);
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+#include <GLES/gl.h>
+#include <system/window.h>
+
+struct EGLImage_t
+{
+ EGLDisplay dpy;
+ EGLenum target;
+
+ union
+ {
+ android_native_buffer_t *native_buffer;
+ uint32_t host_egl_image;
+ };
+};
#endif
diff --git a/opengl/system/OpenglSystemCommon/HostConnection.cpp b/opengl/system/OpenglSystemCommon/HostConnection.cpp
index 940f5ae..0a30d27 100644
--- a/opengl/system/OpenglSystemCommon/HostConnection.cpp
+++ b/opengl/system/OpenglSystemCommon/HostConnection.cpp
@@ -20,6 +20,7 @@
#include <cutils/log.h>
#include "GLEncoder.h"
#include "GL2Encoder.h"
+#include <memory>
#define STREAM_BUFFER_SIZE 4*1024*1024
#define STREAM_PORT_NUM 22468
@@ -31,7 +32,8 @@ HostConnection::HostConnection() :
m_stream(NULL),
m_glEnc(NULL),
m_gl2Enc(NULL),
- m_rcEnc(NULL)
+ m_rcEnc(NULL),
+ m_checksumHelper()
{
}
@@ -109,7 +111,7 @@ HostConnection *HostConnection::get()
GLEncoder *HostConnection::glEncoder()
{
if (!m_glEnc) {
- m_glEnc = new GLEncoder(m_stream);
+ m_glEnc = new GLEncoder(m_stream, checksumHelper());
DBG("HostConnection::glEncoder new encoder %p, tid %d", m_glEnc, gettid());
m_glEnc->setContextAccessor(s_getGLContext);
}
@@ -119,7 +121,7 @@ GLEncoder *HostConnection::glEncoder()
GL2Encoder *HostConnection::gl2Encoder()
{
if (!m_gl2Enc) {
- m_gl2Enc = new GL2Encoder(m_stream);
+ m_gl2Enc = new GL2Encoder(m_stream, checksumHelper());
DBG("HostConnection::gl2Encoder new encoder %p, tid %d", m_gl2Enc, gettid());
m_gl2Enc->setContextAccessor(s_getGL2Context);
}
@@ -129,7 +131,10 @@ GL2Encoder *HostConnection::gl2Encoder()
renderControl_encoder_context_t *HostConnection::rcEncoder()
{
if (!m_rcEnc) {
- m_rcEnc = new renderControl_encoder_context_t(m_stream);
+ m_rcEnc = new renderControl_encoder_context_t(m_stream, checksumHelper());
+ // TODO: disable checksum as a workaround in a glTexSubImage2D problem
+ // Uncomment the following line when the root cause is solved
+ //setChecksumHelper(m_rcEnc);
}
return m_rcEnc;
}
@@ -151,3 +156,31 @@ gl2_client_context_t *HostConnection::s_getGL2Context()
}
return NULL;
}
+
+void HostConnection::setChecksumHelper(renderControl_encoder_context_t *rcEnc) {
+ std::unique_ptr<char[]> glExtensions;
+ int extensionSize = rcEnc->rcGetGLString(rcEnc, GL_EXTENSIONS, NULL, 0);
+ if (extensionSize < 0) {
+ glExtensions = std::unique_ptr<char[]>(new char[-extensionSize]);
+ extensionSize = rcEnc->rcGetGLString(rcEnc, GL_EXTENSIONS, glExtensions.get(), -extensionSize);
+ if (extensionSize <= 0) {
+ glExtensions.reset();
+ }
+ }
+ // check the host supported version
+ uint32_t checksumVersion = 0;
+ const char* checksumPrefix = ChecksumCalculator::getMaxVersionStrPrefix();
+ const char* glProtocolStr = glExtensions.get() ?
+ strstr(glExtensions.get(), checksumPrefix) : NULL;
+ if (glProtocolStr) {
+ uint32_t maxVersion = ChecksumCalculator::getMaxVersion();
+ sscanf(glProtocolStr+strlen(checksumPrefix), "%d", &checksumVersion);
+ if (maxVersion < checksumVersion) {
+ checksumVersion = maxVersion;
+ }
+ // The ordering of the following two commands matters!
+ // Must tell the host first before setting it in the guest
+ rcEnc->rcSelectChecksumHelper(rcEnc, checksumVersion, 0);
+ m_checksumHelper.setVersion(checksumVersion);
+ }
+}
diff --git a/opengl/system/OpenglSystemCommon/HostConnection.h b/opengl/system/OpenglSystemCommon/HostConnection.h
index e7a5ac4..a52fbfa 100644
--- a/opengl/system/OpenglSystemCommon/HostConnection.h
+++ b/opengl/system/OpenglSystemCommon/HostConnection.h
@@ -18,6 +18,7 @@
#include "IOStream.h"
#include "renderControl_enc.h"
+#include "ChecksumCalculator.h"
class GLEncoder;
class gl_client_context_t;
@@ -33,6 +34,7 @@ public:
GLEncoder *glEncoder();
GL2Encoder *gl2Encoder();
renderControl_encoder_context_t *rcEncoder();
+ ChecksumCalculator *checksumHelper() { return &m_checksumHelper; }
void flush() {
if (m_stream) {
@@ -44,12 +46,16 @@ private:
HostConnection();
static gl_client_context_t *s_getGLContext();
static gl2_client_context_t *s_getGL2Context();
+ // setProtocol initilizes GL communication protocol for checksums
+ // should be called when m_rcEnc is created
+ void setChecksumHelper(renderControl_encoder_context_t *rcEnc);
private:
IOStream *m_stream;
GLEncoder *m_glEnc;
GL2Encoder *m_gl2Enc;
renderControl_encoder_context_t *m_rcEnc;
+ ChecksumCalculator m_checksumHelper;
};
#endif
diff --git a/opengl/system/OpenglSystemCommon/QemuPipeStream.cpp b/opengl/system/OpenglSystemCommon/QemuPipeStream.cpp
index 3a53161..581aec3 100644
--- a/opengl/system/OpenglSystemCommon/QemuPipeStream.cpp
+++ b/opengl/system/OpenglSystemCommon/QemuPipeStream.cpp
@@ -88,8 +88,14 @@ int QemuPipeStream::writeFully(const void *buf, size_t len)
//DBG(">> QemuPipeStream::writeFully %d\n", len);
if (!valid()) return -1;
if (!buf) {
- if (len>0) ERR("QemuPipeStream::writeFully failed, buf=NULL, len %d", len);
- return 0;
+ if (len>0) {
+ // If len is non-zero, buf must not be NULL. Otherwise the pipe would be
+ // in a corrupted state, which is lethal for the emulator.
+ ERR("QemuPipeStream::writeFully failed, buf=NULL, len %d,"
+ " lethal error, exiting", len);
+ abort();
+ }
+ return 0;
}
size_t res = len;
@@ -110,8 +116,9 @@ int QemuPipeStream::writeFully(const void *buf, size_t len)
continue;
}
retval = stat;
- ERR("QemuPipeStream::writeFully failed: %s\n", strerror(errno));
- break;
+ ERR("QemuPipeStream::writeFully failed: %s, lethal error, exiting.\n",
+ strerror(errno));
+ abort();
}
//DBG("<< QemuPipeStream::writeFully %d\n", len );
return retval;
@@ -123,7 +130,11 @@ const unsigned char *QemuPipeStream::readFully(void *buf, size_t len)
if (!valid()) return NULL;
if (!buf) {
if (len > 0) {
- ERR("QemuPipeStream::readFully failed, buf=NULL, len %zu", len);
+ // If len is non-zero, buf must not be NULL. Otherwise the pipe would be
+ // in a corrupted state, which is lethal for the emulator.
+ ERR("QemuPipeStream::readFully failed, buf=NULL, len %zu, lethal"
+ " error, exiting.", len);
+ abort();
}
return NULL; // do not allow NULL buf in that implementation
}
@@ -138,8 +149,9 @@ const unsigned char *QemuPipeStream::readFully(void *buf, size_t len)
continue;
} else {
ERR("QemuPipeStream::readFully failed (buf %p, len %zu"
- ", res %zu): %s\n", buf, len, res, strerror(errno));
- return NULL;
+ ", res %zu): %s, lethal error, exiting.", buf, len, res,
+ strerror(errno));
+ abort();
}
} else {
res -= stat;
diff --git a/opengl/system/OpenglSystemCommon/ThreadInfo.h b/opengl/system/OpenglSystemCommon/ThreadInfo.h
index f59ce2a..9a5dc88 100644
--- a/opengl/system/OpenglSystemCommon/ThreadInfo.h
+++ b/opengl/system/OpenglSystemCommon/ThreadInfo.h
@@ -18,7 +18,7 @@
#include "HostConnection.h"
#include <pthread.h>
-#ifdef HAVE_ANDROID_OS
+#ifdef __ANDROID__
#include <bionic_tls.h>
#endif
@@ -36,7 +36,7 @@ struct EGLThreadInfo
EGLThreadInfo *slow_getEGLThreadInfo();
-#ifdef HAVE_ANDROID_OS
+#ifdef __ANDROID__
// We have a dedicated TLS slot in bionic
inline EGLThreadInfo* getEGLThreadInfo() {
EGLThreadInfo *tInfo =
diff --git a/opengl/system/egl/egl.cpp b/opengl/system/egl/egl.cpp
index 86897d4..ae5a889 100644
--- a/opengl/system/egl/egl.cpp
+++ b/opengl/system/egl/egl.cpp
@@ -24,6 +24,7 @@
#include "GLSharedGroup.h"
#include "eglContext.h"
#include "ClientAPIExts.h"
+#include "EGLImage.h"
#include "GLEncoder.h"
#ifdef WITH_GLES2
@@ -257,11 +258,6 @@ egl_window_surface_t::egl_window_surface_t (
{
// keep a reference on the window
nativeWindow->common.incRef(&nativeWindow->common);
- EGLint w,h;
- nativeWindow->query(nativeWindow, NATIVE_WINDOW_WIDTH, &w);
- setWidth(w);
- nativeWindow->query(nativeWindow, NATIVE_WINDOW_HEIGHT, &h);
- setHeight(h);
}
EGLBoolean egl_window_surface_t::init()
@@ -269,6 +265,8 @@ EGLBoolean egl_window_surface_t::init()
if (nativeWindow->dequeueBuffer_DEPRECATED(nativeWindow, &buffer) != NO_ERROR) {
setErrorReturn(EGL_BAD_ALLOC, EGL_FALSE);
}
+ setWidth(buffer->width);
+ setHeight(buffer->height);
DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_FALSE);
rcSurface = rcEnc->rcCreateWindowSurface(rcEnc, (uintptr_t)config,
@@ -327,6 +325,9 @@ EGLBoolean egl_window_surface_t::swapBuffers()
rcEnc->rcSetWindowColorBuffer(rcEnc, rcSurface,
((cb_handle_t *)(buffer->handle))->hostHandle);
+ setWidth(buffer->width);
+ setHeight(buffer->height);
+
return EGL_TRUE;
}
@@ -635,7 +636,7 @@ EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWin
}
egl_surface_t* surface = egl_window_surface_t::create(
- &s_display, config, surfaceType, static_cast<ANativeWindow*>(win));
+ &s_display, config, EGL_WINDOW_BIT, static_cast<ANativeWindow*>(win));
if (!surface) {
setErrorReturn(EGL_BAD_ALLOC, EGL_NO_SURFACE);
}
@@ -659,7 +660,7 @@ EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLin
int32_t h = 0;
EGLint texFormat = EGL_NO_TEXTURE;
EGLint texTarget = EGL_NO_TEXTURE;
- while (attrib_list[0]) {
+ while (attrib_list[0] != EGL_NONE) {
switch (attrib_list[0]) {
case EGL_WIDTH:
w = attrib_list[1];
@@ -689,7 +690,7 @@ EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLin
setErrorReturn(EGL_BAD_MATCH, EGL_NO_SURFACE);
egl_surface_t* surface = egl_pbuffer_surface_t::create(dpy, config,
- surfaceType, w, h, pixelFormat);
+ EGL_PBUFFER_BIT, w, h, pixelFormat);
if (!surface) {
setErrorReturn(EGL_BAD_ALLOC, EGL_NO_SURFACE);
}
@@ -757,6 +758,15 @@ EGLBoolean eglQuerySurface(EGLDisplay dpy, EGLSurface eglSurface, EGLint attribu
// and we ignore it when creating a PBuffer surface (default is EGL_FALSE)
if (surface->getSurfaceType() & EGL_PBUFFER_BIT) *value = EGL_FALSE;
break;
+ case EGL_MIPMAP_LEVEL:
+ // not modified for a window or pixmap surface
+ // and we ignore it when creating a PBuffer surface (default is 0)
+ if (surface->getSurfaceType() & EGL_PBUFFER_BIT) *value = 0;
+ break;
+ case EGL_MULTISAMPLE_RESOLVE:
+ // ignored when creating the surface, return default
+ *value = EGL_MULTISAMPLE_RESOLVE_DEFAULT;
+ break;
//TODO: complete other attributes
default:
ALOGE("eglQuerySurface %x EGL_BAD_ATTRIBUTE", attribute);
@@ -807,13 +817,29 @@ EGLSurface eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGL
EGLBoolean eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
{
- //TODO
- (void)dpy;
- (void)surface;
- (void)attribute;
+ // Right now we don't do anything when using host GPU.
+ // This is purely just to pass the data through
+ // without issuing a warning. We may benefit from validating the
+ // display and surface for debug purposes.
+ // TODO: Find cases where we actually need to do something.
+ VALIDATE_DISPLAY_INIT(dpy, EGL_FALSE);
+ VALIDATE_SURFACE_RETURN(surface, EGL_FALSE);
+ if (surface == EGL_NO_SURFACE) {
+ setErrorReturn(EGL_BAD_SURFACE, EGL_FALSE);
+ }
+
(void)value;
- ALOGW("%s not implemented", __FUNCTION__);
- return 0;
+
+ switch (attribute) {
+ case EGL_MIPMAP_LEVEL:
+ case EGL_MULTISAMPLE_RESOLVE:
+ case EGL_SWAP_BEHAVIOR:
+ return true;
+ break;
+ default:
+ ALOGW("%s: attr=0x%x not implemented", __FUNCTION__, attribute);
+ }
+ return false;
}
EGLBoolean eglBindTexImage(EGLDisplay dpy, EGLSurface eglSurface, EGLint buffer)
@@ -883,11 +909,16 @@ EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_c
VALIDATE_CONFIG(config, EGL_NO_CONTEXT);
EGLint version = 1; //default
- while (attrib_list && attrib_list[0]) {
+ while (attrib_list && attrib_list[0] != EGL_NONE) {
if (attrib_list[0] == EGL_CONTEXT_CLIENT_VERSION) version = attrib_list[1];
attrib_list+=2;
}
+ // Currently only support GLES1 and 2
+ if (version != 1 && version != 2) {
+ setErrorReturn(EGL_BAD_CONFIG, EGL_NO_CONTEXT);
+ }
+
uint32_t rcShareCtx = 0;
EGLContext_t * shareCtx = NULL;
if (share_context) {
@@ -1001,7 +1032,7 @@ EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLC
hostCon->glEncoder()->setClientState(context->getClientState());
hostCon->glEncoder()->setSharedGroup(context->getSharedGroup());
}
- }
+ }
else if (tInfo->currentContext) {
//release ClientState & SharedGroup
if (tInfo->currentContext->version == 2) {
@@ -1178,52 +1209,93 @@ EGLImageKHR eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EG
(void)attrib_list;
VALIDATE_DISPLAY_INIT(dpy, EGL_NO_IMAGE_KHR);
- if (ctx != EGL_NO_CONTEXT) {
- setErrorReturn(EGL_BAD_CONTEXT, EGL_NO_IMAGE_KHR);
- }
- if (target != EGL_NATIVE_BUFFER_ANDROID) {
- setErrorReturn(EGL_BAD_PARAMETER, EGL_NO_IMAGE_KHR);
- }
-
- android_native_buffer_t* native_buffer = (android_native_buffer_t*)buffer;
- if (native_buffer->common.magic != ANDROID_NATIVE_BUFFER_MAGIC)
- setErrorReturn(EGL_BAD_PARAMETER, EGL_NO_IMAGE_KHR);
+ if (target == EGL_NATIVE_BUFFER_ANDROID) {
+ if (ctx != EGL_NO_CONTEXT) {
+ setErrorReturn(EGL_BAD_CONTEXT, EGL_NO_IMAGE_KHR);
+ }
- if (native_buffer->common.version != sizeof(android_native_buffer_t))
- setErrorReturn(EGL_BAD_PARAMETER, EGL_NO_IMAGE_KHR);
+ android_native_buffer_t* native_buffer = (android_native_buffer_t*)buffer;
- cb_handle_t *cb = (cb_handle_t *)(native_buffer->handle);
+ if (native_buffer->common.magic != ANDROID_NATIVE_BUFFER_MAGIC)
+ setErrorReturn(EGL_BAD_PARAMETER, EGL_NO_IMAGE_KHR);
- switch (cb->format) {
- case HAL_PIXEL_FORMAT_RGBA_8888:
- case HAL_PIXEL_FORMAT_RGBX_8888:
- case HAL_PIXEL_FORMAT_RGB_888:
- case HAL_PIXEL_FORMAT_RGB_565:
- case HAL_PIXEL_FORMAT_BGRA_8888:
- break;
- default:
+ if (native_buffer->common.version != sizeof(android_native_buffer_t))
setErrorReturn(EGL_BAD_PARAMETER, EGL_NO_IMAGE_KHR);
+
+ cb_handle_t *cb = (cb_handle_t *)(native_buffer->handle);
+
+ switch (cb->format) {
+ case HAL_PIXEL_FORMAT_RGBA_8888:
+ case HAL_PIXEL_FORMAT_RGBX_8888:
+ case HAL_PIXEL_FORMAT_RGB_888:
+ case HAL_PIXEL_FORMAT_RGB_565:
+ case HAL_PIXEL_FORMAT_BGRA_8888:
+ break;
+ default:
+ setErrorReturn(EGL_BAD_PARAMETER, EGL_NO_IMAGE_KHR);
+ }
+
+ native_buffer->common.incRef(&native_buffer->common);
+
+ EGLImage_t *image = new EGLImage_t();
+ image->dpy = dpy;
+ image->target = target;
+ image->native_buffer = native_buffer;
+
+ return (EGLImageKHR)image;
+ }
+ else if (target == EGL_GL_TEXTURE_2D_KHR) {
+ VALIDATE_CONTEXT_RETURN(ctx, EGL_NO_IMAGE_KHR);
+
+ EGLContext_t *context = static_cast<EGLContext_t*>(ctx);
+ DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_NO_IMAGE_KHR);
+
+ uint32_t ctxHandle = (context) ? context->rcContext : 0;
+ GLuint texture = (GLuint)reinterpret_cast<uintptr_t>(buffer);
+ uint32_t img = rcEnc->rcCreateClientImage(rcEnc, ctxHandle, target, texture);
+ EGLImage_t *image = new EGLImage_t();
+ image->dpy = dpy;
+ image->target = target;
+ image->host_egl_image = img;
+
+ return (EGLImageKHR)image;
}
- native_buffer->common.incRef(&native_buffer->common);
- return (EGLImageKHR)native_buffer;
+ setErrorReturn(EGL_BAD_PARAMETER, EGL_NO_IMAGE_KHR);
}
EGLBoolean eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR img)
{
VALIDATE_DISPLAY_INIT(dpy, EGL_FALSE);
- android_native_buffer_t* native_buffer = (android_native_buffer_t*)img;
+ EGLImage_t *image = (EGLImage_t*)img;
- if (native_buffer->common.magic != ANDROID_NATIVE_BUFFER_MAGIC)
- setErrorReturn(EGL_BAD_PARAMETER, EGL_FALSE);
+ if (!image || image->dpy != dpy) {
+ RETURN_ERROR(EGL_FALSE, EGL_BAD_PARAMETER);
+ }
- if (native_buffer->common.version != sizeof(android_native_buffer_t))
- setErrorReturn(EGL_BAD_PARAMETER, EGL_FALSE);
+ if (image->target == EGL_NATIVE_BUFFER_ANDROID) {
+ android_native_buffer_t* native_buffer = image->native_buffer;
- native_buffer->common.decRef(&native_buffer->common);
+ if (native_buffer->common.magic != ANDROID_NATIVE_BUFFER_MAGIC)
+ setErrorReturn(EGL_BAD_PARAMETER, EGL_FALSE);
- return EGL_TRUE;
+ if (native_buffer->common.version != sizeof(android_native_buffer_t))
+ setErrorReturn(EGL_BAD_PARAMETER, EGL_FALSE);
+
+ native_buffer->common.decRef(&native_buffer->common);
+ delete image;
+
+ return EGL_TRUE;
+ }
+ else if (image->target == EGL_GL_TEXTURE_2D_KHR) {
+ uint32_t host_egl_image = image->host_egl_image;
+ delete image;
+ DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_FALSE);
+ return rcEnc->rcDestroyClientImage(rcEnc, host_egl_image);
+ }
+
+ setErrorReturn(EGL_BAD_PARAMETER, EGL_FALSE);
}
#define FENCE_SYNC_HANDLE (EGLSyncKHR)0xFE4CE
diff --git a/opengl/system/egl/eglDisplay.cpp b/opengl/system/egl/eglDisplay.cpp
index 96540aa..9340482 100644
--- a/opengl/system/egl/eglDisplay.cpp
+++ b/opengl/system/egl/eglDisplay.cpp
@@ -25,16 +25,10 @@ static const char systemEGLVendor[] = "Google Android emulator";
// NOTE that each extension name should be suffixed with space
static const char systemStaticEGLExtensions[] =
"EGL_ANDROID_image_native_buffer "
- "EGL_KHR_fence_sync ";
-
-// list of extensions supported by this EGL implementation only if supported
-// on the host implementation.
-// NOTE that each extension name should be suffixed with space
-static const char systemDynamicEGLExtensions[] =
+ "EGL_KHR_fence_sync "
"EGL_KHR_image_base "
"EGL_KHR_gl_texture_2d_image ";
-
static void *s_gles_lib = NULL;
static void *s_gles2_lib = NULL;
@@ -309,28 +303,6 @@ static char *buildExtensionString()
return strdup(systemStaticEGLExtensions);
}
- //
- // Filter host extension list to include only extensions
- // we can support (in the systemDynamicEGLExtensions list)
- //
- char *ext = (char *)hostExt;
- char *c = ext;
- char *insert = ext;
- while(*c != '\0') {
- if (*c == ' ') {
- int len = c - ext;
- if (findExtInList(ext, len, systemDynamicEGLExtensions)) {
- if (ext != insert) {
- memcpy(insert, ext, len+1); // including space
- }
- insert += (len + 1);
- }
- ext = c + 1;
- }
- c++;
- }
- *insert = '\0';
-
int n = strlen(hostExt);
if (n > 0) {
char *str;
@@ -498,8 +470,12 @@ EGLBoolean eglDisplay::getConfigGLPixelFormat(EGLConfig config, GLenum * format)
}
//calculate the GL internal format
- if ((redSize==8)&&(blueSize==8)&&(blueSize==8)&&(alphaSize==8)) *format = GL_RGBA;
- else if ((redSize==8)&&(greenSize==8)&&(blueSize==8)&&(alphaSize==0)) *format = GL_RGB;
+ if ((redSize == greenSize) && (redSize == blueSize) &&
+ ((redSize == 8) || (redSize == 16) || (redSize == 32)))
+ {
+ if (alphaSize == 0) *format = GL_RGB;
+ else *format = GL_RGBA;
+ }
else if ((redSize==5)&&(greenSize==6)&&(blueSize==5)&&(alphaSize==0)) *format = GL_RGB565_OES;
else if ((redSize==5)&&(greenSize==5)&&(blueSize==5)&&(alphaSize==1)) *format = GL_RGB5_A1_OES;
else if ((redSize==4)&&(greenSize==4)&&(blueSize==4)&&(alphaSize==4)) *format = GL_RGBA4_OES;
diff --git a/opengl/system/gralloc/Android.mk b/opengl/system/gralloc/Android.mk
index 71ac2f2..b93164a 100644
--- a/opengl/system/gralloc/Android.mk
+++ b/opengl/system/gralloc/Android.mk
@@ -17,4 +17,19 @@ LOCAL_SHARED_LIBRARIES += libdl
$(call emugl-end-module)
+$(call emugl-begin-shared-library,gralloc.ranchu)
+$(call emugl-import,libGLESv1_enc lib_renderControl_enc libOpenglSystemCommon)
+$(call emugl-set-shared-library-subpath,hw)
+
+LOCAL_CFLAGS += -DLOG_TAG=\"gralloc_ranchu\"
+LOCAL_CFLAGS += -Wno-missing-field-initializers
+
+LOCAL_SRC_FILES := gralloc.cpp
+
+# Need to access the special OPENGL TLS Slot
+LOCAL_C_INCLUDES += bionic/libc/private
+LOCAL_SHARED_LIBRARIES += libdl
+
+$(call emugl-end-module)
+
endif # BUILD_EMULATOR_OPENGL_DRIVER != false
diff --git a/opengl/system/gralloc/gralloc.cpp b/opengl/system/gralloc/gralloc.cpp
index ef18511..f8f9292 100644
--- a/opengl/system/gralloc/gralloc.cpp
+++ b/opengl/system/gralloc/gralloc.cpp
@@ -312,10 +312,13 @@ static int gralloc_alloc(alloc_device_t* dev,
//
// Allocate ColorBuffer handle on the host (only if h/w access is allowed)
// Only do this for some h/w usages, not all.
+ // Also do this if we need to read from the surface, in this case the
+ // rendering will still happen on the host but we also need to be able to
+ // read back from the color buffer, which requires that there is a buffer
//
if (usage & (GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_HW_RENDER |
GRALLOC_USAGE_HW_2D | GRALLOC_USAGE_HW_COMPOSER |
- GRALLOC_USAGE_HW_FB) ) {
+ GRALLOC_USAGE_HW_FB | GRALLOC_USAGE_SW_READ_MASK) ) {
DEFINE_HOST_CONNECTION;
if (hostCon && rcEnc) {
cb->hostHandle = rcEnc->rcCreateColorBuffer(rcEnc, w, h, glFormat);
@@ -682,12 +685,8 @@ static int gralloc_lock(gralloc_module_t const* module,
return -EBUSY;
}
- const bool sw_read = (cb->usage & GRALLOC_USAGE_SW_READ_MASK);
- const bool hw_write = (cb->usage & GRALLOC_USAGE_HW_RENDER);
- const bool screen_capture_mode = (sw_read && hw_write);
- if (screen_capture_mode) {
+ if (sw_read) {
D("gralloc_lock read back color buffer %d %d\n", cb->width, cb->height);
- DEFINE_AND_VALIDATE_HOST_CONNECTION;
rcEnc->rcReadColorBuffer(rcEnc, cb->hostHandle,
0, 0, cb->width, cb->height, GL_RGBA, GL_UNSIGNED_BYTE, cpu_addr);
}
@@ -733,7 +732,7 @@ static int gralloc_unlock(gralloc_module_t const* module,
// if buffer was locked for s/w write, we need to update the host with
// the updated data
//
- if (cb->lockedWidth > 0 && cb->lockedHeight > 0 && cb->hostHandle) {
+ if (cb->hostHandle) {
// Make sure we have host connection
DEFINE_AND_VALIDATE_HOST_CONNECTION;
@@ -1025,7 +1024,7 @@ struct private_module_t HAL_MODULE_INFO_SYM = {
/* This function is called once to detect whether the emulator supports
* GPU emulation (this is done by looking at the qemu.gles kernel
- * parameter, which must be > 0 if this is the case).
+ * parameter, which must be == 1 if this is the case).
*
* If not, then load gralloc.default instead as a fallback.
*/
@@ -1035,11 +1034,14 @@ fallback_init(void)
char prop[PROPERTY_VALUE_MAX];
void* module;
+ // qemu.gles=0 -> no GLES 2.x support (only 1.x through software).
+ // qemu.gles=1 -> host-side GPU emulation through EmuGL
+ // qemu.gles=2 -> guest-side GPU emulation.
property_get("ro.kernel.qemu.gles", prop, "0");
- if (atoi(prop) > 0) {
+ if (atoi(prop) == 1) {
return;
}
- ALOGD("Emulator without GPU emulation detected.");
+ ALOGD("Emulator without host-side GPU emulation detected.");
#if __LP64__
module = dlopen("/system/lib64/hw/gralloc.default.so", RTLD_LAZY|RTLD_LOCAL);
#else
diff --git a/opengl/system/renderControl_enc/README b/opengl/system/renderControl_enc/README
index 2ee1a57..349b6db 100644
--- a/opengl/system/renderControl_enc/README
+++ b/opengl/system/renderControl_enc/README
@@ -134,3 +134,9 @@ void rcUpdateColorBuffer(uint32_t colorbuffer, GLint x, GLint y,
GLenum type, void* pixels);
Updates the content of a subregion of a colorBuffer object.
pixels are always unpacked with alignment of 1.
+
+uint32_t rcCreateClientImage(uint32_t context, EGLenum target, GLuint buffer)
+ Create an EGLImage from a client object.
+
+int rcDestroyClientImage(uint32_t image)
+ Destroy an EGLImage object.
diff --git a/opengl/system/renderControl_enc/renderControl.attrib b/opengl/system/renderControl_enc/renderControl.attrib
index 8b9972f..0fa0469 100644
--- a/opengl/system/renderControl_enc/renderControl.attrib
+++ b/opengl/system/renderControl_enc/renderControl.attrib
@@ -39,3 +39,7 @@ rcUpdateColorBuffer
dir pixels in
len pixels (((glUtilsPixelBitSize(format, type) * width) >> 3) * height)
var_flag pixels isLarge
+
+rcCloseColorBuffer
+ flag flushOnEncode
+
diff --git a/opengl/system/renderControl_enc/renderControl.in b/opengl/system/renderControl_enc/renderControl.in
index 8281fd9..ebbf0fe 100644
--- a/opengl/system/renderControl_enc/renderControl.in
+++ b/opengl/system/renderControl_enc/renderControl.in
@@ -23,3 +23,7 @@ GL_ENTRY(void, rcBindRenderbuffer, uint32_t colorBuffer)
GL_ENTRY(EGLint, rcColorBufferCacheFlush, uint32_t colorbuffer, EGLint postCount,int forRead)
GL_ENTRY(void, rcReadColorBuffer, uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void *pixels)
GL_ENTRY(int, rcUpdateColorBuffer, uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void *pixels)
+GL_ENTRY(int, rcOpenColorBuffer2, uint32_t colorbuffer)
+GL_ENTRY(uint32_t, rcCreateClientImage, uint32_t context, EGLenum target, GLuint buffer)
+GL_ENTRY(int, rcDestroyClientImage, uint32_t image)
+GL_ENTRY(void, rcSelectChecksumHelper, uint32_t newProtocol, uint32_t reserved)
diff --git a/opengl/system/renderControl_enc/renderControl_client_base.h b/opengl/system/renderControl_enc/renderControl_client_base.h
new file mode 100644
index 0000000..4fb5d76
--- /dev/null
+++ b/opengl/system/renderControl_enc/renderControl_client_base.h
@@ -0,0 +1,41 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __renderControl_client_base_t_h
+#define __renderControl_client_base_t_h
+
+#include "renderControl_client_proc.h"
+
+
+struct renderControl_client_base_t {
+
+ rcGetRendererVersion_client_proc_t rcGetRendererVersion;
+ rcGetEGLVersion_client_proc_t rcGetEGLVersion;
+ rcQueryEGLString_client_proc_t rcQueryEGLString;
+ rcGetGLString_client_proc_t rcGetGLString;
+ rcGetNumConfigs_client_proc_t rcGetNumConfigs;
+ rcGetConfigs_client_proc_t rcGetConfigs;
+ rcChooseConfig_client_proc_t rcChooseConfig;
+ rcGetFBParam_client_proc_t rcGetFBParam;
+ rcCreateContext_client_proc_t rcCreateContext;
+ rcDestroyContext_client_proc_t rcDestroyContext;
+ rcCreateWindowSurface_client_proc_t rcCreateWindowSurface;
+ rcDestroyWindowSurface_client_proc_t rcDestroyWindowSurface;
+ rcCreateColorBuffer_client_proc_t rcCreateColorBuffer;
+ rcOpenColorBuffer_client_proc_t rcOpenColorBuffer;
+ rcCloseColorBuffer_client_proc_t rcCloseColorBuffer;
+ rcSetWindowColorBuffer_client_proc_t rcSetWindowColorBuffer;
+ rcFlushWindowColorBuffer_client_proc_t rcFlushWindowColorBuffer;
+ rcMakeCurrent_client_proc_t rcMakeCurrent;
+ rcFBPost_client_proc_t rcFBPost;
+ rcFBSetSwapInterval_client_proc_t rcFBSetSwapInterval;
+ rcBindTexture_client_proc_t rcBindTexture;
+ rcBindRenderbuffer_client_proc_t rcBindRenderbuffer;
+ rcColorBufferCacheFlush_client_proc_t rcColorBufferCacheFlush;
+ rcReadColorBuffer_client_proc_t rcReadColorBuffer;
+ rcUpdateColorBuffer_client_proc_t rcUpdateColorBuffer;
+ rcOpenColorBuffer2_client_proc_t rcOpenColorBuffer2;
+ rcCreateClientImage_client_proc_t rcCreateClientImage;
+ rcDestroyClientImage_client_proc_t rcDestroyClientImage;
+};
+
+#endif
diff --git a/opengl/system/renderControl_enc/renderControl_client_context.cpp b/opengl/system/renderControl_enc/renderControl_client_context.cpp
index f58f549..51b62a6 100644
--- a/opengl/system/renderControl_enc/renderControl_client_context.cpp
+++ b/opengl/system/renderControl_enc/renderControl_client_context.cpp
@@ -36,6 +36,9 @@ int renderControl_client_context_t::initDispatchByName(void *(*getProc)(const ch
rcReadColorBuffer = (rcReadColorBuffer_client_proc_t) getProc("rcReadColorBuffer", userData);
rcUpdateColorBuffer = (rcUpdateColorBuffer_client_proc_t) getProc("rcUpdateColorBuffer", userData);
rcOpenColorBuffer2 = (rcOpenColorBuffer2_client_proc_t) getProc("rcOpenColorBuffer2", userData);
+ rcCreateClientImage = (rcCreateClientImage_client_proc_t) getProc("rcCreateClientImage", userData);
+ rcDestroyClientImage = (rcDestroyClientImage_client_proc_t) getProc("rcDestroyClientImage", userData);
+ rcSelectChecksumHelper = (rcSelectChecksumHelper_client_proc_t) getProc("rcSelectChecksumHelper", userData);
return 0;
}
diff --git a/opengl/system/renderControl_enc/renderControl_client_context.h b/opengl/system/renderControl_enc/renderControl_client_context.h
index 4c71d89..f5230f1 100644
--- a/opengl/system/renderControl_enc/renderControl_client_context.h
+++ b/opengl/system/renderControl_enc/renderControl_client_context.h
@@ -5,6 +5,8 @@
#include "renderControl_client_proc.h"
+#include "renderControl_types.h"
+
struct renderControl_client_context_t {
@@ -34,6 +36,9 @@ struct renderControl_client_context_t {
rcReadColorBuffer_client_proc_t rcReadColorBuffer;
rcUpdateColorBuffer_client_proc_t rcUpdateColorBuffer;
rcOpenColorBuffer2_client_proc_t rcOpenColorBuffer2;
+ rcCreateClientImage_client_proc_t rcCreateClientImage;
+ rcDestroyClientImage_client_proc_t rcDestroyClientImage;
+ rcSelectChecksumHelper_client_proc_t rcSelectChecksumHelper;
virtual ~renderControl_client_context_t() {}
typedef renderControl_client_context_t *CONTEXT_ACCESSOR_TYPE(void);
diff --git a/opengl/system/renderControl_enc/renderControl_client_proc.h b/opengl/system/renderControl_enc/renderControl_client_proc.h
index 85200cf..7b213d5 100644
--- a/opengl/system/renderControl_enc/renderControl_client_proc.h
+++ b/opengl/system/renderControl_enc/renderControl_client_proc.h
@@ -35,6 +35,9 @@ typedef EGLint (renderControl_APIENTRY *rcColorBufferCacheFlush_client_proc_t) (
typedef void (renderControl_APIENTRY *rcReadColorBuffer_client_proc_t) (void * ctx, uint32_t, GLint, GLint, GLint, GLint, GLenum, GLenum, void*);
typedef int (renderControl_APIENTRY *rcUpdateColorBuffer_client_proc_t) (void * ctx, uint32_t, GLint, GLint, GLint, GLint, GLenum, GLenum, void*);
typedef int (renderControl_APIENTRY *rcOpenColorBuffer2_client_proc_t) (void * ctx, uint32_t);
+typedef uint32_t (renderControl_APIENTRY *rcCreateClientImage_client_proc_t) (void * ctx, uint32_t, EGLenum, GLuint);
+typedef int (renderControl_APIENTRY *rcDestroyClientImage_client_proc_t) (void * ctx, uint32_t);
+typedef void (renderControl_APIENTRY *rcSelectChecksumHelper_client_proc_t) (void * ctx, uint32_t, uint32_t);
#endif
diff --git a/opengl/system/renderControl_enc/renderControl_enc.cpp b/opengl/system/renderControl_enc/renderControl_enc.cpp
index 34113e1..2021513 100644
--- a/opengl/system/renderControl_enc/renderControl_enc.cpp
+++ b/opengl/system/renderControl_enc/renderControl_enc.cpp
@@ -2,6 +2,7 @@
// generated by 'emugen'
+#include <memory>
#include <string.h>
#include "renderControl_opcodes.h"
@@ -22,16 +23,35 @@ GLint rcGetRendererVersion_enc(void *self )
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;
- const size_t packetSize = 8;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcGetRendererVersion;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 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) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcGetRendererVersion: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -40,22 +60,43 @@ EGLint rcGetEGLVersion_enc(void *self , EGLint* major, EGLint* minor)
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;
const unsigned int __size_major = sizeof(EGLint);
const unsigned int __size_minor = sizeof(EGLint);
unsigned char *ptr;
- const size_t packetSize = 8 + __size_major + __size_minor + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_major + __size_minor + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcGetEGLVersion;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_major; ptr += 4;
*(unsigned int *)(ptr) = __size_minor; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(major, __size_major);
+ if (useChecksum) checksumCalculator->addBuffer(major, __size_major);
stream->readback(minor, __size_minor);
+ if (useChecksum) checksumCalculator->addBuffer(minor, __size_minor);
EGLint retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcGetEGLVersion: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -64,21 +105,41 @@ EGLint rcQueryEGLString_enc(void *self , EGLenum name, void* buffer, EGLint buff
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;
const unsigned int __size_buffer = bufferSize;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_buffer + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_buffer + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcQueryEGLString;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &name, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_buffer; ptr += 4;
memcpy(ptr, &bufferSize, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(buffer, __size_buffer);
+ if (useChecksum) checksumCalculator->addBuffer(buffer, __size_buffer);
EGLint retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcQueryEGLString: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -87,21 +148,41 @@ EGLint rcGetGLString_enc(void *self , EGLenum name, void* buffer, EGLint bufferS
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;
const unsigned int __size_buffer = bufferSize;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_buffer + 4 + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_buffer + 4 + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcGetGLString;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &name, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_buffer; ptr += 4;
memcpy(ptr, &bufferSize, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(buffer, __size_buffer);
+ if (useChecksum) checksumCalculator->addBuffer(buffer, __size_buffer);
EGLint retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcGetGLString: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -110,19 +191,39 @@ EGLint rcGetNumConfigs_enc(void *self , uint32_t* numAttribs)
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;
const unsigned int __size_numAttribs = sizeof(uint32_t);
unsigned char *ptr;
- const size_t packetSize = 8 + __size_numAttribs + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_numAttribs + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcGetNumConfigs;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_numAttribs; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(numAttribs, __size_numAttribs);
+ if (useChecksum) checksumCalculator->addBuffer(numAttribs, __size_numAttribs);
EGLint retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcGetNumConfigs: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -131,20 +232,40 @@ EGLint rcGetConfigs_enc(void *self , uint32_t bufSize, GLuint* buffer)
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;
const unsigned int __size_buffer = bufSize;
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + __size_buffer + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + __size_buffer + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcGetConfigs;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &bufSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_buffer; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(buffer, __size_buffer);
+ if (useChecksum) checksumCalculator->addBuffer(buffer, __size_buffer);
EGLint retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcGetConfigs: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -153,24 +274,46 @@ EGLint rcChooseConfig_enc(void *self , EGLint* attribs, uint32_t attribs_size, u
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;
const unsigned int __size_attribs = attribs_size;
const unsigned int __size_configs = ((configs != NULL) ? configs_size*sizeof(uint32_t) : 0);
unsigned char *ptr;
- const size_t packetSize = 8 + __size_attribs + 4 + __size_configs + 4 + 2*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + __size_attribs + 4 + __size_configs + 4 + 2*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcChooseConfig;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_attribs; ptr += 4;
memcpy(ptr, attribs, __size_attribs);ptr += __size_attribs;
memcpy(ptr, &attribs_size, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_configs; ptr += 4;
memcpy(ptr, &configs_size, 4); ptr += 4;
- if (configs != NULL) stream->readback(configs, __size_configs);
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+ if (configs != NULL) {
+ stream->readback(configs, __size_configs);
+ if (useChecksum) checksumCalculator->addBuffer(configs, __size_configs);
+ }
EGLint retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcChooseConfig: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -179,17 +322,36 @@ EGLint rcGetFBParam_enc(void *self , EGLint param)
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;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcGetFBParam;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &param, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
EGLint retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcGetFBParam: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -198,19 +360,38 @@ uint32_t rcCreateContext_enc(void *self , uint32_t config, uint32_t share, uint3
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;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_rcCreateContext;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &config, 4); ptr += 4;
memcpy(ptr, &share, 4); ptr += 4;
memcpy(ptr, &glVersion, 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) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcCreateContext: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -219,14 +400,24 @@ void rcDestroyContext_enc(void *self , uint32_t context)
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;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcDestroyContext;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &context, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
uint32_t rcCreateWindowSurface_enc(void *self , uint32_t config, uint32_t width, uint32_t height)
@@ -234,19 +425,38 @@ uint32_t rcCreateWindowSurface_enc(void *self , uint32_t config, uint32_t width,
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;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_rcCreateWindowSurface;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &config, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 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) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcCreateWindowSurface: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -255,14 +465,24 @@ void rcDestroyWindowSurface_enc(void *self , uint32_t windowSurface)
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;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcDestroyWindowSurface;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &windowSurface, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
uint32_t rcCreateColorBuffer_enc(void *self , uint32_t width, uint32_t height, GLenum internalFormat)
@@ -270,19 +490,38 @@ uint32_t rcCreateColorBuffer_enc(void *self , uint32_t width, uint32_t height, G
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;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_rcCreateColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &width, 4); ptr += 4;
memcpy(ptr, &height, 4); ptr += 4;
memcpy(ptr, &internalFormat, 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) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcCreateColorBuffer: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -291,14 +530,24 @@ void rcOpenColorBuffer_enc(void *self , uint32_t colorbuffer)
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;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcOpenColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &colorbuffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void rcCloseColorBuffer_enc(void *self , uint32_t colorbuffer)
@@ -306,14 +555,24 @@ void rcCloseColorBuffer_enc(void *self , uint32_t colorbuffer)
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;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcCloseColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &colorbuffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->flush();
}
@@ -322,15 +581,25 @@ void rcSetWindowColorBuffer_enc(void *self , uint32_t windowSurface, uint32_t co
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;
- const size_t packetSize = 8 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcSetWindowColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &windowSurface, 4); ptr += 4;
memcpy(ptr, &colorBuffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
int rcFlushWindowColorBuffer_enc(void *self , uint32_t windowSurface)
@@ -338,17 +607,36 @@ int rcFlushWindowColorBuffer_enc(void *self , uint32_t windowSurface)
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;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcFlushWindowColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &windowSurface, 4); ptr += 4;
+ 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) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcFlushWindowColorBuffer: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -357,19 +645,38 @@ EGLint rcMakeCurrent_enc(void *self , uint32_t context, uint32_t drawSurf, uint3
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;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_rcMakeCurrent;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &context, 4); ptr += 4;
memcpy(ptr, &drawSurf, 4); ptr += 4;
memcpy(ptr, &readSurf, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
EGLint retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcMakeCurrent: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -378,14 +685,24 @@ void rcFBPost_enc(void *self , uint32_t colorBuffer)
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;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcFBPost;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &colorBuffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void rcFBSetSwapInterval_enc(void *self , EGLint interval)
@@ -393,14 +710,24 @@ void rcFBSetSwapInterval_enc(void *self , EGLint interval)
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;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcFBSetSwapInterval;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &interval, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void rcBindTexture_enc(void *self , uint32_t colorBuffer)
@@ -408,14 +735,24 @@ void rcBindTexture_enc(void *self , uint32_t colorBuffer)
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;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcBindTexture;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &colorBuffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
void rcBindRenderbuffer_enc(void *self , uint32_t colorBuffer)
@@ -423,14 +760,24 @@ void rcBindRenderbuffer_enc(void *self , uint32_t colorBuffer)
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;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcBindRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &colorBuffer, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
}
EGLint rcColorBufferCacheFlush_enc(void *self , uint32_t colorbuffer, EGLint postCount, int forRead)
@@ -438,19 +785,38 @@ EGLint rcColorBufferCacheFlush_enc(void *self , uint32_t colorbuffer, EGLint pos
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;
- const size_t packetSize = 8 + 4 + 4 + 4;
- ptr = stream->alloc(packetSize);
+ 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_rcColorBufferCacheFlush;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &colorbuffer, 4); ptr += 4;
memcpy(ptr, &postCount, 4); ptr += 4;
memcpy(ptr, &forRead, 4); ptr += 4;
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+
EGLint retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcColorBufferCacheFlush: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -459,13 +825,19 @@ void rcReadColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y,
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;
const unsigned int __size_pixels = (((glUtilsPixelBitSize(format, type) * width) >> 3) * height);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcReadColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &colorbuffer, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
@@ -475,7 +847,20 @@ void rcReadColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y,
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
*(unsigned int *)(ptr) = __size_pixels; ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
stream->readback(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcReadColorBuffer: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
}
int rcUpdateColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels)
@@ -483,13 +868,19 @@ int rcUpdateColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y,
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;
const unsigned int __size_pixels = (((glUtilsPixelBitSize(format, type) * width) >> 3) * height);
unsigned char *ptr;
- const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
- ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+ ptr = buf;
int tmp = OP_rcUpdateColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &colorbuffer, 4); ptr += 4;
memcpy(ptr, &x, 4); ptr += 4;
@@ -498,12 +889,28 @@ int rcUpdateColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y,
memcpy(ptr, &height, 4); ptr += 4;
memcpy(ptr, &format, 4); ptr += 4;
memcpy(ptr, &type, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
stream->flush();
stream->writeFully(&__size_pixels,4);
- stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(&__size_pixels,4);
+ stream->writeFully(pixels, __size_pixels);
+ if (useChecksum) checksumCalculator->addBuffer(pixels, __size_pixels);
+ buf = stream->alloc(checksumSize);
+ if (useChecksum) checksumCalculator->writeChecksum(buf, checksumSize);
+
int retval;
stream->readback(&retval, 4);
+ if (useChecksum) checksumCalculator->addBuffer(&retval, 4);
+ if (useChecksum) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcUpdateColorBuffer: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
@@ -512,25 +919,149 @@ int rcOpenColorBuffer2_enc(void *self , uint32_t colorbuffer)
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;
- const size_t packetSize = 8 + 4;
- ptr = stream->alloc(packetSize);
+ unsigned char *buf;
+ const size_t sizeWithoutChecksum = 8 + 4;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
int tmp = OP_rcOpenColorBuffer2;memcpy(ptr, &tmp, 4); ptr += 4;
- memcpy(ptr, &packetSize, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
memcpy(ptr, &colorbuffer, 4); ptr += 4;
+ 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) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcOpenColorBuffer2: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
+ return retval;
+}
+
+uint32_t rcCreateClientImage_enc(void *self , uint32_t context, EGLenum target, GLuint buffer)
+{
+
+ 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_rcCreateClientImage;memcpy(ptr, &tmp, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+ memcpy(ptr, &context, 4); ptr += 4;
+ memcpy(ptr, &target, 4); ptr += 4;
+ memcpy(ptr, &buffer, 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) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcCreateClientImage: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
return retval;
}
+int rcDestroyClientImage_enc(void *self , uint32_t image)
+{
+
+ 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;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
+ int tmp = OP_rcDestroyClientImage;memcpy(ptr, &tmp, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+ memcpy(ptr, &image, 4); ptr += 4;
+
+ 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) {
+ std::unique_ptr<unsigned char[]> checksumBuf(new unsigned char[checksumSize]);
+ stream->readback(checksumBuf.get(), checksumSize);
+ if (!checksumCalculator->validate(checksumBuf.get(), checksumSize)) {
+ ALOGE("rcDestroyClientImage: GL communication error, please report this issue to b.android.com.\n");
+ abort();
+ }
+ }
+ return retval;
+}
+
+void rcSelectChecksumHelper_enc(void *self , uint32_t newProtocol, uint32_t reserved)
+{
+
+ 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;
+ const size_t checksumSize = checksumCalculator->checksumByteSize();
+ const size_t totalSize = sizeWithoutChecksum + checksumSize;
+ buf = stream->alloc(totalSize);
+ ptr = buf;
+ int tmp = OP_rcSelectChecksumHelper;memcpy(ptr, &tmp, 4); ptr += 4;
+ memcpy(ptr, &totalSize, 4); ptr += 4;
+
+ memcpy(ptr, &newProtocol, 4); ptr += 4;
+ memcpy(ptr, &reserved, 4); ptr += 4;
+
+ if (useChecksum) checksumCalculator->addBuffer(buf, ptr-buf);
+ if (useChecksum) checksumCalculator->writeChecksum(ptr, checksumSize); ptr += checksumSize;
+
+}
+
} // namespace
-renderControl_encoder_context_t::renderControl_encoder_context_t(IOStream *stream)
+renderControl_encoder_context_t::renderControl_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator)
{
m_stream = stream;
+ m_checksumCalculator = checksumCalculator;
this->rcGetRendererVersion = &rcGetRendererVersion_enc;
this->rcGetEGLVersion = &rcGetEGLVersion_enc;
@@ -558,5 +1089,8 @@ renderControl_encoder_context_t::renderControl_encoder_context_t(IOStream *strea
this->rcReadColorBuffer = &rcReadColorBuffer_enc;
this->rcUpdateColorBuffer = &rcUpdateColorBuffer_enc;
this->rcOpenColorBuffer2 = &rcOpenColorBuffer2_enc;
+ this->rcCreateClientImage = &rcCreateClientImage_enc;
+ this->rcDestroyClientImage = &rcDestroyClientImage_enc;
+ this->rcSelectChecksumHelper = &rcSelectChecksumHelper_enc;
}
diff --git a/opengl/system/renderControl_enc/renderControl_enc.h b/opengl/system/renderControl_enc/renderControl_enc.h
index 9469ae4..628cff3 100644
--- a/opengl/system/renderControl_enc/renderControl_enc.h
+++ b/opengl/system/renderControl_enc/renderControl_enc.h
@@ -5,6 +5,7 @@
#define GUARD_renderControl_encoder_context_t
#include "IOStream.h"
+#include "ChecksumCalculator.h"
#include "renderControl_client_context.h"
@@ -15,8 +16,9 @@
struct renderControl_encoder_context_t : public renderControl_client_context_t {
IOStream *m_stream;
+ ChecksumCalculator *m_checksumCalculator;
- renderControl_encoder_context_t(IOStream *stream);
+ renderControl_encoder_context_t(IOStream *stream, ChecksumCalculator *checksumCalculator);
};
#endif // GUARD_renderControl_encoder_context_t \ No newline at end of file
diff --git a/opengl/system/renderControl_enc/renderControl_entry.cpp b/opengl/system/renderControl_enc/renderControl_entry.cpp
index 71edb83..6a51108 100644
--- a/opengl/system/renderControl_enc/renderControl_entry.cpp
+++ b/opengl/system/renderControl_enc/renderControl_entry.cpp
@@ -32,6 +32,9 @@ extern "C" {
void rcReadColorBuffer(uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels);
int rcUpdateColorBuffer(uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels);
int rcOpenColorBuffer2(uint32_t colorbuffer);
+ uint32_t rcCreateClientImage(uint32_t context, EGLenum target, GLuint buffer);
+ int rcDestroyClientImage(uint32_t image);
+ void rcSelectChecksumHelper(uint32_t newProtocol, uint32_t reserved);
};
#endif
@@ -197,3 +200,21 @@ int rcOpenColorBuffer2(uint32_t colorbuffer)
return ctx->rcOpenColorBuffer2(ctx, colorbuffer);
}
+uint32_t rcCreateClientImage(uint32_t context, EGLenum target, GLuint buffer)
+{
+ GET_CONTEXT;
+ return ctx->rcCreateClientImage(ctx, context, target, buffer);
+}
+
+int rcDestroyClientImage(uint32_t image)
+{
+ GET_CONTEXT;
+ return ctx->rcDestroyClientImage(ctx, image);
+}
+
+void rcSelectChecksumHelper(uint32_t newProtocol, uint32_t reserved)
+{
+ GET_CONTEXT;
+ ctx->rcSelectChecksumHelper(ctx, newProtocol, reserved);
+}
+
diff --git a/opengl/system/renderControl_enc/renderControl_ftable.h b/opengl/system/renderControl_enc/renderControl_ftable.h
index e15fb0c..ac772e6 100644
--- a/opengl/system/renderControl_enc/renderControl_ftable.h
+++ b/opengl/system/renderControl_enc/renderControl_ftable.h
@@ -34,6 +34,9 @@ static const struct _renderControl_funcs_by_name {
{"rcReadColorBuffer", (void*)rcReadColorBuffer},
{"rcUpdateColorBuffer", (void*)rcUpdateColorBuffer},
{"rcOpenColorBuffer2", (void*)rcOpenColorBuffer2},
+ {"rcCreateClientImage", (void*)rcCreateClientImage},
+ {"rcDestroyClientImage", (void*)rcDestroyClientImage},
+ {"rcSelectChecksumHelper", (void*)rcSelectChecksumHelper},
};
static const int renderControl_num_funcs = sizeof(renderControl_funcs_by_name) / sizeof(struct _renderControl_funcs_by_name);
diff --git a/opengl/system/renderControl_enc/renderControl_opcodes.h b/opengl/system/renderControl_enc/renderControl_opcodes.h
index a00dc77..4861c9c 100644
--- a/opengl/system/renderControl_enc/renderControl_opcodes.h
+++ b/opengl/system/renderControl_enc/renderControl_opcodes.h
@@ -29,7 +29,10 @@
#define OP_rcReadColorBuffer 10023
#define OP_rcUpdateColorBuffer 10024
#define OP_rcOpenColorBuffer2 10025
-#define OP_last 10026
+#define OP_rcCreateClientImage 10026
+#define OP_rcDestroyClientImage 10027
+#define OP_rcSelectChecksumHelper 10028
+#define OP_last 10029
#endif
diff --git a/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
new file mode 100644
index 0000000..6602627
--- /dev/null
+++ b/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2015, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+
+<resources>
+ <bool name="def_lockscreen_disabled">true</bool>
+
+ <!-- Allow users to use both the on-screen keyboard, as well as a real
+ keyboard -->
+ <bool name="def_show_ime_with_hard_keyboard">true</bool>
+</resources>
diff --git a/sensors/sensors_qemu.c b/sensors/sensors_qemu.c
index 0567411..b0e858c 100644
--- a/sensors/sensors_qemu.c
+++ b/sensors/sensors_qemu.c
@@ -50,7 +50,7 @@
/** SENSOR IDS AND NAMES
**/
-#define MAX_NUM_SENSORS 5
+#define MAX_NUM_SENSORS 8
#define SUPPORTED_SENSORS ((1<<MAX_NUM_SENSORS)-1)
@@ -60,12 +60,18 @@
#define ID_ORIENTATION (ID_BASE+2)
#define ID_TEMPERATURE (ID_BASE+3)
#define ID_PROXIMITY (ID_BASE+4)
+#define ID_LIGHT (ID_BASE+5)
+#define ID_PRESSURE (ID_BASE+6)
+#define ID_HUMIDITY (ID_BASE+7)
#define SENSORS_ACCELERATION (1 << ID_ACCELERATION)
#define SENSORS_MAGNETIC_FIELD (1 << ID_MAGNETIC_FIELD)
#define SENSORS_ORIENTATION (1 << ID_ORIENTATION)
#define SENSORS_TEMPERATURE (1 << ID_TEMPERATURE)
#define SENSORS_PROXIMITY (1 << ID_PROXIMITY)
+#define SENSORS_LIGHT (1 << ID_LIGHT)
+#define SENSORS_PRESSURE (1 << ID_PRESSURE)
+#define SENSORS_HUMIDITY (1 << ID_HUMIDITY)
#define ID_CHECK(x) ((unsigned)((x) - ID_BASE) < MAX_NUM_SENSORS)
@@ -75,6 +81,9 @@
SENSOR_(ORIENTATION,"orientation") \
SENSOR_(TEMPERATURE,"temperature") \
SENSOR_(PROXIMITY,"proximity") \
+ SENSOR_(LIGHT, "light") \
+ SENSOR_(PRESSURE, "pressure") \
+ SENSOR_(HUMIDITY, "humidity")
static const struct {
const char* name;
@@ -302,7 +311,7 @@ static int sensor_device_poll_event_locked(SensorDevice* dev)
events[ID_ORIENTATION].orientation.roll = params[2];
events[ID_ORIENTATION].orientation.status =
SENSOR_STATUS_ACCURACY_HIGH;
- events[ID_ACCELERATION].type = SENSOR_TYPE_ORIENTATION;
+ events[ID_ORIENTATION].type = SENSOR_TYPE_ORIENTATION;
continue;
}
@@ -316,7 +325,7 @@ static int sensor_device_poll_event_locked(SensorDevice* dev)
events[ID_MAGNETIC_FIELD].magnetic.z = params[2];
events[ID_MAGNETIC_FIELD].magnetic.status =
SENSOR_STATUS_ACCURACY_HIGH;
- events[ID_ACCELERATION].type = SENSOR_TYPE_MAGNETIC_FIELD;
+ events[ID_MAGNETIC_FIELD].type = SENSOR_TYPE_MAGNETIC_FIELD;
continue;
}
@@ -324,15 +333,38 @@ static int sensor_device_poll_event_locked(SensorDevice* dev)
if (sscanf(buff, "temperature:%g", params+0) == 1) {
new_sensors |= SENSORS_TEMPERATURE;
events[ID_TEMPERATURE].temperature = params[0];
- events[ID_ACCELERATION].type = SENSOR_TYPE_TEMPERATURE;
+ events[ID_TEMPERATURE].type = SENSOR_TYPE_TEMPERATURE;
continue;
}
-
+
/* "proximity:<value>" */
if (sscanf(buff, "proximity:%g", params+0) == 1) {
new_sensors |= SENSORS_PROXIMITY;
events[ID_PROXIMITY].distance = params[0];
- events[ID_ACCELERATION].type = SENSOR_TYPE_PROXIMITY;
+ events[ID_PROXIMITY].type = SENSOR_TYPE_PROXIMITY;
+ continue;
+ }
+ /* "light:<lux>" */
+ if (sscanf(buff, "light:%g", params+0) == 1) {
+ new_sensors |= SENSORS_LIGHT;
+ events[ID_LIGHT].light = params[0];
+ events[ID_LIGHT].type = SENSOR_TYPE_LIGHT;
+ continue;
+ }
+
+ /* "pressure:<hpa>" */
+ if (sscanf(buff, "pressure:%g", params+0) == 1) {
+ new_sensors |= SENSORS_PRESSURE;
+ events[ID_PRESSURE].pressure = params[0];
+ events[ID_PRESSURE].type = SENSOR_TYPE_PRESSURE;
+ continue;
+ }
+
+ /* "humidity:<percent>" */
+ if (sscanf(buff, "humidity:%g", params+0) == 1) {
+ new_sensors |= SENSORS_HUMIDITY;
+ events[ID_HUMIDITY].relative_humidity = params[0];
+ events[ID_HUMIDITY].type = SENSOR_TYPE_RELATIVE_HUMIDITY;
continue;
}
@@ -526,7 +558,8 @@ static int sensor_device_set_delay(struct sensors_poll_device_t *dev0,
* according to which hardware sensors are reported as
* available from the emulator (see get_sensors_list below)
*
- * note: numerical values for maxRange/resolution/power were
+ * note: numerical values for maxRange/resolution/power for
+ * all sensors but light, pressure and humidity were
* taken from the reference AK8976A implementation
*/
static const struct sensor_t sSensorListInit[] = {
@@ -584,6 +617,39 @@ static const struct sensor_t sSensorListInit[] = {
.power = 20.0f,
.reserved = {}
},
+
+ { .name = "Goldfish Light sensor",
+ .vendor = "The Android Open Source Project",
+ .version = 1,
+ .handle = ID_LIGHT,
+ .type = SENSOR_TYPE_LIGHT,
+ .maxRange = 40000.0f,
+ .resolution = 1.0f,
+ .power = 20.0f,
+ .reserved = {}
+ },
+
+ { .name = "Goldfish Pressure sensor",
+ .vendor = "The Android Open Source Project",
+ .version = 1,
+ .handle = ID_PRESSURE,
+ .type = SENSOR_TYPE_PRESSURE,
+ .maxRange = 800.0f,
+ .resolution = 1.0f,
+ .power = 20.0f,
+ .reserved = {}
+ },
+
+ { .name = "Goldfish Humidity sensor",
+ .vendor = "The Android Open Source Project",
+ .version = 1,
+ .handle = ID_HUMIDITY,
+ .type = SENSOR_TYPE_RELATIVE_HUMIDITY,
+ .maxRange = 100.0f,
+ .resolution = 1.0f,
+ .power = 20.0f,
+ .reserved = {}
+ }
};
static struct sensor_t sSensorList[MAX_NUM_SENSORS];