Lines Matching refs:rtex
41 struct r600_texture *rtex);
175 struct r600_texture *rtex, unsigned level, in r600_texture_get_offset() argument
180 *stride = rtex->surface.u.legacy.level[level].nblk_x * in r600_texture_get_offset()
181 rtex->surface.bpe; in r600_texture_get_offset()
182 assert((uint64_t)rtex->surface.u.legacy.level[level].slice_size_dw * 4 <= UINT_MAX); in r600_texture_get_offset()
183 *layer_stride = (uint64_t)rtex->surface.u.legacy.level[level].slice_size_dw * 4; in r600_texture_get_offset()
186 return rtex->surface.u.legacy.level[level].offset; in r600_texture_get_offset()
190 return rtex->surface.u.legacy.level[level].offset + in r600_texture_get_offset()
191 box->z * (uint64_t)rtex->surface.u.legacy.level[level].slice_size_dw * 4 + in r600_texture_get_offset()
192 (box->y / rtex->surface.blk_h * in r600_texture_get_offset()
193 rtex->surface.u.legacy.level[level].nblk_x + in r600_texture_get_offset()
194 box->x / rtex->surface.blk_w) * rtex->surface.bpe; in r600_texture_get_offset()
272 struct r600_texture *rtex, in r600_texture_init_metadata() argument
275 struct radeon_surf *surface = &rtex->surface; in r600_texture_init_metadata()
317 struct r600_texture *rtex) in r600_eliminate_fast_color_clear() argument
325 ctx->flush_resource(ctx, &rtex->resource.b.b); in r600_eliminate_fast_color_clear()
333 struct r600_texture *rtex) in r600_texture_discard_cmask() argument
335 if (!rtex->cmask.size) in r600_texture_discard_cmask()
338 assert(rtex->resource.b.b.nr_samples <= 1); in r600_texture_discard_cmask()
341 memset(&rtex->cmask, 0, sizeof(rtex->cmask)); in r600_texture_discard_cmask()
342 rtex->cmask.base_address_reg = rtex->resource.gpu_address >> 8; in r600_texture_discard_cmask()
343 rtex->dirty_level_mask = 0; in r600_texture_discard_cmask()
345 rtex->cb_color_info &= ~EG_S_028C70_FAST_CLEAR(1); in r600_texture_discard_cmask()
347 if (rtex->cmask_buffer != &rtex->resource) in r600_texture_discard_cmask()
348 r600_resource_reference(&rtex->cmask_buffer, NULL); in r600_texture_discard_cmask()
356 struct r600_texture *rtex, in r600_reallocate_texture_inplace() argument
362 struct pipe_resource templ = rtex->resource.b.b; in r600_reallocate_texture_inplace()
371 if (rtex->resource.b.is_shared) in r600_reallocate_texture_inplace()
375 if (rtex->surface.is_linear) in r600_reallocate_texture_inplace()
398 &rtex->resource.b.b, i, &box); in r600_reallocate_texture_inplace()
403 r600_texture_discard_cmask(rctx->screen, rtex); in r600_reallocate_texture_inplace()
407 rtex->resource.b.b.bind = templ.bind; in r600_reallocate_texture_inplace()
408 pb_reference(&rtex->resource.buf, new_tex->resource.buf); in r600_reallocate_texture_inplace()
409 rtex->resource.gpu_address = new_tex->resource.gpu_address; in r600_reallocate_texture_inplace()
410 rtex->resource.vram_usage = new_tex->resource.vram_usage; in r600_reallocate_texture_inplace()
411 rtex->resource.gart_usage = new_tex->resource.gart_usage; in r600_reallocate_texture_inplace()
412 rtex->resource.bo_size = new_tex->resource.bo_size; in r600_reallocate_texture_inplace()
413 rtex->resource.bo_alignment = new_tex->resource.bo_alignment; in r600_reallocate_texture_inplace()
414 rtex->resource.domains = new_tex->resource.domains; in r600_reallocate_texture_inplace()
415 rtex->resource.flags = new_tex->resource.flags; in r600_reallocate_texture_inplace()
416 rtex->size = new_tex->size; in r600_reallocate_texture_inplace()
417 rtex->db_render_format = new_tex->db_render_format; in r600_reallocate_texture_inplace()
418 rtex->db_compatible = new_tex->db_compatible; in r600_reallocate_texture_inplace()
419 rtex->can_sample_z = new_tex->can_sample_z; in r600_reallocate_texture_inplace()
420 rtex->can_sample_s = new_tex->can_sample_s; in r600_reallocate_texture_inplace()
421 rtex->surface = new_tex->surface; in r600_reallocate_texture_inplace()
422 rtex->fmask = new_tex->fmask; in r600_reallocate_texture_inplace()
423 rtex->cmask = new_tex->cmask; in r600_reallocate_texture_inplace()
424 rtex->cb_color_info = new_tex->cb_color_info; in r600_reallocate_texture_inplace()
425 rtex->last_msaa_resolve_target_micro_mode = new_tex->last_msaa_resolve_target_micro_mode; in r600_reallocate_texture_inplace()
426 rtex->htile_offset = new_tex->htile_offset; in r600_reallocate_texture_inplace()
427 rtex->depth_cleared = new_tex->depth_cleared; in r600_reallocate_texture_inplace()
428 rtex->stencil_cleared = new_tex->stencil_cleared; in r600_reallocate_texture_inplace()
429 rtex->non_disp_tiling = new_tex->non_disp_tiling; in r600_reallocate_texture_inplace()
430 rtex->framebuffers_bound = new_tex->framebuffers_bound; in r600_reallocate_texture_inplace()
433 assert(!rtex->htile_offset); in r600_reallocate_texture_inplace()
434 assert(!rtex->cmask.size); in r600_reallocate_texture_inplace()
435 assert(!rtex->fmask.size); in r600_reallocate_texture_inplace()
436 assert(!rtex->is_depth); in r600_reallocate_texture_inplace()
450 struct r600_texture *rtex = (struct r600_texture*)resource; in r600_texture_get_info() local
454 if (!rscreen || !rtex) in r600_texture_get_info()
458 offset = rtex->surface.u.legacy.level[0].offset; in r600_texture_get_info()
459 stride = rtex->surface.u.legacy.level[0].nblk_x * in r600_texture_get_info()
460 rtex->surface.bpe; in r600_texture_get_info()
479 struct r600_texture *rtex = (struct r600_texture*)resource; in r600_texture_get_handle() local
491 if (resource->nr_samples > 1 || rtex->is_depth) in r600_texture_get_handle()
496 rtex->surface.tile_swizzle) { in r600_texture_get_handle()
498 r600_reallocate_texture_inplace(rctx, rtex, in r600_texture_get_handle()
503 assert(rtex->surface.tile_swizzle == 0); in r600_texture_get_handle()
507 rtex->cmask.size) { in r600_texture_get_handle()
509 r600_eliminate_fast_color_clear(rctx, rtex); in r600_texture_get_handle()
514 if (rtex->cmask.size) in r600_texture_get_handle()
515 r600_texture_discard_cmask(rscreen, rtex); in r600_texture_get_handle()
520 r600_texture_init_metadata(rscreen, rtex, &metadata); in r600_texture_get_handle()
525 slice_size = (uint64_t)rtex->surface.u.legacy.level[0].slice_size_dw * 4; in r600_texture_get_handle()
580 struct r600_texture *rtex = (struct r600_texture*)ptex; in r600_texture_destroy() local
581 struct r600_resource *resource = &rtex->resource; in r600_texture_destroy()
583 r600_texture_reference(&rtex->flushed_depth_texture, NULL); in r600_texture_destroy()
586 if (rtex->cmask_buffer != &rtex->resource) { in r600_texture_destroy()
587 r600_resource_reference(&rtex->cmask_buffer, NULL); in r600_texture_destroy()
590 FREE(rtex); in r600_texture_destroy()
597 struct r600_texture *rtex, in r600_texture_get_fmask_info() argument
602 struct pipe_resource templ = rtex->resource.b.b; in r600_texture_get_fmask_info()
609 flags = rtex->surface.flags | RADEON_SURF_FMASK; in r600_texture_get_fmask_info()
612 fmask.u.legacy.bankw = rtex->surface.u.legacy.bankw; in r600_texture_get_fmask_info()
613 fmask.u.legacy.bankh = rtex->surface.u.legacy.bankh; in r600_texture_get_fmask_info()
614 fmask.u.legacy.mtilea = rtex->surface.u.legacy.mtilea; in r600_texture_get_fmask_info()
615 fmask.u.legacy.tile_split = rtex->surface.u.legacy.tile_split; in r600_texture_get_fmask_info()
661 struct r600_texture *rtex) in r600_texture_allocate_fmask() argument
663 r600_texture_get_fmask_info(rscreen, rtex, in r600_texture_allocate_fmask()
664 rtex->resource.b.b.nr_samples, &rtex->fmask); in r600_texture_allocate_fmask()
666 rtex->fmask.offset = align64(rtex->size, rtex->fmask.alignment); in r600_texture_allocate_fmask()
667 rtex->size = rtex->fmask.offset + rtex->fmask.size; in r600_texture_allocate_fmask()
671 struct r600_texture *rtex, in r600_texture_get_cmask_info() argument
688 unsigned pitch_elements = align(rtex->resource.b.b.width0, macro_tile_width); in r600_texture_get_cmask_info()
689 unsigned height = align(rtex->resource.b.b.height0, macro_tile_height); in r600_texture_get_cmask_info()
700 out->size = util_num_layers(&rtex->resource.b.b, 0) * in r600_texture_get_cmask_info()
705 struct r600_texture *rtex) in r600_texture_allocate_cmask() argument
707 r600_texture_get_cmask_info(rscreen, rtex, &rtex->cmask); in r600_texture_allocate_cmask()
709 rtex->cmask.offset = align64(rtex->size, rtex->cmask.alignment); in r600_texture_allocate_cmask()
710 rtex->size = rtex->cmask.offset + rtex->cmask.size; in r600_texture_allocate_cmask()
712 rtex->cb_color_info |= EG_S_028C70_FAST_CLEAR(1); in r600_texture_allocate_cmask()
716 struct r600_texture *rtex) in r600_texture_alloc_cmask_separate() argument
718 if (rtex->cmask_buffer) in r600_texture_alloc_cmask_separate()
721 assert(rtex->cmask.size == 0); in r600_texture_alloc_cmask_separate()
723 r600_texture_get_cmask_info(rscreen, rtex, &rtex->cmask); in r600_texture_alloc_cmask_separate()
725 rtex->cmask_buffer = (struct r600_resource *) in r600_texture_alloc_cmask_separate()
729 rtex->cmask.size, in r600_texture_alloc_cmask_separate()
730 rtex->cmask.alignment); in r600_texture_alloc_cmask_separate()
731 if (rtex->cmask_buffer == NULL) { in r600_texture_alloc_cmask_separate()
732 rtex->cmask.size = 0; in r600_texture_alloc_cmask_separate()
737 rtex->cmask.base_address_reg = rtex->cmask_buffer->gpu_address >> 8; in r600_texture_alloc_cmask_separate()
739 rtex->cb_color_info |= EG_S_028C70_FAST_CLEAR(1); in r600_texture_alloc_cmask_separate()
754 struct r600_texture *rtex) in r600_texture_get_htile_size() argument
760 rtex->surface.htile_size = 0; in r600_texture_get_htile_size()
768 (rtex->resource.b.b.width0 > 7680 || in r600_texture_get_htile_size()
769 rtex->resource.b.b.height0 > 7680)) in r600_texture_get_htile_size()
798 width = align(rtex->surface.u.legacy.level[0].nblk_x, cl_width * 8); in r600_texture_get_htile_size()
799 height = align(rtex->surface.u.legacy.level[0].nblk_y, cl_height * 8); in r600_texture_get_htile_size()
807 rtex->surface.htile_alignment = base_align; in r600_texture_get_htile_size()
808 rtex->surface.htile_size = in r600_texture_get_htile_size()
809 util_num_layers(&rtex->resource.b.b, 0) * in r600_texture_get_htile_size()
814 struct r600_texture *rtex) in r600_texture_allocate_htile() argument
816 r600_texture_get_htile_size(rscreen, rtex); in r600_texture_allocate_htile()
818 if (!rtex->surface.htile_size) in r600_texture_allocate_htile()
821 rtex->htile_offset = align(rtex->size, rtex->surface.htile_alignment); in r600_texture_allocate_htile()
822 rtex->size = rtex->htile_offset + rtex->surface.htile_size; in r600_texture_allocate_htile()
826 struct r600_texture *rtex, struct u_log_context *log) in r600_print_texture_info() argument
834 rtex->resource.b.b.width0, rtex->resource.b.b.height0, in r600_print_texture_info()
835 rtex->resource.b.b.depth0, rtex->surface.blk_w, in r600_print_texture_info()
836 rtex->surface.blk_h, in r600_print_texture_info()
837 rtex->resource.b.b.array_size, rtex->resource.b.b.last_level, in r600_print_texture_info()
838 rtex->surface.bpe, rtex->resource.b.b.nr_samples, in r600_print_texture_info()
839 rtex->surface.flags, util_format_short_name(rtex->resource.b.b.format)); in r600_print_texture_info()
843 rtex->surface.surf_size, rtex->surface.surf_alignment, rtex->surface.u.legacy.bankw, in r600_print_texture_info()
844 rtex->surface.u.legacy.bankh, rtex->surface.u.legacy.num_banks, rtex->surface.u.legacy.mtilea, in r600_print_texture_info()
845 rtex->surface.u.legacy.tile_split, rtex->surface.u.legacy.pipe_config, in r600_print_texture_info()
846 (rtex->surface.flags & RADEON_SURF_SCANOUT) != 0); in r600_print_texture_info()
848 if (rtex->fmask.size) in r600_print_texture_info()
851 rtex->fmask.offset, rtex->fmask.size, rtex->fmask.alignment, in r600_print_texture_info()
852 rtex->fmask.pitch_in_pixels, rtex->fmask.bank_height, in r600_print_texture_info()
853 rtex->fmask.slice_tile_max, rtex->fmask.tile_mode_index); in r600_print_texture_info()
855 if (rtex->cmask.size) in r600_print_texture_info()
858 rtex->cmask.offset, rtex->cmask.size, rtex->cmask.alignment, in r600_print_texture_info()
859 rtex->cmask.slice_tile_max); in r600_print_texture_info()
861 if (rtex->htile_offset) in r600_print_texture_info()
864 rtex->htile_offset, rtex->surface.htile_size, in r600_print_texture_info()
865 rtex->surface.htile_alignment); in r600_print_texture_info()
867 for (i = 0; i <= rtex->resource.b.b.last_level; i++) in r600_print_texture_info()
871 i, rtex->surface.u.legacy.level[i].offset, in r600_print_texture_info()
872 (uint64_t)rtex->surface.u.legacy.level[i].slice_size_dw * 4, in r600_print_texture_info()
873 u_minify(rtex->resource.b.b.width0, i), in r600_print_texture_info()
874 u_minify(rtex->resource.b.b.height0, i), in r600_print_texture_info()
875 u_minify(rtex->resource.b.b.depth0, i), in r600_print_texture_info()
876 rtex->surface.u.legacy.level[i].nblk_x, in r600_print_texture_info()
877 rtex->surface.u.legacy.level[i].nblk_y, in r600_print_texture_info()
878 rtex->surface.u.legacy.level[i].mode, in r600_print_texture_info()
879 rtex->surface.u.legacy.tiling_index[i]); in r600_print_texture_info()
881 if (rtex->surface.has_stencil) { in r600_print_texture_info()
883 rtex->surface.u.legacy.stencil_tile_split); in r600_print_texture_info()
884 for (i = 0; i <= rtex->resource.b.b.last_level; i++) { in r600_print_texture_info()
889 i, rtex->surface.u.legacy.stencil_level[i].offset, in r600_print_texture_info()
890 (uint64_t)rtex->surface.u.legacy.stencil_level[i].slice_size_dw * 4, in r600_print_texture_info()
891 u_minify(rtex->resource.b.b.width0, i), in r600_print_texture_info()
892 u_minify(rtex->resource.b.b.height0, i), in r600_print_texture_info()
893 u_minify(rtex->resource.b.b.depth0, i), in r600_print_texture_info()
894 rtex->surface.u.legacy.stencil_level[i].nblk_x, in r600_print_texture_info()
895 rtex->surface.u.legacy.stencil_level[i].nblk_y, in r600_print_texture_info()
896 rtex->surface.u.legacy.stencil_level[i].mode, in r600_print_texture_info()
897 rtex->surface.u.legacy.stencil_tiling_index[i]); in r600_print_texture_info()
909 struct r600_texture *rtex; in r600_texture_create_object() local
913 rtex = CALLOC_STRUCT(r600_texture); in r600_texture_create_object()
914 if (!rtex) in r600_texture_create_object()
917 resource = &rtex->resource; in r600_texture_create_object()
924 rtex->is_depth = util_format_has_depth(util_format_description(rtex->resource.b.b.format)); in r600_texture_create_object()
926 rtex->surface = *surface; in r600_texture_create_object()
927 rtex->size = rtex->surface.surf_size; in r600_texture_create_object()
928 rtex->db_render_format = base->format; in r600_texture_create_object()
933 …rtex->non_disp_tiling = rtex->is_depth && rtex->surface.u.legacy.level[0].mode >= RADEON_SURF_MODE… in r600_texture_create_object()
935 rtex->last_msaa_resolve_target_micro_mode = rtex->surface.micro_tile_mode; in r600_texture_create_object()
937 if (rtex->is_depth) { in r600_texture_create_object()
941 rtex->can_sample_z = !rtex->surface.u.legacy.depth_adjusted; in r600_texture_create_object()
942 rtex->can_sample_s = !rtex->surface.u.legacy.stencil_adjusted; in r600_texture_create_object()
944 if (rtex->resource.b.b.nr_samples <= 1 && in r600_texture_create_object()
945 (rtex->resource.b.b.format == PIPE_FORMAT_Z16_UNORM || in r600_texture_create_object()
946 rtex->resource.b.b.format == PIPE_FORMAT_Z32_FLOAT)) in r600_texture_create_object()
947 rtex->can_sample_z = true; in r600_texture_create_object()
952 rtex->db_compatible = true; in r600_texture_create_object()
955 r600_texture_allocate_htile(rscreen, rtex); in r600_texture_create_object()
960 r600_texture_allocate_fmask(rscreen, rtex); in r600_texture_create_object()
961 r600_texture_allocate_cmask(rscreen, rtex); in r600_texture_create_object()
962 rtex->cmask_buffer = &rtex->resource; in r600_texture_create_object()
964 if (!rtex->fmask.size || !rtex->cmask.size) { in r600_texture_create_object()
965 FREE(rtex); in r600_texture_create_object()
973 r600_init_resource_fields(rscreen, resource, rtex->size, in r600_texture_create_object()
974 rtex->surface.surf_alignment); in r600_texture_create_object()
977 FREE(rtex); in r600_texture_create_object()
992 if (rtex->cmask.size) { in r600_texture_create_object()
994 r600_screen_clear_buffer(rscreen, &rtex->cmask_buffer->b.b, in r600_texture_create_object()
995 rtex->cmask.offset, rtex->cmask.size, in r600_texture_create_object()
998 if (rtex->htile_offset) { in r600_texture_create_object()
1001 r600_screen_clear_buffer(rscreen, &rtex->resource.b.b, in r600_texture_create_object()
1002 rtex->htile_offset, in r600_texture_create_object()
1003 rtex->surface.htile_size, in r600_texture_create_object()
1008 rtex->cmask.base_address_reg = in r600_texture_create_object()
1009 (rtex->resource.gpu_address + rtex->cmask.offset) >> 8; in r600_texture_create_object()
1013 rtex->resource.gpu_address, in r600_texture_create_object()
1014 rtex->resource.gpu_address + rtex->resource.buf->size, in r600_texture_create_object()
1023 r600_print_texture_info(rscreen, rtex, &log); in r600_texture_create_object()
1029 return rtex; in r600_texture_create_object()
1122 struct r600_texture *rtex; in r600_texture_from_handle() local
1146 rtex = r600_texture_create_object(screen, templ, buf, &surface); in r600_texture_from_handle()
1147 if (!rtex) in r600_texture_from_handle()
1150 rtex->resource.b.is_shared = true; in r600_texture_from_handle()
1151 rtex->resource.external_usage = usage; in r600_texture_from_handle()
1153 assert(rtex->surface.tile_swizzle == 0); in r600_texture_from_handle()
1154 return &rtex->resource.b.b; in r600_texture_from_handle()
1161 struct r600_texture *rtex = (struct r600_texture*)texture; in r600_init_flushed_depth_texture() local
1164 staging : &rtex->flushed_depth_texture; in r600_init_flushed_depth_texture()
1168 if (rtex->flushed_depth_texture) in r600_init_flushed_depth_texture()
1171 if (!rtex->can_sample_z && rtex->can_sample_s) { in r600_init_flushed_depth_texture()
1192 } else if (!rtex->can_sample_s && rtex->can_sample_z) { in r600_init_flushed_depth_texture()
1255 struct r600_texture *rtex, in r600_can_invalidate_texture() argument
1261 !rtex->resource.b.is_shared && in r600_can_invalidate_texture()
1263 rtex->resource.b.b.last_level == 0 && in r600_can_invalidate_texture()
1264 util_texrange_covers_whole_level(&rtex->resource.b.b, 0, in r600_can_invalidate_texture()
1271 struct r600_texture *rtex) in r600_texture_invalidate_storage() argument
1276 assert(!rtex->is_depth); in r600_texture_invalidate_storage()
1277 assert(rtex->surface.is_linear); in r600_texture_invalidate_storage()
1280 r600_alloc_resource(rscreen, &rtex->resource); in r600_texture_invalidate_storage()
1283 rtex->cmask.base_address_reg = in r600_texture_invalidate_storage()
1284 (rtex->resource.gpu_address + rtex->cmask.offset) >> 8; in r600_texture_invalidate_storage()
1288 rctx->num_alloc_tex_transfer_bytes += rtex->size; in r600_texture_invalidate_storage()
1299 struct r600_texture *rtex = (struct r600_texture*)texture; in r600_texture_transfer_map() local
1310 if (!rtex->is_depth) { in r600_texture_transfer_map()
1318 p_atomic_inc_return(&rtex->num_level0_transfers) == 10) { in r600_texture_transfer_map()
1320 r600_can_invalidate_texture(rctx->screen, rtex, in r600_texture_transfer_map()
1323 r600_reallocate_texture_inplace(rctx, rtex, in r600_texture_transfer_map()
1337 if (!rtex->surface.is_linear) in r600_texture_transfer_map()
1341 rtex->resource.domains & RADEON_DOMAIN_VRAM || in r600_texture_transfer_map()
1342 rtex->resource.flags & RADEON_FLAG_GTT_WC; in r600_texture_transfer_map()
1344 else if (r600_rings_is_buffer_referenced(rctx, rtex->resource.buf, in r600_texture_transfer_map()
1346 !rctx->ws->buffer_wait(rtex->resource.buf, 0, in r600_texture_transfer_map()
1349 if (r600_can_invalidate_texture(rctx->screen, rtex, in r600_texture_transfer_map()
1351 r600_texture_invalidate_storage(rctx, rtex); in r600_texture_transfer_map()
1365 if (rtex->is_depth) { in r600_texture_transfer_map()
1368 if (rtex->resource.b.b.nr_samples > 1) { in r600_texture_transfer_map()
1416 rctx->blit_decompress_depth(ctx, rtex, staging_depth, in r600_texture_transfer_map()
1460 offset = r600_texture_get_offset(rctx->screen, rtex, level, box, in r600_texture_transfer_map()
1463 buf = &rtex->resource; in r600_texture_transfer_map()
1482 struct r600_texture *rtex = (struct r600_texture*)texture; in r600_texture_transfer_unmap() local
1485 if (rtex->is_depth && rtex->resource.b.b.nr_samples <= 1) { in r600_texture_transfer_unmap()
1614 struct r600_texture *rtex = (struct r600_texture*)tex; in r600_clear_texture() local
1626 if (rtex->is_depth) { in r600_clear_texture()
1635 if (rtex->surface.has_stencil) { in r600_clear_texture()
1726 static void evergreen_set_clear_color(struct r600_texture *rtex, in evergreen_set_clear_color() argument
1734 if (rtex->surface.bpe == 16) { in evergreen_set_clear_color()
1747 memcpy(rtex->color_clear_value, &uc, 2 * sizeof(uint32_t)); in evergreen_set_clear_color()
1894 struct r600_texture *rtex; in r600_texture_from_memobj() local
1940 rtex = r600_texture_create_object(screen, templ, memobj->buf, &surface); in r600_texture_from_memobj()
1941 if (!rtex) in r600_texture_from_memobj()
1949 rtex->resource.b.is_shared = true; in r600_texture_from_memobj()
1950 rtex->resource.external_usage = PIPE_HANDLE_USAGE_FRAMEBUFFER_WRITE; in r600_texture_from_memobj()
1952 return &rtex->resource.b.b; in r600_texture_from_memobj()