Add missing glGetInternalformativ GLESv3 function 83/291983/2
authorPaweł Stawicki <p.stawicki@samsung.com>
Wed, 19 Apr 2023 17:41:39 +0000 (19:41 +0200)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Tue, 25 Apr 2023 22:04:39 +0000 (00:04 +0200)
Change-Id: I77815849bb62141e48ee361c9dc4628bd349b8ce

GLES_common/yagl_gles_calls.in
GLES_common/yagl_host_gles_calls.c
GLES_common/yagl_host_gles_calls.h
GLESv2/yagl_gles3_calls.c

index 84e6f33cb490a3f187031a5c6b70da0b9229549b..9ce0385d68c12c1dcfcfe6fa16db05d43434de8f 100644 (file)
@@ -263,3 +263,9 @@ void glGetClipPlanef(GLenum pname, GLfloat *eqn)
 void glUpdateOffscreenImageYAGL(GLuint texture, uint32_t width, uint32_t height, uint32_t bpp, const void *pixels)
 void glGenUniformLocationYAGL(uint32_t location, GLuint program, const GLchar *name)
 void glDeleteUniformLocationsYAGL(const uint32_t *locations)
+
+#
+# GLES 3.0
+#
+
+void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)
index 6f2c01d7bfecb3799835d138184dde8abadd1f74..1f34c5da86aea84fa800fd176974d473d480129a 100644 (file)
@@ -3543,3 +3543,19 @@ void yagl_host_glDeleteUniformLocationsYAGL(const uint32_t *locations, int32_t l
     yagl_transport_put_out_array(t, locations, locations_count, sizeof(uint32_t));
     yagl_transport_end(t);
 }
+
+/*
+ * glGetInternalformativ wrapper. id = 248
+ */
+void yagl_host_glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params, int32_t params_maxcount, int32_t *params_count)
+{
+    struct yagl_transport *t = yagl_get_transport();
+
+    yagl_transport_begin(t, yagl_api_id_gles, 248, 6 * 8, 4 * 8 + yagl_transport_array_size(params, params_maxcount, sizeof(GLint)));
+    yagl_transport_put_out_GLenum(t, target);
+    yagl_transport_put_out_GLenum(t, internalformat);
+    yagl_transport_put_out_GLenum(t, pname);
+    yagl_transport_put_out_GLsizei(t, bufSize);
+    yagl_transport_put_in_array(t, params, params_maxcount, params_count, sizeof(GLint));
+    yagl_transport_end(t);
+}
index af9a34fe190f48e6684c2fdce0b4826927d608c2..a62b2987d85822f6250104909c03d4ea1fd635fd 100644 (file)
@@ -1242,4 +1242,9 @@ void yagl_host_glGenUniformLocationYAGL(uint32_t location, GLuint program, const
  */
 void yagl_host_glDeleteUniformLocationsYAGL(const uint32_t *locations, int32_t locations_count);
 
+/*
+ * glGetInternalformativ wrapper. id = 248
+ */
+void yagl_host_glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params, int32_t params_maxcount, int32_t *params_count);
+
 #endif
index b0d9e1fbf3b9c6698e56e6e97a5c209ced28addb..5d6b4443fe5388f1f5c3b070b8f3149de6ce5421 100644 (file)
@@ -2850,11 +2850,19 @@ YAGL_API void glProgramParameteri(GLuint program, GLenum pname, GLint value)
 
 YAGL_API void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)
 {
+    int32_t num = 0;
+
     YAGL_LOG_FUNC_ENTER_SPLIT5(glGetInternalformativ, GLenum, GLenum, GLenum, GLsizei, GLint*, target, internalformat, pname, bufSize, params);
 
     YAGL_GET_CTX();
 
-    YAGL_SET_ERR(GL_INVALID_OPERATION);
+    if (bufSize < 0) {
+        YAGL_SET_ERR(GL_INVALID_VALUE);
+        goto out;
+    }
 
+    yagl_host_glGetInternalformativ(target, internalformat, pname, bufSize, params, bufSize, &num);
+
+out:
     YAGL_LOG_FUNC_EXIT(NULL);
 }