summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVasiliy Ulyanov <v.ulyanov@samsung.com>2016-12-09 13:06:48 +0300
committerVasiliy Ulyanov <v.ulyanov@samsung.com>2017-01-23 11:24:17 +0300
commit49d296e27a95a384d77310cf7fdba635f3d4ced0 (patch)
treed81bb5a63e3016cbe7bb01371a4eed19e178b881
parent10cbad9bfe346f80c276180f2fd9f844a8b08916 (diff)
downloademulator-yagl-49d296e27a95a384d77310cf7fdba635f3d4ced0.tar.gz
emulator-yagl-49d296e27a95a384d77310cf7fdba635f3d4ced0.tar.bz2
emulator-yagl-49d296e27a95a384d77310cf7fdba635f3d4ced0.zip
Avoid using yagl_host_handle when acquiring imagesdevel/vulkan
yagl_host_handle is defined as uint32_t, while EGL image client handle (either EGLImageKHR or GLeglImageOES) is void *. On x64 arch the cast to yagl_host_handle will lead to data truncation and as a result the image may not be found. Change-Id: I02e8a14326c635d0f6bcb0e9b289a0467c846f1f Signed-off-by: Vasiliy Ulyanov <v.ulyanov@samsung.com>
-rw-r--r--EGL/yagl_client_image.c4
-rw-r--r--GLES_common/yagl_gles_calls.c2
-rw-r--r--include/yagl_client_image.h2
3 files changed, 4 insertions, 4 deletions
diff --git a/EGL/yagl_client_image.c b/EGL/yagl_client_image.c
index 4dc03cf..8eac326 100644
--- a/EGL/yagl_client_image.c
+++ b/EGL/yagl_client_image.c
@@ -62,7 +62,7 @@ void yagl_client_image_release(struct yagl_client_image *image)
}
}
-struct yagl_client_image *yagl_acquire_client_image(yagl_host_handle handle)
+struct yagl_client_image *yagl_acquire_client_image(void *handle)
{
struct yagl_context *ctx = yagl_get_context();
struct yagl_image *image;
@@ -72,7 +72,7 @@ struct yagl_client_image *yagl_acquire_client_image(yagl_host_handle handle)
return NULL;
}
- image = yagl_display_image_acquire(ctx->dpy, (EGLImageKHR)INT2VOIDP(handle));
+ image = yagl_display_image_acquire(ctx->dpy, (EGLImageKHR)handle);
if (!image) {
return NULL;
diff --git a/GLES_common/yagl_gles_calls.c b/GLES_common/yagl_gles_calls.c
index 22e4c20..a87f4c5 100644
--- a/GLES_common/yagl_gles_calls.c
+++ b/GLES_common/yagl_gles_calls.c
@@ -2444,7 +2444,7 @@ YAGL_API void glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
goto out;
}
- image_obj = (struct yagl_gles_image*)yagl_acquire_client_image((yagl_host_handle)VOIDP2INT(image));
+ image_obj = (struct yagl_gles_image*)yagl_acquire_client_image(image);
if (!image_obj) {
YAGL_SET_ERR(GL_INVALID_OPERATION);
diff --git a/include/yagl_client_image.h b/include/yagl_client_image.h
index 19ea605..08c979c 100644
--- a/include/yagl_client_image.h
+++ b/include/yagl_client_image.h
@@ -64,6 +64,6 @@ YAGL_API void yagl_client_image_acquire(struct yagl_client_image *image);
*/
YAGL_API void yagl_client_image_release(struct yagl_client_image *image);
-YAGL_API struct yagl_client_image *yagl_acquire_client_image(yagl_host_handle handle);
+YAGL_API struct yagl_client_image *yagl_acquire_client_image(void *handle);
#endif