constants.h revision 010d83a9304c5a91596085d917d248abff47903a
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef GPU_COMMAND_BUFFER_COMMON_CONSTANTS_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GPU_COMMAND_BUFFER_COMMON_CONSTANTS_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include <stddef.h>
9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include <stdint.h>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gpu {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)typedef int32_t CommandBufferOffset;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const CommandBufferOffset kInvalidCommandBufferOffset = -1;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This enum must stay in sync with NPDeviceContext3DError.
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace error {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum Error {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    kNoError,
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    kInvalidSize,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    kOutOfBounds,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    kUnknownCommand,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    kInvalidArguments,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    kLostContext,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    kGenericError,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    kDeferCommandUntilLater
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Return true if the given error code is an actual error.
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  inline bool IsError(Error error) {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return error != kNoError && error != kDeferCommandUntilLater;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Provides finer grained information about why the context was lost.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum ContextLostReason {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // This context definitely provoked the loss of context.
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    kGuilty,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // This context definitely did not provoke the loss of context.
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    kInnocent,
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // It is unknown whether this context provoked the loss of context.
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    kUnknown,
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    kContextLostReasonLast = kUnknown
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Invalid shared memory Id, returned by RegisterSharedMemory in case of
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// failure.
50010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)const int32_t kInvalidSharedMemoryId = -1;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Common Command Buffer shared memory transfer buffer ID.
53010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)const int32_t kCommandBufferSharedMemoryId = 4;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// The size to set for the program cache.
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const size_t kDefaultMaxProgramCacheMemoryBytes = 6 * 1024 * 1024;
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace gpu
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // GPU_COMMAND_BUFFER_COMMON_CONSTANTS_H_
61