YAGL_GET_CTX();
- yagl_render_invalidate((mask & GL_COLOR_BUFFER_BIT));
-
- yagl_host_glClear(mask);
+ yagl_gles_context_clear(ctx, mask);
YAGL_LOG_FUNC_EXIT(NULL);
}
yagl_host_glHint(target, mode);
}
+
+void yagl_gles_context_clear(struct yagl_gles_context *ctx, GLbitfield mask)
+{
+ YAGL_LOG_FUNC_SET(yagl_gles_context_clear);
+
+ if (mask & ~(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)) {
+ YAGL_SET_ERR(GL_INVALID_VALUE);
+ return;
+ }
+
+ yagl_render_invalidate((mask & GL_COLOR_BUFFER_BIT));
+
+ ctx->clear(ctx);
+
+ yagl_host_glClear(mask);
+}
GLenum /*target*/,
GLenum /*mode*/);
+ void (*clear)(struct yagl_gles_context */*ctx*/);
+
struct yagl_namespace framebuffers;
struct yagl_namespace vertex_arrays;
GLenum target,
GLenum mode);
+void yagl_gles_context_clear(struct yagl_gles_context *ctx,
+ GLbitfield mask);
+
#endif
{
}
+static void yagl_gles1_context_clear(struct yagl_gles_context *ctx)
+{
+}
+
struct yagl_client_context *yagl_gles1_context_create(struct yagl_sharegroup *sg)
{
struct yagl_gles1_context *gles1_ctx;
gles1_ctx->base.validate_renderbuffer_format = &yagl_gles1_context_validate_renderbuffer_format;
gles1_ctx->base.validate_framebuffer_blit = &yagl_gles1_context_validate_framebuffer_blit;
gles1_ctx->base.hint = &yagl_gles1_context_hint;
+ gles1_ctx->base.clear = &yagl_gles1_context_clear;
YAGL_LOG_FUNC_EXIT("%p", gles1_ctx);
yagl_gles_framebuffer_texture2d(fb,
fb->target,
GL_COLOR_ATTACHMENT0 + i,
- yagl_gles_framebuffer_attachment_color0,
+ yagl_gles_framebuffer_attachment_color0 + i,
state.textarget,
0,
state.texture);
{
}
+void yagl_gles2_context_clear(struct yagl_gles_context *gles_ctx)
+{
+ struct yagl_gles2_context *ctx = (struct yagl_gles2_context *)gles_ctx;
+
+ yagl_gles2_context_prepare_framebuffer(ctx, ctx->base.fbo_draw);
+}
+
int yagl_gles2_context_get_programiv(struct yagl_gles2_context *ctx,
struct yagl_gles2_program *program,
GLenum pname,
gles2_ctx->base.validate_renderbuffer_format = &yagl_gles2_context_validate_renderbuffer_format;
gles2_ctx->base.validate_framebuffer_blit = &yagl_gles2_context_validate_framebuffer_blit;
gles2_ctx->base.hint = &yagl_gles2_context_hint;
+ gles2_ctx->base.clear = &yagl_gles2_context_clear;
gles2_ctx->get_programiv = &yagl_gles2_context_get_programiv;
gles2_ctx->pre_use_program = &yagl_gles2_context_pre_use_program;
gles2_ctx->pre_link_program = &yagl_gles2_context_pre_link_program;
GLenum target,
GLenum mode);
+void yagl_gles2_context_clear(struct yagl_gles_context *ctx);
+
int yagl_gles2_context_get_programiv(struct yagl_gles2_context *ctx,
struct yagl_gles2_program *program,
GLenum pname,
}
}
+static void yagl_gles3_context_clear(struct yagl_gles_context *gles_ctx)
+{
+ yagl_gles2_context_clear(gles_ctx);
+}
+
static int yagl_gles3_context_get_programiv(struct yagl_gles2_context *ctx,
struct yagl_gles2_program *program,
GLenum pname,
gles3_ctx->base.base.validate_renderbuffer_format = &yagl_gles3_context_validate_renderbuffer_format;
gles3_ctx->base.base.validate_framebuffer_blit = &yagl_gles3_context_validate_framebuffer_blit;
gles3_ctx->base.base.hint = &yagl_gles3_context_hint;
+ gles3_ctx->base.base.clear = &yagl_gles3_context_clear;
gles3_ctx->base.get_programiv = &yagl_gles3_context_get_programiv;
gles3_ctx->base.pre_use_program = &yagl_gles3_context_pre_use_program;
gles3_ctx->base.pre_link_program = &yagl_gles3_context_pre_link_program;