Image.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /*
  2. * Copyright (c) 2022, Stephan Unverwerth <s.unverwerth@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/RefCounted.h>
  8. #include <LibGPU/ImageDataLayout.h>
  9. #include <LibGfx/Vector3.h>
  10. namespace GPU {
  11. class Image : public RefCounted<Image> {
  12. public:
  13. Image(void const* ownership_token)
  14. : m_ownership_token { ownership_token }
  15. {
  16. }
  17. virtual ~Image() { }
  18. virtual void write_texels(unsigned layer, unsigned level, Vector3<unsigned> const& offset, Vector3<unsigned> const& size, void const* data, ImageDataLayout const& layout) = 0;
  19. virtual void read_texels(unsigned layer, unsigned level, Vector3<unsigned> const& offset, Vector3<unsigned> const& size, void* data, ImageDataLayout const& layout) const = 0;
  20. virtual void copy_texels(Image const& source, unsigned source_layer, unsigned source_level, Vector3<unsigned> const& source_offset, Vector3<unsigned> const& size, unsigned destination_layer, unsigned destination_level, Vector3<unsigned> const& destination_offset) = 0;
  21. void const* ownership_token() const { return m_ownership_token; }
  22. bool has_same_ownership_token(Image const& other) const { return other.ownership_token() == ownership_token(); }
  23. private:
  24. void const* const m_ownership_token { nullptr };
  25. };
  26. }