Lines Matching refs:stfb

181 st_framebuffer_validate(struct st_framebuffer *stfb,
188 int32_t new_stamp = p_atomic_read(&stfb->iface->stamp);
190 if (stfb->iface_stamp == new_stamp)
195 if (!stfb->iface->validate(stfb->iface, stfb->statts,
196 stfb->num_statts, textures))
199 stfb->iface_stamp = new_stamp;
200 new_stamp = p_atomic_read(&stfb->iface->stamp);
201 } while(stfb->iface_stamp != new_stamp);
203 width = stfb->Base.Width;
204 height = stfb->Base.Height;
206 for (i = 0; i < stfb->num_statts; i++) {
214 idx = attachment_to_buffer_index(stfb->statts[i]);
220 strb = st_renderbuffer(stfb->Base.Attachment[idx].Renderbuffer);
249 ++stfb->stamp;
250 _mesa_resize_framebuffer(st->ctx, &stfb->Base, width, height);
258 st_framebuffer_update_attachments(struct st_framebuffer *stfb)
262 stfb->num_statts = 0;
267 strb = st_renderbuffer(stfb->Base.Attachment[idx].Renderbuffer);
273 st_visual_have_buffers(stfb->iface->visual, 1 << statt))
274 stfb->statts[stfb->num_statts++] = statt;
276 stfb->stamp++;
283 st_framebuffer_add_renderbuffer(struct st_framebuffer *stfb,
291 if (!stfb->iface)
300 format = stfb->iface->visual->depth_stencil_format;
304 format = stfb->iface->visual->accum_format;
308 format = stfb->iface->visual->color_format;
316 samples = stfb->iface->visual->samples;
325 _mesa_add_renderbuffer(&stfb->Base, idx, rb);
329 _mesa_add_renderbuffer(&stfb->Base, BUFFER_DEPTH, rb);
331 _mesa_add_renderbuffer(&stfb->Base, BUFFER_STENCIL, rb);
413 struct st_framebuffer *stfb;
420 stfb = CALLOC_STRUCT(st_framebuffer);
421 if (!stfb)
425 _mesa_initialize_window_framebuffer(&stfb->Base, &mode);
427 stfb->iface = stfbi;
428 stfb->iface_stamp = p_atomic_read(&stfbi->stamp) - 1;
431 idx = stfb->Base._ColorDrawBufferIndexes[0];
432 if (!st_framebuffer_add_renderbuffer(stfb, idx)) {
433 FREE(stfb);
437 st_framebuffer_add_renderbuffer(stfb, BUFFER_DEPTH);
438 st_framebuffer_add_renderbuffer(stfb, BUFFER_ACCUM);
440 stfb->stamp = 0;
441 st_framebuffer_update_attachments(stfb);
443 stfb->Base.Initialized = GL_TRUE;
445 return stfb;
453 struct st_framebuffer *stfb)
455 struct gl_framebuffer *fb = &stfb->Base;
690 struct st_framebuffer *cur = st_ws_framebuffer(fb), *stfb = NULL;
695 /* reuse the current stfb */
696 st_framebuffer_reference(&stfb, cur);
700 stfb = st_framebuffer_create(stfbi);
703 return stfb;
776 struct st_framebuffer *stfb = st_ws_framebuffer(st->ctx->DrawBuffer);
779 if (stfb)
780 strb = st_renderbuffer(stfb->Base.Attachment[BUFFER_FRONT_LEFT].Renderbuffer);
785 assert(&stfb->Base != _mesa_get_incomplete_framebuffer());
786 stfb->iface->flush_front(stfb->iface, ST_ATTACHMENT_FRONT_LEFT);
844 struct st_framebuffer *stfb = st_ws_framebuffer(fb);
847 if (!stfb)
850 if (stfb->Base.Attachment[idx].Renderbuffer)
864 if (!st_framebuffer_add_renderbuffer(stfb, idx))
867 st_framebuffer_update_attachments(stfb);
874 if(stfb->iface)
875 stfb->iface_stamp = p_atomic_read(&stfb->iface->stamp) - 1;