Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Mar 26, 2015
  1. @lgritz
  2. @lgritz

    constant fold for sincos

    lgritz authored
    Also noticed that the vector version of sincos didn't use fast_sincos underneath,
    whereas the float varieties did. Fixed.
Commits on Mar 25, 2015
  1. @lgritz
Commits on Mar 24, 2015
  1. @lgritz

    Fix subtle optimizer bug -- under some very specific circumstances, an

    lgritz authored
    output parameter whose default value comes from "init ops" but which
    actually got an instance value, and was also connected to a downstream
    layer, could be eliminated but incorrectly, by passing along to the
    downstream shader the constant value it would have been assigned by
    default, rather than the constant instance value.
Commits on Mar 20, 2015
  1. @lgritz
  2. @lgritz

    pow fixes

    lgritz authored
    * Update testsuite and refs to reflect simultaneous change in OIIO fmath.h
      fast_safe_pow to give higher accuracy to pow(x,1.0) and pow(x,2.0).
    * A couple more helpful special cases in the pow constant folding.
Commits on Mar 19, 2015
  1. @lgritz

    Fix bug in LLVM codegen for closure call -- change == to equivalent()

    lgritz authored
    so that colors vs vectors are interchangeable for closure construction
    arguments (this can arise because of coalescing of temporaries). Also
    improve a nearby error message.
  2. @lgritz
Commits on Mar 18, 2015
  1. @lgritz

    Merge pull request #481 from lgritz/max-vararray

    lgritz authored
    Shader params that are arrays of unspecified length
Commits on Mar 17, 2015
  1. @lgritz

    LG minor modifications, debugging, and test cases for Max Liani's

    lgritz authored
    work to allow shader parameters that are arrays of unspecified length.
  2. @maxliani @lgritz

    Allow shader parameters to be arrays of unspecified length. The length

    maxliani authored lgritz committed
    becomes definite when an instance value is attached, or when a
    connection is made. This was always intended but missing logic to make
    it work properly.
    This is primarily the work of Max Liani. Some debug/cleanup, comments,
    and test cases added by LG follow in the next checkin.
  3. @lgritz
Commits on Mar 11, 2015
  1. @lgritz

    bump version

    lgritz authored
Commits on Mar 10, 2015
  1. @est77
  2. @lgritz

    CHANGES for release

    lgritz authored
  3. @lgritz

    Just stick to one RendererServices function for each kind of texture

    lgritz authored
    call -- take BOTH a filename and texture handle. Filename is always
    passed, handle may optionally be passed, and optionally used by the renderer.
    Compatibility break.
Commits on Mar 9, 2015
  1. @lgritz

    More texture handle tweaks (including RendererServices compat change)

    lgritz authored
    I decided that the RendererServices methods that take texture handles
    should also still be passed the filenames. That really simplify things
    for some renderers that have cases internally where they need both.
    Sorry about the compatibility break. There's been more churn on this
    matter in the past couple weeks than I like, but then again, this is
    the master branch where we say APIs are subject to change.
Commits on Mar 2, 2015
  1. @lgritz

    More texture per-thread tweaking: allow get_context() to supply a

    lgritz authored
    TextureSystem::Perthread* to use for that context.
    This is helpful for renderers that want to save a bit of time by
    allocating such things up front.
Commits on Mar 1, 2015
  1. @lgritz
Commits on Feb 28, 2015
  1. @lgritz
Commits on Feb 27, 2015
  1. @lgritz

    Have the context lazily grab texture_thread_info.

    lgritz authored
    For short shaders that don't use texture at all (and therefore don't
    need the thread-specific pointer), this was causing undue overhead.
Commits on Feb 25, 2015
  1. @lgritz

    bump version

    lgritz authored
  2. @lgritz

    CHANGES, rebuild docs

    lgritz authored
  3. @fpsunflower
Commits on Feb 24, 2015
  1. @lgritz

    Coalesce osl_texture/osl_texture_alpha and osl_texture3d/osl_texture3…

    lgritz authored
    There was no benefit to the code duplication of these subtly different funcs.
  2. @lgritz

    Texture handle optimizations.

    lgritz authored
    TL;DR: If the runtime optimizer can figure out which texture file is
    needed for a texture call, it can ask for an opaque texture handle ahead
    of time and avoid the filename-to-handle lookup on each individual
    texture call.
    Additions to RendererServices:
    * Calls to retrieve opaque TextureHandle* from the underlying texture system,
      given a known texture name.
    * New (additional) entry points for texture(), texture3d(), environment(),
      and get_texture_info() that take a TextureHandle* rather than a filename.
    Note that renderer implementations will need to add the new virtual functions
    to their subclass of RendererServices. It's ok to define them trivially
    (i.e., just do nothing and return false) as long as the renderer doesn't turn
    on the opt_texture_handle (see below).
    New optimization option: "opt_texture_handle". For now, the default is false.
    A renderer should explicitly turn it on if it supports this feature with
    nontrivial versions of those aforementioned RendererServices methods.
    Now then, when generating JIT code for a texture call, if at that point it
    can figure out exactly which texture is being referenced (if the filename
    is a known string constant, at that point in optimization), it will generate
    a call to an alternate texture function that takes the handle directly,
    rather than the filename.
    The bottom line is that this speeds up texture calls by about 10% (using
    OIIO's texture system, for other texture systems YMMV).
  3. @fpsunflower
  4. @lgritz
Commits on Feb 23, 2015
  1. @lgritz

    ShadingSystem: add a new version of execute() that takes a ShadingCon…

    lgritz authored
    and if NULL, execute() will get and release the context for you. Easy.
  2. @lgritz

    Refactor optimize_instance

    lgritz authored
    RuntimeOptimizer::optimize_instance() was getting really big and
    unwieldy.  This refactor, which just moves code without changing any
    behavior, breaks it into two pieces: (1) optimize_instance still loops
    over passes, and does per-pass optimizations and other housekeeping; (2)
    optimize_ops does all the per-op optimizations, over a range of ops.  So
    the guts of the loop over ops has just been broken out into a separate
    The added benefit, which will be apparent in a future review of
    something I'm working on, is that there is utility in calling the
    optimize_ops over shorter ranges of ops, for particular purposes. Stay
  3. @fpsunflower

    Avoid incrementing profile related stats on every execution if profil…

    fpsunflower authored
    …ing is disabled
    This fixes a performance regression that is particularly noticeable for small shaders executed from many threads
Commits on Feb 18, 2015
  1. @lgritz
  2. @fpsunflower
Commits on Feb 13, 2015
  1. @johnhaddon @lgritz

    Fix compilation with GCC 4.2.1 (OS X 10.7).

    johnhaddon authored lgritz committed
    GCC was preferring to cast float4 to Dual2<float4> and call the locally defined versions of shuffle() etc, rather than call the correct OIIO::simd versions. Fully qualifying the calls with the namespace fixes that.
Commits on Feb 12, 2015
Something went wrong with that request. Please try again.