robertphillips@google.com | 46a8600 | 2012-08-08 10:42:44 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Copyright 2012 Google Inc. |
| 3 | * |
| 4 | * Use of this source code is governed by a BSD-style license that can be |
| 5 | * found in the LICENSE file. |
| 6 | */ |
| 7 | |
bsalomon@google.com | 0797c2c | 2012-12-20 15:13:01 +0000 | [diff] [blame] | 8 | #include "GrTypes.h" |
robertphillips@google.com | 46a8600 | 2012-08-08 10:42:44 +0000 | [diff] [blame] | 9 | #include "SkThread.h" // for sk_atomic_inc |
| 10 | |
bsalomon@google.com | 5c265d6 | 2013-02-05 20:09:41 +0000 | [diff] [blame] | 11 | // Well, the dummy_ "fix" caused a warning on windows, so hiding all of it |
| 12 | // until we can find a universal fix. |
| 13 | #if 0 |
reed@google.com | 3ac5eb5 | 2013-02-05 16:18:20 +0000 | [diff] [blame] | 14 | // This used to be a global scope, but we got a warning about unused variable |
| 15 | // so we moved it into here. We just want it to compile, so we can test the |
| 16 | // static asserts. |
| 17 | static inline void dummy_function_to_avoid_unused_var_warning() { |
bsalomon@google.com | 5c265d6 | 2013-02-05 20:09:41 +0000 | [diff] [blame] | 18 | GrCacheID::Key kAssertKey; |
reed@google.com | 3ac5eb5 | 2013-02-05 16:18:20 +0000 | [diff] [blame] | 19 | GR_STATIC_ASSERT(sizeof(kAssertKey.fData8) == sizeof(kAssertKey.fData32)); |
| 20 | GR_STATIC_ASSERT(sizeof(kAssertKey.fData8) == sizeof(kAssertKey.fData64)); |
| 21 | GR_STATIC_ASSERT(sizeof(kAssertKey.fData8) == sizeof(kAssertKey)); |
| 22 | } |
bsalomon@google.com | 5c265d6 | 2013-02-05 20:09:41 +0000 | [diff] [blame] | 23 | #endif |
bsalomon@google.com | 0797c2c | 2012-12-20 15:13:01 +0000 | [diff] [blame] | 24 | |
| 25 | GrCacheID::Domain GrCacheID::GenerateDomain() { |
| 26 | static int32_t gNextDomain = kInvalid_Domain + 1; |
robertphillips@google.com | 46a8600 | 2012-08-08 10:42:44 +0000 | [diff] [blame] | 27 | |
| 28 | int32_t domain = sk_atomic_inc(&gNextDomain); |
bsalomon@google.com | 0797c2c | 2012-12-20 15:13:01 +0000 | [diff] [blame] | 29 | if (domain >= 1 << (8 * sizeof(Domain))) { |
robertphillips@google.com | 46a8600 | 2012-08-08 10:42:44 +0000 | [diff] [blame] | 30 | GrCrash("Too many Cache Domains"); |
| 31 | } |
| 32 | |
bsalomon@google.com | 0797c2c | 2012-12-20 15:13:01 +0000 | [diff] [blame] | 33 | return static_cast<Domain>(domain); |
robertphillips@google.com | 46a8600 | 2012-08-08 10:42:44 +0000 | [diff] [blame] | 34 | } |