mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-10-29 05:40:12 -04:00
renderer: Drop buffer binding
This commit is contained in:
parent
3ed1268f64
commit
d3a339a03e
13 changed files with 0 additions and 307 deletions
|
|
@ -42,14 +42,6 @@ struct wlr_gles2_renderer *gles2_get_renderer(
|
|||
return renderer;
|
||||
}
|
||||
|
||||
static struct wlr_gles2_renderer *gles2_get_renderer_in_context(
|
||||
struct wlr_renderer *wlr_renderer) {
|
||||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
||||
assert(wlr_egl_is_current(renderer->egl));
|
||||
assert(renderer->current_buffer != NULL);
|
||||
return renderer;
|
||||
}
|
||||
|
||||
bool wlr_render_timer_is_gles2(struct wlr_render_timer *timer) {
|
||||
return timer->impl == &render_timer_impl;
|
||||
}
|
||||
|
|
@ -175,101 +167,6 @@ error_buffer:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static bool gles2_bind_buffer(struct wlr_renderer *wlr_renderer,
|
||||
struct wlr_buffer *wlr_buffer) {
|
||||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
||||
|
||||
if (renderer->current_buffer != NULL) {
|
||||
assert(wlr_egl_is_current(renderer->egl));
|
||||
|
||||
push_gles2_debug(renderer);
|
||||
glFlush();
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
pop_gles2_debug(renderer);
|
||||
|
||||
wlr_buffer_unlock(renderer->current_buffer->buffer);
|
||||
renderer->current_buffer = NULL;
|
||||
}
|
||||
|
||||
if (wlr_buffer == NULL) {
|
||||
wlr_egl_unset_current(renderer->egl);
|
||||
return true;
|
||||
}
|
||||
|
||||
wlr_egl_make_current(renderer->egl);
|
||||
|
||||
GLint fbo = gles2_buffer_get_fbo(renderer->current_buffer);
|
||||
if (!fbo) {
|
||||
return false;
|
||||
}
|
||||
|
||||
struct wlr_gles2_buffer *buffer = gles2_buffer_get_or_create(renderer, wlr_buffer);
|
||||
if (buffer == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
wlr_buffer_lock(wlr_buffer);
|
||||
renderer->current_buffer = buffer;
|
||||
|
||||
push_gles2_debug(renderer);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
|
||||
pop_gles2_debug(renderer);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static const char *reset_status_str(GLenum status) {
|
||||
switch (status) {
|
||||
case GL_GUILTY_CONTEXT_RESET_KHR:
|
||||
return "guilty";
|
||||
case GL_INNOCENT_CONTEXT_RESET_KHR:
|
||||
return "innocent";
|
||||
case GL_UNKNOWN_CONTEXT_RESET_KHR:
|
||||
return "unknown";
|
||||
default:
|
||||
return "<invalid>";
|
||||
}
|
||||
}
|
||||
|
||||
static bool gles2_begin(struct wlr_renderer *wlr_renderer, uint32_t width,
|
||||
uint32_t height) {
|
||||
struct wlr_gles2_renderer *renderer =
|
||||
gles2_get_renderer_in_context(wlr_renderer);
|
||||
|
||||
push_gles2_debug(renderer);
|
||||
|
||||
if (renderer->procs.glGetGraphicsResetStatusKHR) {
|
||||
GLenum status = renderer->procs.glGetGraphicsResetStatusKHR();
|
||||
if (status != GL_NO_ERROR) {
|
||||
wlr_log(WLR_ERROR, "GPU reset (%s)", reset_status_str(status));
|
||||
wl_signal_emit_mutable(&wlr_renderer->events.lost, NULL);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
glViewport(0, 0, width, height);
|
||||
renderer->viewport_width = width;
|
||||
renderer->viewport_height = height;
|
||||
|
||||
// refresh projection matrix
|
||||
matrix_projection(renderer->projection, width, height,
|
||||
WL_OUTPUT_TRANSFORM_FLIPPED_180);
|
||||
|
||||
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
// XXX: maybe we should save output projection and remove some of the need
|
||||
// for users to sling matricies themselves
|
||||
|
||||
pop_gles2_debug(renderer);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void gles2_end(struct wlr_renderer *wlr_renderer) {
|
||||
gles2_get_renderer_in_context(wlr_renderer);
|
||||
// no-op
|
||||
}
|
||||
|
||||
static const uint32_t *gles2_get_shm_texture_formats(
|
||||
struct wlr_renderer *wlr_renderer, size_t *len) {
|
||||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
||||
|
|
@ -446,9 +343,6 @@ static void gles2_render_timer_destroy(struct wlr_render_timer *wlr_timer) {
|
|||
|
||||
static const struct wlr_renderer_impl renderer_impl = {
|
||||
.destroy = gles2_destroy,
|
||||
.bind_buffer = gles2_bind_buffer,
|
||||
.begin = gles2_begin,
|
||||
.end = gles2_end,
|
||||
.get_shm_texture_formats = gles2_get_shm_texture_formats,
|
||||
.get_dmabuf_texture_formats = gles2_get_dmabuf_texture_formats,
|
||||
.get_render_formats = gles2_get_render_formats,
|
||||
|
|
@ -799,9 +693,3 @@ bool wlr_gles2_renderer_check_ext(struct wlr_renderer *wlr_renderer,
|
|||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
||||
return check_gl_ext(renderer->exts_str, ext);
|
||||
}
|
||||
|
||||
GLuint wlr_gles2_renderer_get_current_fbo(struct wlr_renderer *wlr_renderer) {
|
||||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
||||
assert(renderer->current_buffer);
|
||||
return gles2_buffer_get_fbo(renderer->current_buffer);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue