[Bf-committers] LIBMV: Workaround for Internal Compiler error on VS2012

Keir Mierle mierle at gmail.com
Wed May 15 00:04:57 CEST 2013


These trackers are all obsolete now and replaced by the new planar tracker
(region_tracker.cc). Deleting all that code is not so simple though. The VS
patch suggested should not impact Blender's motion tracking at all; I see
no problem committing it.


On Tue, May 14, 2013 at 2:21 PM, Brecht Van Lommel <
brechtvanlommel at pandora.be> wrote:

> Probably Sergey can judge this best, I don't know how important these
> files are to performance. Maybe there's a specific function or line of
> code that is causing the issue that we can tweak as well.
>
> On Tue, May 14, 2013 at 8:42 PM, Jürgen Herrmann <shadowrom at me.com> wrote:
> > Hi again,
> >
> > still trying to fix this nasty ICE on VS 2012 64bit and I think I found
> a way to work around this issue without losing too much speed.
> >
> > Instead of turning optimizations off globally for these 2 files I found
> a way to reduce optimization level slightly by doing this:
> >
> > ------------PATCH----------------
> > Index: extern/libmv/libmv/tracking/esm_region_tracker.cc
> > ===================================================================
> > --- extern/libmv/libmv/tracking/esm_region_tracker.cc   (revision 56800)
> > +++ extern/libmv/libmv/tracking/esm_region_tracker.cc   (working copy)
> > @@ -61,6 +61,13 @@
> >    return true;
> >  }
> >
> > +/* Ugly but necessary fix for compilation on VS2012
> > +/* this file causes an Internal Compiler Error */
> > +// TODO: check regularly if ICE is fixed by MS!
> > +#if (_MSC_VER >= 1700 && _WIN64)
> > +#pragma optimize("sp", on)
> > +#endif
> > +
> >  // This is implemented from "Lukas and Kanade 20 years on: Part 1. Page
> 42,
> >  // figure 14: the Levenberg-Marquardt-Inverse Compositional Algorithm".
> >  bool EsmRegionTracker::Track(const FloatImage &image1,
> > Index: extern/libmv/libmv/tracking/lmicklt_region_tracker.cc
> > ===================================================================
> > --- extern/libmv/libmv/tracking/lmicklt_region_tracker.cc
> (revision 56800)
> > +++ extern/libmv/libmv/tracking/lmicklt_region_tracker.cc       (working
> copy)
> > @@ -52,6 +52,13 @@
> >    return true;
> >  }
> >
> > +/* Ugly but necessary fix for compilation on VS2012
> > +/* this file causes an Internal Compiler Error */
> > +// TODO: check regularly if ICE is fixed by MS!
> > +#if (_MSC_VER >= 1700 && _WIN64)
> > +#pragma optimize("sp", on)
> > +#endif
> > +
> >  // Estimate "reasonable" error by computing autocorrelation for a small
> shift.
> >  static double EstimateReasonableError(const FloatImage &image,
> >                                 double x, double y,
> > ------------PATCH----------------
> >
> >
> > -----Ursprüngliche Nachricht-----
> > Von: bf-committers-bounces at blender.org [mailto:
> bf-committers-bounces at blender.org] Im Auftrag von Jürgen Herrmann
> > Gesendet: Dienstag, 14. Mai 2013 16:05
> > An: bf-committers at blender.org
> > Betreff: [Bf-committers] [Proposal] LIBMV: Workaround for Internal
> Compiler error on VS2012
> >
> > Hey ;)
> >
> > we have a problem, when compiling extern_libmv on VS2012 x64 the
> compiler crashes.
> > It seems that this inlining problem is known to MS and they are working
> on a fix.
> > This does not happen on x86 builds though.
> > I could not find a real fix for this yet.
> > So I'd like to commit the following workaround patch, any suggestions or
> comments?
> >
> >
> > ---------------SNIP--------------
> > Index: extern/libmv/libmv/tracking/esm_region_tracker.cc
> > ===================================================================
> > --- extern/libmv/libmv/tracking/esm_region_tracker.cc    (revision 56794)
> > +++ extern/libmv/libmv/tracking/esm_region_tracker.cc    (working copy)
> > @@ -32,7 +32,12 @@
> >  #include "libmv/tracking/track_region.h"
> >
> >  namespace libmv {
> > -
> > +/* Ugly but necessary fix for compilation on VS2012
> > +/* this file causes an Internal Compiler Error */ // TODO: check
> > +regularly if ICE is fixed by MS!
> > +#if (_MSC_VER >= 1700 && _WIN64)
> > +#pragma optimize("", off)
> > +#endif
> >  // TODO(keir): Reduce duplication between here and the other region
> trackers.
> >  static bool RegionIsInBounds(const FloatImage &image1,
> >                        double x, double y,
> > Index: extern/libmv/libmv/tracking/lmicklt_region_tracker.cc
> > ===================================================================
> > --- extern/libmv/libmv/tracking/lmicklt_region_tracker.cc    (revision
> 56794)
> > +++ extern/libmv/libmv/tracking/lmicklt_region_tracker.cc    (working
> copy)
> > @@ -27,7 +27,12 @@
> >  #include "libmv/numeric/numeric.h"
> >
> >  namespace libmv {
> > -
> > +/* Ugly but necessary fix for compilation on VS2012
> > +/* this file causes an Internal Compiler Error */ // TODO: check
> > +regularly if ICE is fixed by MS!
> > +#if (_MSC_VER >= 1700 && _WIN64)
> > +#pragma optimize("", off)
> > +#endif
> >  // TODO(keir): Reduce duplication between here and the other region
> trackers.
> >  static bool RegionIsInBounds(const FloatImage &image1,
> >                        double x, double y,
> > ---------------SNIP--------------
> >
> > Best regards
> >
> > /Jürgen
> > _______________________________________________
> > Bf-committers mailing list
> > Bf-committers at blender.org
> > http://lists.blender.org/mailman/listinfo/bf-committers
> >
> > _______________________________________________
> > Bf-committers mailing list
> > Bf-committers at blender.org
> > http://lists.blender.org/mailman/listinfo/bf-committers
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>


More information about the Bf-committers mailing list