Lines Matching refs:rb
70 delete_renderbuffer(struct gl_context *ctx, struct gl_renderbuffer *rb)
73 pipe_surface_release(ctx->pipe, &rb->surface_srgb);
74 pipe_surface_release(ctx->pipe, &rb->surface_linear);
76 pipe_surface_release_no_context(&rb->surface_srgb);
77 pipe_surface_release_no_context(&rb->surface_linear);
79 rb->surface = NULL;
80 pipe_resource_reference(&rb->texture, NULL);
81 free(rb->data);
82 free(rb->Label);
83 free(rb);
88 struct gl_renderbuffer *rb,
95 free(rb->data);
96 rb->data = NULL;
117 rb->Format = st_pipe_format_to_mesa_format(format);
119 size = _mesa_format_image_size(rb->Format, width, height, 1);
120 rb->data = malloc(size);
121 return rb->data != NULL;
132 struct gl_renderbuffer *rb,
142 rb->Width = width;
143 rb->Height = height;
144 rb->_BaseFormat = _mesa_base_fbo_format(ctx, internalFormat);
145 rb->defined = GL_FALSE; /* undefined contents now */
147 if (rb->software) {
148 return renderbuffer_alloc_sw_storage(ctx, rb, internalFormat,
154 pipe_surface_reference(&rb->surface_srgb, NULL);
155 pipe_surface_reference(&rb->surface_linear, NULL);
156 rb->surface = NULL;
157 pipe_resource_reference(&rb->texture, NULL);
179 * Find the supported number of samples >= rb->NumSamples
181 if (rb->NumSamples > 0) {
184 if (ctx->Const.MaxSamples > 1 && rb->NumSamples == 1) {
189 start = rb->NumSamples;
190 start_storage = rb->NumStorageSamples;
194 if (rb->_BaseFormat == GL_DEPTH_COMPONENT ||
195 rb->_BaseFormat == GL_DEPTH_STENCIL ||
196 rb->_BaseFormat == GL_STENCIL_INDEX) {
205 rb->NumSamples = samples;
206 rb->NumStorageSamples = samples;
223 rb->NumSamples = samples;
224 rb->NumStorageSamples = storage_samples;
238 rb->NumSamples = samples;
239 rb->NumStorageSamples = samples;
255 rb->Format = st_pipe_format_to_mesa_format(format);
271 templ.nr_samples = rb->NumSamples;
272 templ.nr_storage_samples = rb->NumStorageSamples;
277 else if (rb->Name != 0) {
287 rb->texture = screen->resource_create(screen, &templ);
289 if (!rb->texture)
292 _mesa_update_renderbuffer_surface(ctx, rb);
293 return rb->surface != NULL;
300 _mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name)
304 rb->ClassID = 0;
305 rb->Name = name;
306 rb->RefCount = 1;
307 rb->Delete = delete_renderbuffer;
312 rb->AllocStorage = NULL;
314 rb->Width = 0;
315 rb->Height = 0;
316 rb->Depth = 0;
329 rb->InternalFormat = GL_RGBA4;
331 rb->InternalFormat = GL_RGBA;
334 rb->Format = MESA_FORMAT_NONE;
336 rb->AllocStorage = renderbuffer_alloc_storage;
342 struct gl_renderbuffer *rb)
345 assert(rb);
358 assert(rb->Name);
361 assert(!rb->Name);
379 struct gl_renderbuffer *rb)
381 assert(rb->RefCount == 1);
383 validate_and_init_renderbuffer_attachment(fb, bufferName, rb);
387 fb->Attachment[bufferName].Renderbuffer = rb;
397 struct gl_renderbuffer *rb)
399 validate_and_init_renderbuffer_attachment(fb, bufferName, rb);
400 _mesa_reference_renderbuffer(&fb->Attachment[bufferName].Renderbuffer, rb);
419 * Set *ptr to point to rb. If *ptr points to another renderbuffer,
427 struct gl_renderbuffer *rb)
441 if (rb) {
443 p_atomic_inc(&rb->RefCount);
446 *ptr = rb;
451 struct gl_renderbuffer *rb,
462 if (rb->software) {
464 if (rb->data) {
465 GLint bpp = _mesa_get_format_bytes(rb->Format);
466 GLint stride = _mesa_format_row_stride(rb->Format,
467 rb->Width);
468 *mapOut = (GLubyte *) rb->data + y * stride + x * bpp;
491 y2 = rb->Height - y - h;
496 rb->texture,
497 rb->surface->u.tex.level,
498 rb->surface->u.tex.first_layer,
499 transfer_flags, x, y2, w, h, &rb->transfer);
502 *rowStrideOut = -(int) rb->transfer->stride;
503 map += (h - 1) * rb->transfer->stride;
506 *rowStrideOut = rb->transfer->stride;
518 struct gl_renderbuffer *rb)
522 if (rb->software) {
527 pipe_texture_unmap(pipe, rb->transfer);
528 rb->transfer = NULL;
533 struct gl_renderbuffer *rb)
536 struct pipe_resource *resource = rb->texture;
539 rb->surface_srgb ? &rb->surface_srgb : &rb->surface_linear;
545 surf_tmpl.nr_samples = rb->rtt_nr_samples;
555 rb->surface = *psurf;
564 struct gl_renderbuffer *rb)
567 struct pipe_resource *resource = rb->texture;
569 unsigned rtt_width = rb->Width;
570 unsigned rtt_height = rb->Height;
571 unsigned rtt_depth = rb->Depth;
575 * the format of rb->texture is linear (because we have no control over
576 * the format). Check rb->Format instead of rb->texture->format
577 * to determine if the rb is sRGB-capable.
580 _mesa_is_format_srgb(rb->Format);
583 if (rb->is_rtt) {
584 stTexObj = rb->TexImage->TexObject;
610 if (rb->rtt_layered) {
612 last_layer = util_max_layer(rb->texture, level);
616 last_layer = rb->rtt_face + rb->rtt_slice;
620 if (rb->is_rtt && resource->array_size > 1 &&
624 if (!rb->rtt_layered)
632 enable_srgb ? &rb->surface_srgb : &rb->surface_linear;
636 surf->texture->nr_samples != rb->NumSamples ||
637 surf->texture->nr_storage_samples != rb->NumStorageSamples ||
642 surf->nr_samples != rb->rtt_nr_samples ||
650 surf_tmpl.nr_samples = rb->rtt_nr_samples;
660 rb->surface = *psurf;