Hash :
86f8dd7c
        
        Author :
  
        
        Date :
2015-08-12T12:37:48
        
      
Implement a minimal EGL -> CGL backend This succesfully renders HelloTriangle and some samples but fails on a lot of tests. In particular it doesn't handle resizing the window and doesn't have depth or stencil buffers. BUG=angleproject:891 Change-Id: I16356471b470f764acb38e8dd3589e9c0129829d Reviewed-on: https://chromium-review.googlesource.com/290770 Tested-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
//
// Copyright (c) 2015 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// OSXTimer.cpp: Implementation of a high precision timer class on OSX
#include "osx/OSXTimer.h"
#include <CoreServices/CoreServices.h>
#include <mach/mach.h>
#include <mach/mach_time.h>
OSXTimer::OSXTimer()
    : mRunning(false)
{
}
void OSXTimer::start()
{
    mStartTime = mach_absolute_time();
    mRunning = true;
}
void OSXTimer::stop()
{
    mStopTime = mach_absolute_time();
    mRunning = false;
}
double OSXTimer::getElapsedTime() const
{
    // If this is the first time we've run, get the timebase.
    // We can use denom == 0 to indicate that sTimebaseInfo is
    // uninitialised because it makes no sense to have a zero
    // denominator in a fraction.
    static mach_timebase_info_data_t timebaseInfo;
    static double secondCoeff;
    if ( timebaseInfo.denom == 0 )
    {
        mach_timebase_info(&timebaseInfo);
        secondCoeff = timebaseInfo.numer * (1.0 / 1000000000) / timebaseInfo.denom;
    }
    if (mRunning)
    {
        return secondCoeff * (mach_absolute_time() - mStartTime);
    }
    else
    {
        return secondCoeff * (mStopTime - mStartTime);
    }
}
Timer *CreateTimer()
{
    return new OSXTimer();
}