Make GpuBuffer a shared_ptr to a storage collection
PiperOrigin-RevId: 493519590
This commit is contained in:
committed by
Copybara-Service
parent
402834b4f2
commit
523d16dffa
@@ -20,6 +20,7 @@
|
||||
#include "mediapipe/framework/port/gmock.h"
|
||||
#include "mediapipe/framework/port/gtest.h"
|
||||
#include "mediapipe/framework/tool/test_util.h"
|
||||
#include "mediapipe/gpu/gl_texture_buffer.h"
|
||||
#include "mediapipe/gpu/gl_texture_util.h"
|
||||
#include "mediapipe/gpu/gpu_buffer_storage_ahwb.h"
|
||||
#include "mediapipe/gpu/gpu_buffer_storage_image_frame.h"
|
||||
@@ -228,5 +229,26 @@ TEST_F(GpuBufferTest, GlTextureViewRetainsWhatItNeeds) {
|
||||
EXPECT_TRUE(true);
|
||||
}
|
||||
|
||||
TEST_F(GpuBufferTest, CopiesShareConversions) {
|
||||
GpuBuffer buffer(300, 200, GpuBufferFormat::kBGRA32);
|
||||
{
|
||||
std::shared_ptr<ImageFrame> view = buffer.GetWriteView<ImageFrame>();
|
||||
FillImageFrameRGBA(*view, 255, 0, 0, 255);
|
||||
}
|
||||
|
||||
GpuBuffer other_handle = buffer;
|
||||
RunInGlContext([&buffer] {
|
||||
TempGlFramebuffer fb;
|
||||
auto view = buffer.GetReadView<GlTextureView>(0);
|
||||
});
|
||||
|
||||
// Check that other_handle also sees the same GlTextureBuffer as buffer.
|
||||
// Note that this is deliberately written so that it still passes on platforms
|
||||
// where we use another storage for GL textures (they will both be null).
|
||||
// TODO: expose more accessors for testing?
|
||||
EXPECT_EQ(other_handle.internal_storage<GlTextureBuffer>(),
|
||||
buffer.internal_storage<GlTextureBuffer>());
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
} // namespace mediapipe
|
||||
|
||||
Reference in New Issue
Block a user