Ian Romanick <i...@freedesktop.org> writes:

> On 05/24/2013 01:56 PM, Eric Anholt wrote:
>> -   temp_bo = drm_intel_bo_alloc_tiled(intel->bufmgr,
>> -                                  "subimage blit bo",
>> -                                  width, height,
>> -                                  intelImage->mt->cpp,
>> -                                  &tiling_mode,
>> -                                  &pitch,
>> -                                  0);
>> -   if (temp_bo == NULL) {
>> -      _mesa_error(ctx, GL_OUT_OF_MEMORY, "intelTexSubImage");
>> -      return false;
>> -   }
>> +   struct intel_mipmap_tree *temp_mt =
>> +      intel_miptree_create(intel, GL_TEXTURE_2D, texImage->TexFormat,
>> +                           0, 0,
>> +                           width, height, 1,
>> +                           false, 0,
>> +                           (1 << I915_TILING_NONE) /* force_tiling_mask */);
>
> The old code did error checking.  Should we continue to error check 
> temp_mt and dst (below)?

Fixed both.  We generally don't error-check mapping buffers, but given
that you could fail when running out of address space on 32-bit, I added
it here.

>> -   if (drm_intel_gem_bo_map_gtt(temp_bo)) {
>> -      _mesa_error(ctx, GL_OUT_OF_MEMORY, "intelTexSubImage");
>> -      return false;
>> -   }
>> -
>> -   dstMap = temp_bo->virtual;
>> -   dstRowStride = pitch;
>> -
>> -   intel_miptree_get_image_offset(intelImage->mt, texImage->Level,
>> -                              intelImage->base.Base.Face,
>> -                              &blit_x, &blit_y);
>> -   blit_x += xoffset;
>> -   blit_y += yoffset;
>> +   GLubyte *dst = intel_miptree_map_raw(intel, temp_mt);
>>
>>      if (!_mesa_texstore(ctx, 2, texImage->_BaseFormat,
>>                     texImage->TexFormat,
>> -                   dstRowStride,
>> -                   &dstMap,
>> +                   temp_mt->region->pitch,
>> +                   &dst,
>>                     width, height, 1,
>>                     format, type, pixels, packing)) {
>>         _mesa_error(ctx, GL_OUT_OF_MEMORY, "intelTexSubImage");
>
> Since this code doesn't bail (and never has), we blit garbage into the 
> texture, right?

Well, your store probably just didn't happen at all.

Attachment: pgpFRZSVl0EjG.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to