GrDrawOpTest.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * Copyright 2015 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. #include "include/core/SkTypes.h"
  8. #include "include/private/GrContext_Base.h"
  9. #include "include/utils/SkRandom.h"
  10. #include "src/gpu/GrBaseContextPriv.h"
  11. #include "src/gpu/GrCaps.h"
  12. #include "src/gpu/GrDrawOpTest.h"
  13. #include "src/gpu/GrUserStencilSettings.h"
  14. #if GR_TEST_UTILS
  15. const GrUserStencilSettings* GrGetRandomStencil(SkRandom* random, GrContext_Base* context) {
  16. if (context->priv().caps()->avoidStencilBuffers()) {
  17. return &GrUserStencilSettings::kUnused;
  18. }
  19. static constexpr GrUserStencilSettings kReads(
  20. GrUserStencilSettings::StaticInit<
  21. 0x8080,
  22. GrUserStencilTest::kLess,
  23. 0xffff,
  24. GrUserStencilOp::kKeep,
  25. GrUserStencilOp::kKeep,
  26. 0xffff>()
  27. );
  28. static constexpr GrUserStencilSettings kWrites(
  29. GrUserStencilSettings::StaticInit<
  30. 0xffff,
  31. GrUserStencilTest::kAlways,
  32. 0xffff,
  33. GrUserStencilOp::kReplace,
  34. GrUserStencilOp::kReplace,
  35. 0xffff>()
  36. );
  37. static constexpr GrUserStencilSettings kReadsAndWrites(
  38. GrUserStencilSettings::StaticInit<
  39. 0x8000,
  40. GrUserStencilTest::kEqual,
  41. 0x6000,
  42. GrUserStencilOp::kIncWrap,
  43. GrUserStencilOp::kInvert,
  44. 0x77ff>()
  45. );
  46. static const GrUserStencilSettings* kStencilSettings[] = {
  47. &GrUserStencilSettings::kUnused,
  48. &kReads,
  49. &kWrites,
  50. &kReadsAndWrites,
  51. };
  52. return kStencilSettings[random->nextULessThan(SK_ARRAY_COUNT(kStencilSettings))];
  53. }
  54. #endif