Home | History | Annotate | Download | only in gpu
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_GPU_GPU_FEATURE_CHECKER_H_
      6 #define CHROME_BROWSER_GPU_GPU_FEATURE_CHECKER_H_
      7 
      8 #include "base/callback.h"
      9 #include "base/memory/ref_counted.h"
     10 #include "content/public/browser/gpu_data_manager_observer.h"
     11 #include "gpu/config/gpu_feature_type.h"
     12 
     13 namespace content {
     14 class GpuDataManager;
     15 }  // namespace content
     16 
     17 class GPUFeatureChecker : public base::RefCountedThreadSafe<GPUFeatureChecker>,
     18                           public content::GpuDataManagerObserver {
     19  public:
     20   typedef base::Callback<void(bool feature_available)> FeatureAvailableCallback;
     21 
     22   GPUFeatureChecker(gpu::GpuFeatureType feature,
     23                     FeatureAvailableCallback callback);
     24 
     25   // Check to see if |feature_| is available on the current GPU. |callback_|
     26   // will be called to indicate the availability of the feature. Must be called
     27   // from the the UI thread.
     28   void CheckGPUFeatureAvailability();
     29 
     30   // content::GpuDataManagerObserver
     31   virtual void OnGpuInfoUpdate() OVERRIDE;
     32  private:
     33   friend class base::RefCountedThreadSafe<GPUFeatureChecker>;
     34 
     35   virtual ~GPUFeatureChecker();
     36 
     37   gpu::GpuFeatureType feature_;
     38   FeatureAvailableCallback callback_;
     39 
     40   DISALLOW_COPY_AND_ASSIGN(GPUFeatureChecker);
     41 };
     42 
     43 #endif  // CHROME_BROWSER_GPU_GPU_FEATURE_CHECKER_H_
     44