Quoting Kenneth Graunke (2017-10-10 23:14:17) > +bool > +brw_blorp_download_miptree(struct brw_context *brw, > + struct intel_mipmap_tree *src_mt, > + mesa_format src_format, uint32_t src_swizzle, > + uint32_t level, uint32_t x, uint32_t y, uint32_t > z, > + uint32_t width, uint32_t height, uint32_t depth, > + GLenum target, GLenum format, GLenum type, > + bool y_flip, const void *pixels, > + const struct gl_pixelstore_attrib *packing) > +{ > + const mesa_format dst_format = > + blorp_get_client_format(brw, format, type, packing); > + if (dst_format == MESA_FORMAT_NONE) > + return false; > + > + if (!brw->mesa_format_supports_render[dst_format]) { > + perf_debug("intel_texsubimage: can't use %s as render target\n", > + _mesa_get_format_name(dst_format)); > + return false; > + } > + > + /* This function relies on blorp_blit to download the pixel data from the > + * miptree. But, blorp_blit doesn't support signed to unsigned or unsigned > + * to signed integer conversions. > + */ > + if (need_signed_unsigned_int_conversion(src_format, dst_format)) > + return false; > + > + /* We can't fetch from LUMINANCE or intensity as that would require a > + * non-trivial swizzle. > + */ > + switch (_mesa_get_format_base_format(src_format)) { > + case GL_LUMINANCE: > + case GL_LUMINANCE_ALPHA: > + case GL_INTENSITY: > + return false; > + default: > + break; > + } > + > + /* This pass only works for PBOs */ > + assert(_mesa_is_bufferobj(packing->BufferObj)); > + > + uint32_t dst_offset, dst_row_stride, dst_image_stride; > + struct brw_bo *dst_bo = > + blorp_get_client_bo(brw, width, height, depth, > + target, format, type, pixels, packing, > + &dst_offset, &dst_row_stride, > + &dst_image_stride, true);
s/true/false/ (read_only = false for a dst_bo). -Chris _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev