[Mesa-dev] [PATCH V4 5/6] intel: implement create image from texture

Abdiel Janulgue abdiel.janulgue at linux.intel.com
Wed Jan 16 06:28:18 PST 2013


On Tuesday, January 15, 2013 02:05:00 PM Eric Anholt wrote:
> > +static void
> > +intel_image_set_level_info(__DRIimage *image, struct intel_mipmap_tree
> > *mt, +                           int level, int slice,
> > +                           uint32_t mask_x,  uint32_t mask_y)
> > +{
> > +   image->width = mt->level[level].width;
> > +   image->height = mt->level[level].height;
> > +   image->level_x = mt->level[level].level_x;
> > +   image->level_y = mt->level[level].level_y;
> > +   image->slice_x_offset = mt->level[level].slice[slice].x_offset;
> > +   image->slice_y_offset = mt->level[level].slice[slice].y_offset;
> > +
> > +   image->offset = intel_region_get_aligned_offset(mt->region,
> > +                                                   image->slice_x_offset
> > & ~mask_x, +                                                  
> > image->slice_y_offset & ~mask_y, +                                       
> >            false);
> > +}
> 
> I think you end up double-counting the slice_x/y_offset offset here --
> you have a tile-aligned byte offset from the base of the region (which I
> don't think you want at all), and then you reference from
> slice_x/y_offset from that offset when texturing.
> 

Aren't you supposed to reference the x/y offsets (used in SURFACE_STATE[5] in 
gen6 and gen7) in addition to the surface base address in tiled surfaces when 
resolving to higher miplevels? Or I am probably missing something?

I agree though that the level /slice differentation definitely needs to be 
dropped as you mentioned earlier. I got an update that only accounts for the 
x/y offsets to the image. It works correctly as well and I'll post it soon.

Abdiel


More information about the mesa-dev mailing list