1. 24 Jun, 2010 2 commits
    • Kenneth Moreland's avatar
      Target link libraries only as necessary. · 01ab6889
      Kenneth Moreland authored
      Previously, the OpenGL and MPI libraries were linked to everything
      with a general LINK_LIBRARIES CMake command.  Now, only use
      TARGET_LINK_LIBRARIES to bind libraries to a specific target.  Not
      only is this cleaner, but it also helps verify that libraries that
      should not depend on these libraries don't.
      01ab6889
    • Kenneth Moreland's avatar
      Destroy inflate texture in callback. · d2ca846a
      Kenneth Moreland authored
      The icetDestroyContext function needs to delete the OpenGL texture
      used for inflating images.  This was done directly in the function,
      which made it rely on the OpenGL library.  To get around this, the
      core layer defines a callback for the destruction of the rendering
      layer.  It is in this callback that the OpenGL layer deletes the
      texture.
      
      The core layer should now be completely free of OpenGL dependencies.
      The next step is to add CMake configure options and appropriate
      target links to allow you to compile without OpenGL.
      d2ca846a
  2. 23 Jun, 2010 1 commit
    • Kenneth Moreland's avatar
      Get rid of buckets. · d3042afe
      Kenneth Moreland authored
      Way back when I first wrote IceT, I included some convienience
      functions to implement "buckets," which were also described in
      the original paper.  The idea is that you break up your geometry
      within a process and in a render callback you only render those
      buckets visible in the projection.  That way when you have to
      render multiple tiles, you can reduce the number of primitives
      that have to be rendered multiple times.
      
      The theory is all sound and still a good idea.  However, I don't
      think these convienience functions are all that helpful.  If
      your appliation already has a means of breaking up geometry,
      then adding a check to see if it lies in the projection is pretty
      straightforward.  Thus, I never bothered to document the buckets
      code or even write a test for them.  I suspect the only code to
      ever use these buckes is languishing in the IceT version control
      archive and relies on an I/O library that fell into the bit
      bucket years ago.
      
      If I'm wrong and someone uses these functions, I can resurect
      them.  But I suspect that I won't.
      d3042afe
  3. 22 Jun, 2010 3 commits
    • Kenneth Moreland's avatar
      Handle when my fragment truncated in split strategy. · b17858eb
      Kenneth Moreland authored
      In the split strategy, the last fragment is truncated if the number
      of pixels in the image does not divide by the number of processes in
      the group.  The message from the rendering process to the compositing
      process was properly truncated.  However, the compositing process
      did not take into acount truncation and could therefore send a too-big
      image to the display process, which in turn caused a buffer overrun.
      (In this case, it happened to overrun into the communication request
      objects.)
      
      Caught by RandomTransform test running on 8 processes on blackrose
      with base seed of 1277230396.
      
      Also made a minor style change to the split code.  No longer reusing
      the my_* variables when receiving the displayed image.  Instead,
      creating new variables named displayed_*.
      b17858eb
    • Kenneth Moreland's avatar
      Fix typo using width instead of height. · cfba484e
      Kenneth Moreland authored
      Caught by RandomTransform test running on 8 processes on blackrose
      with base seed of 1277226284.
      cfba484e
    • Kenneth Moreland's avatar
      Readback all tiles in floating viewport render. · 0fb4638e
      Kenneth Moreland authored
      In the case of a floating viewport render, the projection was
      properly set to include all the geometry.  However the
      readback_viewport that was passed to the render callback was
      wrong.  It only included the viewport for the current tile
      requested.  Thus, the callback did not provide the pixels for
      the other tiles even though they were rendered.  The
      readback_viewport is now set to include all valid pixels for
      all involved tiles.
      
      This problem appeared when running the RandomTransform test on
      8 processes with a base seed of 1276806597.
      0fb4638e
  4. 17 Jun, 2010 2 commits
  5. 16 Jun, 2010 6 commits
  6. 15 Jun, 2010 10 commits
    • Kenneth Moreland's avatar
      Remove OpenGL from draw.c. · da8bf613
      Kenneth Moreland authored
      All the functions in draw.c now no longer depend on OpenGL at all.
      The biggest interface change to this effect is that icetDrawFrame()
      now requires the user to pass in the projection/modelview matrices
      and the background color.  A new function in the OpenGL layer called
      icetGLDrawFrame() behaves like the old function by grabbing these
      values from OpenGL.
      da8bf613
    • Kenneth Moreland's avatar
      Merge branch 'ImageObjects' into SeparateOpenGL · 19680fc8
      Kenneth Moreland authored
      Previously, IceT only supported 8-bit colors and 32-bit int depths.
      However, we would like to support other types of buffers too.  To
      encapsulate all the types of images you might run in to, I have more
      formalized image "objects."  Images are opaque types with several
      exposed funtions for manipulating them such as getting the color and
      depth buffers or copying from them.  The image types are structs
      which are of little consequence to users except for the fact that
      C will now error if you try to implicitly cast them.
      
      Rather than get the buffers from IceT, icetDrawFrame now returns
      an image object that you can keep around and use as necessary.
      19680fc8
    • Kenneth Moreland's avatar
      Unify seed in RandomTransform test. · e66ffc99
      Kenneth Moreland authored
      Previously, each process independently created a seed with the
      time function.  Easy to implement, but problematic if not all
      the time is synchronized.  Instead, create a seed on the root
      process and send to the rest.  The rest modify their seed
      slightly.  This way you can replicate a failure by just forcing
      one seed value rather than worry about all the processes.
      e66ffc99
    • Kenneth Moreland's avatar
      Allocated image of wrong size in split strategy. · 267d32f6
      Kenneth Moreland authored
      The outgoing sparse image was allocated with fragment_size pixels.
      However, fragment_size has to do with the expected size of the
      incoming fragments for the tile we are participating with.  The
      fragments we send for other tiles might have a different split and
      there fore different fragment sizes.  When sending to a tile with
      larger fragments (i.e. less processes compositing them), the
      procedure fails because the sparse image buffer is not big enough.
      267d32f6
    • Kenneth Moreland's avatar
      Adjusting image for output messing up subsequent iter in serial. · fdb9e5bf
      Kenneth Moreland authored
      The bswap composite method calls icetImageAdjustForOutput on its
      image before collecting the final image data.  This is fine to
      return the image, but screws up the serial strategy on the
      iteration for the next tile because it reuses this image for the
      next input.  To get around this, add icetImageAdjustForInput that
      restores the image to the expected input buffers.
      fdb9e5bf
    • Kenneth Moreland's avatar
      Not properly skipping inactive pixels for ubyte color blending. · 05d5b782
      Kenneth Moreland authored
      There was a typo in decompress_func_body.h for in the case of
      blending ubyte colors the inactive pixels were not skipped properly.
      05d5b782
    • Kenneth Moreland's avatar
      5a58cafc
    • Kenneth Moreland's avatar
      Merge branch 'ExplictImageFormat' into ImageObjects · d96d7183
      Kenneth Moreland authored
      Added code that requires the client code to set the image formats
      to use (stored in state variables ICET_COLOR_FORMAT and
      ICET_DEPTH_FORMAT).  The internal IceT can now more easily create
      image objects internally because it knows what kind of code the
      client code callbacks will (eventually) generate.
      
      These changes are placed in the branch of work that is formalizing
      the image objects.
      d96d7183
    • Kenneth Moreland's avatar
    • Kenneth Moreland's avatar
      Fix issue with calling icetSetColor/DepthFormat during init. · 16ff4f96
      Kenneth Moreland authored
      The icetSetColorFormat and icetSetDepthFormat functions now check
      the ICET_IS_DRAWING_FRAME state variable before allowing you to
      change the format.  However, these funtions were called in the
      default setup code before that variable was created, causing an
      error.  Now the formats are directly set in the state.
      16ff4f96
  7. 14 Jun, 2010 2 commits
    • Kenneth Moreland's avatar
      Further encapsulate image objects. · d1eddb3e
      Kenneth Moreland authored
      Rather than create a buffer and then initialize an image with
      it, the interface now encourages you to allocate an image
      directly.  All the image manipulation functions now take actual
      image objects rather than taking buffers and returning image
      objects.
      
      Also moved some functions from the public IceT.h interface into
      the protected image.h interface.
      d1eddb3e
    • Kenneth Moreland's avatar
      Decompress composite was clearing inactive pixels. · 2b3aab29
      Kenneth Moreland authored
      In the decompress composite code, when the src buffer had
      inactive pixels, the pixels were cleared out in the dest
      buffer rather than just skipped over.  (Basically, it was
      using the code for simple decompression rather than create
      a special version for decompress/composite.)
      2b3aab29
  8. 13 Jun, 2010 4 commits
  9. 12 Jun, 2010 5 commits
  10. 11 Jun, 2010 4 commits
  11. 09 Jun, 2010 1 commit