void reloadTextureSubImage(
      Canvas3D cv,
      int level,
      int face,
      ImageComponentUpdateInfo info,
      ImageComponentRetained image) {
    int x = info.x, y = info.y, z = info.z, width = info.width, height = info.height;

    int xoffset = x;
    int yoffset = y;
    // Texture3D does not need to support Raster
    ImageComponentRetained.ImageData imageData = image.getImageData(false);

    updateTextureSubImage(
        cv,
        0,
        level,
        xoffset,
        yoffset,
        z,
        format,
        image.getImageFormatTypeIntValue(false),
        xoffset,
        yoffset,
        z,
        image.width,
        image.height,
        width,
        height,
        1,
        image.getImageDataTypeIntValue(),
        imageData.get());
  }
  void reloadTextureImage(
      Canvas3D cv, int face, int level, ImageComponentRetained image, int numLevels) {

    /*
            System.err.println("Texture3D.reloadTextureImage: level= " + level +
    		" image.imageYup= " + image.imageYup + " w= " + image.width +
    		" h= " + image.height + " d= " + depth +
    		" numLevels= " + numLevels);
    */

    // Texture3D does not need to support Raster
    ImageComponentRetained.ImageData imageData = image.getImageData(false);

    updateTextureImage(
        cv,
        0,
        numLevels,
        level,
        format,
        image.getImageFormatTypeIntValue(false),
        image.width,
        image.height,
        depth,
        boundaryWidth,
        image.getImageDataTypeIntValue(),
        imageData.get());
  }