Преглед на файлове

LibGL: Add stub for glCopyTexSubImage2D

Jesse Buhagiar преди 3 години
родител
ревизия
c08dfe063a
променени са 4 файла, в които са добавени 21 реда и са изтрити 1 реда
  1. 1 0
      Userland/Libraries/LibGL/GL/gl.h
  2. 12 0
      Userland/Libraries/LibGL/GLContext.cpp
  3. 3 1
      Userland/Libraries/LibGL/GLContext.h
  4. 5 0
      Userland/Libraries/LibGL/GLTexture.cpp

+ 1 - 0
Userland/Libraries/LibGL/GL/gl.h

@@ -681,6 +681,7 @@ GLAPI void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GL
 GLAPI void glPointSize(GLfloat size);
 GLAPI void glClipPlane(GLenum plane, GLdouble const* equation);
 GLAPI void glArrayElement(GLint i);
+GLAPI void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
 
 #ifdef __cplusplus
 }

+ 12 - 0
Userland/Libraries/LibGL/GLContext.cpp

@@ -3721,6 +3721,18 @@ void GLContext::get_material_param(Face face, GLenum pname, T* params)
     }
 }
 
+void GLContext::gl_copy_tex_sub_image_2d(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+    APPEND_TO_CALL_LIST_AND_RETURN_IF_NEEDED(gl_copy_tex_sub_image_2d, target, level, xoffset, yoffset, x, y, width, height);
+    RETURN_WITH_ERROR_IF(!(target == GL_TEXTURE_2D || target == GL_TEXTURE_1D_ARRAY), GL_INVALID_ENUM);
+    RETURN_WITH_ERROR_IF(level < 0, GL_INVALID_VALUE);
+    RETURN_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION);
+
+    // FIXME: implement
+    dbgln_if(GL_DEBUG, "GLContext FIXME: implement gl_copy_tex_sub_image_2d({:#x}, {}, {}, {}, {}, {}, {}, {})",
+        target, level, xoffset, yoffset, x, y, width, height);
+}
+
 NonnullOwnPtr<GLContext> create_context(Gfx::Bitmap& bitmap)
 {
     // FIXME: Make driver selectable. This is currently hardcoded to LibSoftGPU

+ 3 - 1
Userland/Libraries/LibGL/GLContext.h

@@ -159,6 +159,7 @@ public:
     void gl_get_material(GLenum face, GLenum pname, void* params, GLenum type);
     void gl_clip_plane(GLenum plane, GLdouble const* equation);
     void gl_array_element(GLint i);
+    void gl_copy_tex_sub_image_2d(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
     void present();
 
 private:
@@ -402,7 +403,8 @@ private:
             decltype(&GLContext::gl_color_material),
             decltype(&GLContext::gl_get_light),
             decltype(&GLContext::gl_clip_plane),
-            decltype(&GLContext::gl_array_element)>;
+            decltype(&GLContext::gl_array_element),
+            decltype(&GLContext::gl_copy_tex_sub_image_2d)>;
 
         using ExtraSavedArguments = Variant<
             FloatMatrix4x4>;

+ 5 - 0
Userland/Libraries/LibGL/GLTexture.cpp

@@ -111,3 +111,8 @@ void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* p
 {
     g_gl_context->gl_get_tex_parameter_integerv(target, level, pname, params);
 }
+
+void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+    g_gl_context->gl_copy_tex_sub_image_2d(target, level, xoffset, yoffset, x, y, width, height);
+}