texture_image_factory.cc 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // Copyright 2016 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. #include "gpu/command_buffer/tests/texture_image_factory.h"
  5. #include "ui/gl/gl_bindings.h"
  6. #include "ui/gl/gl_image.h"
  7. namespace gpu {
  8. // An image that allocates storage for the texture using glTexImage2D.
  9. class TextureImage : public gl::GLImage {
  10. public:
  11. explicit TextureImage(const gfx::Size& size) : size_(size) {}
  12. gfx::Size GetSize() override { return size_; }
  13. unsigned GetInternalFormat() override { return GL_RGBA; }
  14. unsigned GetDataType() override { return GL_UNSIGNED_BYTE; }
  15. BindOrCopy ShouldBindOrCopy() override { return BIND; }
  16. bool BindTexImage(unsigned target) override {
  17. glTexImage2D(target,
  18. 0, // mip level
  19. GetInternalFormat(), size_.width(), size_.height(),
  20. 0, // border
  21. GetDataFormat(), GetDataType(), nullptr);
  22. return true;
  23. }
  24. bool BindTexImageWithInternalformat(unsigned target,
  25. unsigned internal_format) override {
  26. glTexImage2D(target,
  27. 0, // mip level
  28. GetInternalFormat(), size_.width(), size_.height(),
  29. 0, // border
  30. GetDataFormat(), GetDataType(), nullptr);
  31. return true;
  32. }
  33. void ReleaseTexImage(unsigned target) override {}
  34. bool CopyTexImage(unsigned target) override {
  35. NOTREACHED();
  36. return false;
  37. }
  38. bool CopyTexSubImage(unsigned target,
  39. const gfx::Point& offset,
  40. const gfx::Rect& rect) override {
  41. return false;
  42. }
  43. void SetColorSpace(const gfx::ColorSpace& color_space) override {}
  44. void Flush() override {}
  45. void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
  46. uint64_t process_tracing_id,
  47. const std::string& dump_name) override {}
  48. private:
  49. ~TextureImage() override = default;
  50. gfx::Size size_;
  51. };
  52. scoped_refptr<gl::GLImage> TextureImageFactory::CreateImageForGpuMemoryBuffer(
  53. gfx::GpuMemoryBufferHandle handle,
  54. const gfx::Size& size,
  55. gfx::BufferFormat format,
  56. const gfx::ColorSpace& color_space,
  57. gfx::BufferPlane plane,
  58. int client_id,
  59. SurfaceHandle surface_handle) {
  60. return nullptr;
  61. }
  62. bool TextureImageFactory::SupportsCreateAnonymousImage() const {
  63. return true;
  64. }
  65. scoped_refptr<gl::GLImage> TextureImageFactory::CreateAnonymousImage(
  66. const gfx::Size& size,
  67. gfx::BufferFormat format,
  68. gfx::BufferUsage usage,
  69. SurfaceHandle surface_handle,
  70. bool* is_cleared) {
  71. *is_cleared = true;
  72. return new TextureImage(size);
  73. }
  74. unsigned TextureImageFactory::RequiredTextureType() {
  75. return required_texture_type_;
  76. }
  77. bool TextureImageFactory::SupportsFormatRGB() {
  78. return false;
  79. }
  80. void TextureImageFactory::SetRequiredTextureType(unsigned type) {
  81. required_texture_type_ = type;
  82. }
  83. } // namespace gpu