mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-30 00:31:14 +00:00
LibGL: Implement glListBase
This commit is contained in:
parent
1056bac49a
commit
11fea6b597
Notes:
sideshowbarker
2024-07-17 22:52:09 +09:00
Author: https://github.com/gmta Commit: https://github.com/SerenityOS/serenity/commit/11fea6b5979 Pull-request: https://github.com/SerenityOS/serenity/pull/11154 Reviewed-by: https://github.com/sunverwerth ✅
|
@ -393,6 +393,7 @@ GLAPI GLuint glGenLists(GLsizei range);
|
|||
GLAPI void glCallList(GLuint list);
|
||||
GLAPI void glCallLists(GLsizei n, GLenum type, void const* lists);
|
||||
GLAPI void glDeleteLists(GLuint list, GLsizei range);
|
||||
GLAPI void glListBase(GLuint base);
|
||||
GLAPI void glEndList(void);
|
||||
GLAPI void glNewList(GLuint list, GLenum mode);
|
||||
GLAPI void glFlush();
|
||||
|
|
|
@ -50,6 +50,7 @@ public:
|
|||
virtual void gl_call_list(GLuint list) = 0;
|
||||
virtual void gl_call_lists(GLsizei n, GLenum type, void const* lists) = 0;
|
||||
virtual void gl_delete_lists(GLuint list, GLsizei range) = 0;
|
||||
virtual void gl_list_base(GLuint base) = 0;
|
||||
virtual void gl_end_list(void) = 0;
|
||||
virtual void gl_new_list(GLuint list, GLenum mode) = 0;
|
||||
virtual void gl_flush() = 0;
|
||||
|
|
|
@ -29,6 +29,11 @@ void glDeleteLists(GLuint list, GLsizei range)
|
|||
return g_gl_context->gl_delete_lists(list, range);
|
||||
}
|
||||
|
||||
void glListBase(GLuint base)
|
||||
{
|
||||
return g_gl_context->gl_list_base(base);
|
||||
}
|
||||
|
||||
void glEndList(void)
|
||||
{
|
||||
return g_gl_context->gl_end_list();
|
||||
|
|
|
@ -926,7 +926,7 @@ void SoftwareGLContext::gl_call_lists(GLsizei n, GLenum type, void const* lists)
|
|||
auto invoke_all_lists = [&]<typename T>(T const* lists) {
|
||||
for (int i = 0; i < n; ++i) {
|
||||
auto list = static_cast<size_t>(lists[i]);
|
||||
invoke_list(list);
|
||||
invoke_list(m_list_base + list);
|
||||
}
|
||||
};
|
||||
switch (type) {
|
||||
|
@ -970,6 +970,15 @@ void SoftwareGLContext::gl_delete_lists(GLuint list, GLsizei range)
|
|||
entry.entries.clear_with_capacity();
|
||||
}
|
||||
|
||||
void SoftwareGLContext::gl_list_base(GLuint base)
|
||||
{
|
||||
APPEND_TO_CALL_LIST_AND_RETURN_IF_NEEDED(gl_list_base, base);
|
||||
|
||||
RETURN_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION);
|
||||
|
||||
m_list_base = base;
|
||||
}
|
||||
|
||||
void SoftwareGLContext::gl_end_list()
|
||||
{
|
||||
RETURN_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION);
|
||||
|
|
|
@ -61,6 +61,7 @@ public:
|
|||
virtual void gl_call_list(GLuint list) override;
|
||||
virtual void gl_call_lists(GLsizei n, GLenum type, void const* lists) override;
|
||||
virtual void gl_delete_lists(GLuint list, GLsizei range) override;
|
||||
virtual void gl_list_base(GLuint base) override;
|
||||
virtual void gl_end_list(void) override;
|
||||
virtual void gl_new_list(GLuint list, GLenum mode) override;
|
||||
virtual void gl_flush() override;
|
||||
|
@ -254,6 +255,7 @@ private:
|
|||
static constexpr size_t max_allowed_gl_call_depth { 128 };
|
||||
size_t m_gl_call_depth { 0 };
|
||||
Vector<Listing> m_listings;
|
||||
size_t m_list_base { 0 };
|
||||
struct CurrentListing {
|
||||
Listing listing;
|
||||
size_t index { 0 };
|
||||
|
|
Loading…
Reference in a new issue