Lines Matching full:rb

70 delete_renderbuffer(struct gl_context *ctx, struct gl_renderbuffer *rb)  in delete_renderbuffer()  argument
73 pipe_surface_release(ctx->pipe, &rb->surface_srgb); in delete_renderbuffer()
74 pipe_surface_release(ctx->pipe, &rb->surface_linear); in delete_renderbuffer()
76 pipe_surface_release_no_context(&rb->surface_srgb); in delete_renderbuffer()
77 pipe_surface_release_no_context(&rb->surface_linear); in delete_renderbuffer()
79 rb->surface = NULL; in delete_renderbuffer()
80 pipe_resource_reference(&rb->texture, NULL); in delete_renderbuffer()
81 free(rb->data); in delete_renderbuffer()
82 free(rb->Label); in delete_renderbuffer()
83 free(rb); in delete_renderbuffer()
88 struct gl_renderbuffer *rb, in renderbuffer_alloc_sw_storage() argument
95 free(rb->data); in renderbuffer_alloc_sw_storage()
96 rb->data = NULL; in renderbuffer_alloc_sw_storage()
117 rb->Format = st_pipe_format_to_mesa_format(format); in renderbuffer_alloc_sw_storage()
119 size = _mesa_format_image_size(rb->Format, width, height, 1); in renderbuffer_alloc_sw_storage()
120 rb->data = malloc(size); in renderbuffer_alloc_sw_storage()
121 return rb->data != NULL; in renderbuffer_alloc_sw_storage()
132 struct gl_renderbuffer *rb, in renderbuffer_alloc_storage() argument
142 rb->Width = width; in renderbuffer_alloc_storage()
143 rb->Height = height; in renderbuffer_alloc_storage()
144 rb->_BaseFormat = _mesa_base_fbo_format(ctx, internalFormat); in renderbuffer_alloc_storage()
145 rb->defined = GL_FALSE; /* undefined contents now */ in renderbuffer_alloc_storage()
147 if (rb->software) { in renderbuffer_alloc_storage()
148 return renderbuffer_alloc_sw_storage(ctx, rb, internalFormat, in renderbuffer_alloc_storage()
154 pipe_surface_reference(&rb->surface_srgb, NULL); in renderbuffer_alloc_storage()
155 pipe_surface_reference(&rb->surface_linear, NULL); in renderbuffer_alloc_storage()
156 rb->surface = NULL; in renderbuffer_alloc_storage()
157 pipe_resource_reference(&rb->texture, NULL); in renderbuffer_alloc_storage()
179 * Find the supported number of samples >= rb->NumSamples in renderbuffer_alloc_storage()
181 if (rb->NumSamples > 0) { in renderbuffer_alloc_storage()
184 if (ctx->Const.MaxSamples > 1 && rb->NumSamples == 1) { in renderbuffer_alloc_storage()
189 start = rb->NumSamples; in renderbuffer_alloc_storage()
190 start_storage = rb->NumStorageSamples; in renderbuffer_alloc_storage()
194 if (rb->_BaseFormat == GL_DEPTH_COMPONENT || in renderbuffer_alloc_storage()
195 rb->_BaseFormat == GL_DEPTH_STENCIL || in renderbuffer_alloc_storage()
196 rb->_BaseFormat == GL_STENCIL_INDEX) { in renderbuffer_alloc_storage()
205 rb->NumSamples = samples; in renderbuffer_alloc_storage()
206 rb->NumStorageSamples = samples; in renderbuffer_alloc_storage()
223 rb->NumSamples = samples; in renderbuffer_alloc_storage()
224 rb->NumStorageSamples = storage_samples; in renderbuffer_alloc_storage()
238 rb->NumSamples = samples; in renderbuffer_alloc_storage()
239 rb->NumStorageSamples = samples; in renderbuffer_alloc_storage()
255 rb->Format = st_pipe_format_to_mesa_format(format); in renderbuffer_alloc_storage()
271 templ.nr_samples = rb->NumSamples; in renderbuffer_alloc_storage()
272 templ.nr_storage_samples = rb->NumStorageSamples; in renderbuffer_alloc_storage()
277 else if (rb->Name != 0) { in renderbuffer_alloc_storage()
287 rb->texture = screen->resource_create(screen, &templ); in renderbuffer_alloc_storage()
289 if (!rb->texture) in renderbuffer_alloc_storage()
292 _mesa_update_renderbuffer_surface(ctx, rb); in renderbuffer_alloc_storage()
293 return rb->surface != NULL; in renderbuffer_alloc_storage()
300 _mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name) in _mesa_init_renderbuffer() argument
304 rb->Name = name; in _mesa_init_renderbuffer()
305 rb->RefCount = 1; in _mesa_init_renderbuffer()
306 rb->Delete = delete_renderbuffer; in _mesa_init_renderbuffer()
311 rb->AllocStorage = NULL; in _mesa_init_renderbuffer()
313 rb->Width = 0; in _mesa_init_renderbuffer()
314 rb->Height = 0; in _mesa_init_renderbuffer()
315 rb->Depth = 0; in _mesa_init_renderbuffer()
328 rb->InternalFormat = GL_RGBA4; in _mesa_init_renderbuffer()
330 rb->InternalFormat = GL_RGBA; in _mesa_init_renderbuffer()
333 rb->Format = MESA_FORMAT_NONE; in _mesa_init_renderbuffer()
335 rb->AllocStorage = renderbuffer_alloc_storage; in _mesa_init_renderbuffer()
341 struct gl_renderbuffer *rb) in validate_and_init_renderbuffer_attachment() argument
344 assert(rb); in validate_and_init_renderbuffer_attachment()
357 assert(rb->Name); in validate_and_init_renderbuffer_attachment()
360 assert(!rb->Name); in validate_and_init_renderbuffer_attachment()
378 struct gl_renderbuffer *rb) in _mesa_attach_and_own_rb() argument
380 assert(rb->RefCount == 1); in _mesa_attach_and_own_rb()
382 validate_and_init_renderbuffer_attachment(fb, bufferName, rb); in _mesa_attach_and_own_rb()
386 fb->Attachment[bufferName].Renderbuffer = rb; in _mesa_attach_and_own_rb()
396 struct gl_renderbuffer *rb) in _mesa_attach_and_reference_rb() argument
398 validate_and_init_renderbuffer_attachment(fb, bufferName, rb); in _mesa_attach_and_reference_rb()
399 _mesa_reference_renderbuffer(&fb->Attachment[bufferName].Renderbuffer, rb); in _mesa_attach_and_reference_rb()
418 * Set *ptr to point to rb. If *ptr points to another renderbuffer,
426 struct gl_renderbuffer *rb) in _mesa_reference_renderbuffer_() argument
440 if (rb) { in _mesa_reference_renderbuffer_()
442 p_atomic_inc(&rb->RefCount); in _mesa_reference_renderbuffer_()
445 *ptr = rb; in _mesa_reference_renderbuffer_()
450 struct gl_renderbuffer *rb, in _mesa_map_renderbuffer() argument
461 if (rb->software) { in _mesa_map_renderbuffer()
463 if (rb->data) { in _mesa_map_renderbuffer()
464 GLint bpp = _mesa_get_format_bytes(rb->Format); in _mesa_map_renderbuffer()
465 GLint stride = _mesa_format_row_stride(rb->Format, in _mesa_map_renderbuffer()
466 rb->Width); in _mesa_map_renderbuffer()
467 *mapOut = (GLubyte *) rb->data + y * stride + x * bpp; in _mesa_map_renderbuffer()
490 y2 = rb->Height - y - h; in _mesa_map_renderbuffer()
495 rb->texture, in _mesa_map_renderbuffer()
496 rb->surface->u.tex.level, in _mesa_map_renderbuffer()
497 rb->surface->u.tex.first_layer, in _mesa_map_renderbuffer()
498 transfer_flags, x, y2, w, h, &rb->transfer); in _mesa_map_renderbuffer()
501 *rowStrideOut = -(int) rb->transfer->stride; in _mesa_map_renderbuffer()
502 map += (h - 1) * rb->transfer->stride; in _mesa_map_renderbuffer()
505 *rowStrideOut = rb->transfer->stride; in _mesa_map_renderbuffer()
517 struct gl_renderbuffer *rb) in _mesa_unmap_renderbuffer() argument
521 if (rb->software) { in _mesa_unmap_renderbuffer()
526 pipe_texture_unmap(pipe, rb->transfer); in _mesa_unmap_renderbuffer()
527 rb->transfer = NULL; in _mesa_unmap_renderbuffer()
532 struct gl_renderbuffer *rb) in _mesa_regen_renderbuffer_surface() argument
535 struct pipe_resource *resource = rb->texture; in _mesa_regen_renderbuffer_surface()
538 rb->surface_srgb ? &rb->surface_srgb : &rb->surface_linear; in _mesa_regen_renderbuffer_surface()
544 surf_tmpl.nr_samples = rb->rtt_nr_samples; in _mesa_regen_renderbuffer_surface()
554 rb->surface = *psurf; in _mesa_regen_renderbuffer_surface()
563 struct gl_renderbuffer *rb) in _mesa_update_renderbuffer_surface() argument
566 struct pipe_resource *resource = rb->texture; in _mesa_update_renderbuffer_surface()
568 unsigned rtt_width = rb->Width; in _mesa_update_renderbuffer_surface()
569 unsigned rtt_height = rb->Height; in _mesa_update_renderbuffer_surface()
570 unsigned rtt_depth = rb->Depth; in _mesa_update_renderbuffer_surface()
574 * the format of rb->texture is linear (because we have no control over in _mesa_update_renderbuffer_surface()
575 * the format). Check rb->Format instead of rb->texture->format in _mesa_update_renderbuffer_surface()
576 * to determine if the rb is sRGB-capable. in _mesa_update_renderbuffer_surface()
579 _mesa_is_format_srgb(rb->Format); in _mesa_update_renderbuffer_surface()
582 if (rb->is_rtt) { in _mesa_update_renderbuffer_surface()
583 stTexObj = rb->TexImage->TexObject; in _mesa_update_renderbuffer_surface()
609 if (rb->rtt_numviews) { in _mesa_update_renderbuffer_surface()
610 first_layer = rb->rtt_slice; in _mesa_update_renderbuffer_surface()
611 last_layer = first_layer + rb->rtt_numviews - 1; in _mesa_update_renderbuffer_surface()
612 } else if (rb->rtt_layered) { in _mesa_update_renderbuffer_surface()
614 last_layer = util_max_layer(rb->texture, level); in _mesa_update_renderbuffer_surface()
618 last_layer = rb->rtt_face + rb->rtt_slice; in _mesa_update_renderbuffer_surface()
622 if (rb->is_rtt && resource->array_size > 1 && in _mesa_update_renderbuffer_surface()
626 if (!rb->rtt_layered) in _mesa_update_renderbuffer_surface()
634 enable_srgb ? &rb->surface_srgb : &rb->surface_linear; in _mesa_update_renderbuffer_surface()
638 surf->texture->nr_samples != rb->NumSamples || in _mesa_update_renderbuffer_surface()
639 surf->texture->nr_storage_samples != rb->NumStorageSamples || in _mesa_update_renderbuffer_surface()
644 surf->nr_samples != rb->rtt_nr_samples || in _mesa_update_renderbuffer_surface()
652 surf_tmpl.nr_samples = rb->rtt_nr_samples; in _mesa_update_renderbuffer_surface()
662 rb->surface = *psurf; in _mesa_update_renderbuffer_surface()