Loading libs/vr/libbufferhub/buffer_hub_client.cpp +52 −20 Original line number Diff line number Diff line Loading @@ -199,18 +199,27 @@ int BufferConsumer::SetIgnore(bool ignore) { } BufferProducer::BufferProducer(uint32_t width, uint32_t height, uint32_t format, uint64_t usage, size_t metadata_size, uint32_t usage, size_t metadata_size, size_t slice_count) : BufferProducer(width, height, format, usage, usage, metadata_size, slice_count) {} BufferProducer::BufferProducer(uint32_t width, uint32_t height, uint32_t format, uint64_t producer_usage, uint64_t consumer_usage, size_t metadata_size, size_t slice_count) : BASE(BufferHubRPC::kClientPath) { ATRACE_NAME("BufferProducer::BufferProducer"); ALOGD_IF(TRACE, "BufferProducer::BufferProducer: fd=%d width=%u height=%u format=%u " "usage=%" PRIx64 " metadata_size=%zu slice_count=%zu", event_fd(), width, height, format, usage, metadata_size, slice_count); "producer_usage=%" PRIx64 " consumer_usage=%" PRIx64 " metadata_size=%zu slice_count=%zu", event_fd(), width, height, format, producer_usage, consumer_usage, metadata_size, slice_count); // (b/37881101) Deprecate producer/consumer usage auto status = InvokeRemoteMethod<BufferHubRPC::CreateBuffer>( width, height, format, usage, metadata_size, slice_count); width, height, format, (producer_usage | consumer_usage), metadata_size, slice_count); if (!status) { ALOGE( "BufferProducer::BufferProducer: Failed to create producer buffer: %s", Loading @@ -230,20 +239,29 @@ BufferProducer::BufferProducer(uint32_t width, uint32_t height, uint32_t format, BufferProducer::BufferProducer(const std::string& name, int user_id, int group_id, uint32_t width, uint32_t height, uint32_t format, uint64_t usage, uint32_t format, uint32_t usage, size_t meta_size_bytes, size_t slice_count) : BufferProducer(name, user_id, group_id, width, height, format, usage, usage, meta_size_bytes, slice_count) {} BufferProducer::BufferProducer(const std::string& name, int user_id, int group_id, uint32_t width, uint32_t height, uint32_t format, uint64_t producer_usage, uint64_t consumer_usage, size_t meta_size_bytes, size_t slice_count) : BASE(BufferHubRPC::kClientPath) { ATRACE_NAME("BufferProducer::BufferProducer"); ALOGD_IF(TRACE, "BufferProducer::BufferProducer: fd=%d name=%s user_id=%d " "group_id=%d width=%u height=%u format=%u usage=%" PRIx64 " meta_size_bytes=%zu slice_count=%zu", "group_id=%d width=%u height=%u format=%u producer_usage=%" PRIx64 " consumer_usage=%" PRIx64 " meta_size_bytes=%zu slice_count=%zu", event_fd(), name.c_str(), user_id, group_id, width, height, format, usage, meta_size_bytes, slice_count); producer_usage, consumer_usage, meta_size_bytes, slice_count); // (b/37881101) Deprecate producer/consumer usage auto status = InvokeRemoteMethod<BufferHubRPC::CreatePersistentBuffer>( name, user_id, group_id, width, height, format, usage, meta_size_bytes, slice_count); name, user_id, group_id, width, height, format, (producer_usage | consumer_usage), meta_size_bytes, slice_count); if (!status) { ALOGE( "BufferProducer::BufferProducer: Failed to create/get persistent " Loading @@ -263,19 +281,26 @@ BufferProducer::BufferProducer(const std::string& name, int user_id, } } BufferProducer::BufferProducer(uint64_t usage, size_t size) BufferProducer::BufferProducer(uint32_t usage, size_t size) : BufferProducer(usage, usage, size) {} BufferProducer::BufferProducer(uint64_t producer_usage, uint64_t consumer_usage, size_t size) : BASE(BufferHubRPC::kClientPath) { ATRACE_NAME("BufferProducer::BufferProducer"); ALOGD_IF(TRACE, "BufferProducer::BufferProducer: usage=%" PRIx64 " size=%zu", usage, size); ALOGD_IF(TRACE, "BufferProducer::BufferProducer: producer_usage=%" PRIx64 " consumer_usage=%" PRIx64 " size=%zu", producer_usage, consumer_usage, size); const int width = static_cast<int>(size); const int height = 1; const int format = HAL_PIXEL_FORMAT_BLOB; const size_t meta_size_bytes = 0; const size_t slice_count = 1; // (b/37881101) Deprecate producer/consumer usage auto status = InvokeRemoteMethod<BufferHubRPC::CreateBuffer>( width, height, format, usage, meta_size_bytes, width, height, format, (producer_usage | consumer_usage), meta_size_bytes, slice_count); if (!status) { ALOGE("BufferProducer::BufferProducer: Failed to create blob: %s", Loading @@ -294,22 +319,29 @@ BufferProducer::BufferProducer(uint64_t usage, size_t size) } BufferProducer::BufferProducer(const std::string& name, int user_id, int group_id, uint64_t usage, size_t size) int group_id, uint32_t usage, size_t size) : BufferProducer(name, user_id, group_id, usage, usage, size) {} BufferProducer::BufferProducer(const std::string& name, int user_id, int group_id, uint64_t producer_usage, uint64_t consumer_usage, size_t size) : BASE(BufferHubRPC::kClientPath) { ATRACE_NAME("BufferProducer::BufferProducer"); ALOGD_IF(TRACE, "BufferProducer::BufferProducer: name=%s user_id=%d group=%d " "usage=%" PRIx64 " size=%zu", name.c_str(), user_id, group_id, usage, size); "producer_usage=%" PRIx64 " consumer_usage=%" PRIx64 " size=%zu", name.c_str(), user_id, group_id, producer_usage, consumer_usage, size); const int width = static_cast<int>(size); const int height = 1; const int format = HAL_PIXEL_FORMAT_BLOB; const size_t meta_size_bytes = 0; const size_t slice_count = 1; // (b/37881101) Deprecate producer/consumer usage auto status = InvokeRemoteMethod<BufferHubRPC::CreatePersistentBuffer>( name, user_id, group_id, width, height, format, usage, meta_size_bytes, slice_count); name, user_id, group_id, width, height, format, (producer_usage | consumer_usage), meta_size_bytes, slice_count); if (!status) { ALOGE( "BufferProducer::BufferProducer: Failed to create persistent " Loading libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h +19 −5 Original line number Diff line number Diff line Loading @@ -111,9 +111,13 @@ class BufferHubBuffer : public pdx::Client { uint32_t height() const { return slices_[0].height(); } uint32_t stride() const { return slices_[0].stride(); } uint32_t format() const { return slices_[0].format(); } uint64_t usage() const { return slices_[0].usage(); } uint32_t usage() const { return slices_[0].usage(); } uint32_t layer_count() const { return slices_[0].layer_count(); } // TODO(b/37881101) Clean up producer/consumer usage. uint64_t producer_usage() const { return slices_[0].usage(); } uint64_t consumer_usage() const { return slices_[0].usage(); } protected: explicit BufferHubBuffer(LocalChannelHandle channel); explicit BufferHubBuffer(const std::string& endpoint_path); Loading Loading @@ -220,8 +224,11 @@ class BufferProducer : public pdx::ClientBase<BufferProducer, BufferHubBuffer> { // Constructs a buffer with the given geometry and parameters. BufferProducer(uint32_t width, uint32_t height, uint32_t format, uint64_t usage, size_t metadata_size = 0, uint32_t usage, size_t metadata_size = 0, size_t slice_count = 1); BufferProducer(uint32_t width, uint32_t height, uint32_t format, uint64_t producer_usage, uint64_t consumer_usage, size_t metadata_size, size_t slice_count); // Constructs a persistent buffer with the given geometry and parameters and // binds it to |name| in one shot. If a persistent buffer with the same name Loading @@ -237,15 +244,22 @@ class BufferProducer : public pdx::ClientBase<BufferProducer, BufferHubBuffer> { // effective user or group id of the calling process. BufferProducer(const std::string& name, int user_id, int group_id, uint32_t width, uint32_t height, uint32_t format, uint64_t usage, size_t metadata_size = 0, uint32_t usage, size_t metadata_size = 0, size_t slice_count = 1); BufferProducer(const std::string& name, int user_id, int group_id, uint32_t width, uint32_t height, uint32_t format, uint64_t producer_usage, uint64_t consumer_usage, size_t metadata_size, size_t slice_count); // Constructs a blob (flat) buffer with the given usage flags. BufferProducer(uint64_t usage, size_t size); BufferProducer(uint32_t usage, size_t size); BufferProducer(uint64_t producer_usage, uint64_t consumer_usage, size_t size); // Constructs a persistent blob (flat) buffer and binds it to |name|. BufferProducer(const std::string& name, int user_id, int group_id, uint64_t usage, size_t size); uint32_t usage, size_t size); BufferProducer(const std::string& name, int user_id, int group_id, uint64_t producer_usage, uint64_t consumer_usage, size_t size); // Constructs a channel to persistent buffer by name only. The buffer must // have been previously created or made persistent. Loading libs/vr/libdvr/display_manager_client.cpp +17 −3 Original line number Diff line number Diff line #include "include/dvr/display_manager_client.h" #include <dvr/dvr_buffer.h> #include <grallocusage/GrallocUsageConversion.h> #include <private/android/AHardwareBufferHelpers.h> #include <private/dvr/buffer_hub_client.h> #include <private/dvr/display_manager_client_impl.h> Loading Loading @@ -45,11 +46,24 @@ void dvrDisplayManagerClientDestroy(DvrDisplayManagerClient* client) { DvrBuffer* dvrDisplayManagerSetupNamedBuffer(DvrDisplayManagerClient* client, const char* name, size_t size, uint64_t usage) { uint64_t hardware_buffer_usage, uint64_t unused) { uint64_t producer_usage = 0; uint64_t consumer_usage = 0; // Note: AHardwareBuffer no longer uses usage0/usage1 uint64_t gralloc_usage = android::AHardwareBuffer_convertToGrallocUsageBits(usage); android::AHardwareBuffer_convertToGrallocUsageBits(hardware_buffer_usage); // Note: split producer/consumer usage is deprecated, grallocV2 uses single // 64-bits usage // And, currently, 64-bits gralloc usage flags can safely be truncated to // 32-bits android_convertGralloc0To1Usage((uint32_t)gralloc_usage, &producer_usage, &consumer_usage); auto ion_buffer = client->client->SetupNamedBuffer(name, size, gralloc_usage); auto ion_buffer = client->client->SetupNamedBuffer( name, size, (producer_usage | consumer_usage)); if (ion_buffer) { return CreateDvrBufferFromIonBuffer(std::move(ion_buffer)); } Loading libs/vr/libdvr/dvr_surface.cpp +4 −7 Original line number Diff line number Diff line #include "include/dvr/dvr_surface.h" #include <private/android/AHardwareBufferHelpers.h> #include <private/dvr/display_client.h> using namespace android; Loading @@ -11,8 +10,8 @@ struct DvrSurface { extern "C" { int dvrSurfaceCreate(int width, int height, int format, uint64_t usage, int flags, DvrSurface** out_surface) { int dvrSurfaceCreate(int width, int height, int format, uint64_t usage0, uint64_t usage1, int flags, DvrSurface** out_surface) { if (out_surface == nullptr) { ALOGE("dvrSurfaceCreate: invalid inputs: out_surface=%p.", out_surface); return -EINVAL; Loading @@ -25,12 +24,10 @@ int dvrSurfaceCreate(int width, int height, int format, uint64_t usage, return error; } // The following convertion is sort of unnecessary as AHARDWAREBUFFER_USAGE // and BufferUsage should be synced up now. uint64_t gralloc_usage = AHardwareBuffer_convertToGrallocUsageBits(usage); // TODO(hendrikw): When we move to gralloc1, pass both usage0 and usage1 down. std::unique_ptr<dvr::DisplaySurfaceClient> surface = client->CreateDisplaySurface( width, height, static_cast<int>(gralloc_usage), format, flags); width, height, static_cast<int>(usage0 | usage1), format, flags); DvrSurface* dvr_surface = new DvrSurface; dvr_surface->display_surface_ = std::move(surface); Loading libs/vr/libdvr/include/dvr/display_manager_client.h +1 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ void dvrDisplayManagerClientDestroy(DvrDisplayManagerClient* client); DvrBuffer* dvrDisplayManagerSetupNamedBuffer(DvrDisplayManagerClient* client, const char* name, size_t size, uint64_t usage); uint64_t usage0, uint64_t usage1); // Return an event fd for checking if there was an event on the server // Note that the only event which will be flagged is POLLIN. You must use Loading Loading
libs/vr/libbufferhub/buffer_hub_client.cpp +52 −20 Original line number Diff line number Diff line Loading @@ -199,18 +199,27 @@ int BufferConsumer::SetIgnore(bool ignore) { } BufferProducer::BufferProducer(uint32_t width, uint32_t height, uint32_t format, uint64_t usage, size_t metadata_size, uint32_t usage, size_t metadata_size, size_t slice_count) : BufferProducer(width, height, format, usage, usage, metadata_size, slice_count) {} BufferProducer::BufferProducer(uint32_t width, uint32_t height, uint32_t format, uint64_t producer_usage, uint64_t consumer_usage, size_t metadata_size, size_t slice_count) : BASE(BufferHubRPC::kClientPath) { ATRACE_NAME("BufferProducer::BufferProducer"); ALOGD_IF(TRACE, "BufferProducer::BufferProducer: fd=%d width=%u height=%u format=%u " "usage=%" PRIx64 " metadata_size=%zu slice_count=%zu", event_fd(), width, height, format, usage, metadata_size, slice_count); "producer_usage=%" PRIx64 " consumer_usage=%" PRIx64 " metadata_size=%zu slice_count=%zu", event_fd(), width, height, format, producer_usage, consumer_usage, metadata_size, slice_count); // (b/37881101) Deprecate producer/consumer usage auto status = InvokeRemoteMethod<BufferHubRPC::CreateBuffer>( width, height, format, usage, metadata_size, slice_count); width, height, format, (producer_usage | consumer_usage), metadata_size, slice_count); if (!status) { ALOGE( "BufferProducer::BufferProducer: Failed to create producer buffer: %s", Loading @@ -230,20 +239,29 @@ BufferProducer::BufferProducer(uint32_t width, uint32_t height, uint32_t format, BufferProducer::BufferProducer(const std::string& name, int user_id, int group_id, uint32_t width, uint32_t height, uint32_t format, uint64_t usage, uint32_t format, uint32_t usage, size_t meta_size_bytes, size_t slice_count) : BufferProducer(name, user_id, group_id, width, height, format, usage, usage, meta_size_bytes, slice_count) {} BufferProducer::BufferProducer(const std::string& name, int user_id, int group_id, uint32_t width, uint32_t height, uint32_t format, uint64_t producer_usage, uint64_t consumer_usage, size_t meta_size_bytes, size_t slice_count) : BASE(BufferHubRPC::kClientPath) { ATRACE_NAME("BufferProducer::BufferProducer"); ALOGD_IF(TRACE, "BufferProducer::BufferProducer: fd=%d name=%s user_id=%d " "group_id=%d width=%u height=%u format=%u usage=%" PRIx64 " meta_size_bytes=%zu slice_count=%zu", "group_id=%d width=%u height=%u format=%u producer_usage=%" PRIx64 " consumer_usage=%" PRIx64 " meta_size_bytes=%zu slice_count=%zu", event_fd(), name.c_str(), user_id, group_id, width, height, format, usage, meta_size_bytes, slice_count); producer_usage, consumer_usage, meta_size_bytes, slice_count); // (b/37881101) Deprecate producer/consumer usage auto status = InvokeRemoteMethod<BufferHubRPC::CreatePersistentBuffer>( name, user_id, group_id, width, height, format, usage, meta_size_bytes, slice_count); name, user_id, group_id, width, height, format, (producer_usage | consumer_usage), meta_size_bytes, slice_count); if (!status) { ALOGE( "BufferProducer::BufferProducer: Failed to create/get persistent " Loading @@ -263,19 +281,26 @@ BufferProducer::BufferProducer(const std::string& name, int user_id, } } BufferProducer::BufferProducer(uint64_t usage, size_t size) BufferProducer::BufferProducer(uint32_t usage, size_t size) : BufferProducer(usage, usage, size) {} BufferProducer::BufferProducer(uint64_t producer_usage, uint64_t consumer_usage, size_t size) : BASE(BufferHubRPC::kClientPath) { ATRACE_NAME("BufferProducer::BufferProducer"); ALOGD_IF(TRACE, "BufferProducer::BufferProducer: usage=%" PRIx64 " size=%zu", usage, size); ALOGD_IF(TRACE, "BufferProducer::BufferProducer: producer_usage=%" PRIx64 " consumer_usage=%" PRIx64 " size=%zu", producer_usage, consumer_usage, size); const int width = static_cast<int>(size); const int height = 1; const int format = HAL_PIXEL_FORMAT_BLOB; const size_t meta_size_bytes = 0; const size_t slice_count = 1; // (b/37881101) Deprecate producer/consumer usage auto status = InvokeRemoteMethod<BufferHubRPC::CreateBuffer>( width, height, format, usage, meta_size_bytes, width, height, format, (producer_usage | consumer_usage), meta_size_bytes, slice_count); if (!status) { ALOGE("BufferProducer::BufferProducer: Failed to create blob: %s", Loading @@ -294,22 +319,29 @@ BufferProducer::BufferProducer(uint64_t usage, size_t size) } BufferProducer::BufferProducer(const std::string& name, int user_id, int group_id, uint64_t usage, size_t size) int group_id, uint32_t usage, size_t size) : BufferProducer(name, user_id, group_id, usage, usage, size) {} BufferProducer::BufferProducer(const std::string& name, int user_id, int group_id, uint64_t producer_usage, uint64_t consumer_usage, size_t size) : BASE(BufferHubRPC::kClientPath) { ATRACE_NAME("BufferProducer::BufferProducer"); ALOGD_IF(TRACE, "BufferProducer::BufferProducer: name=%s user_id=%d group=%d " "usage=%" PRIx64 " size=%zu", name.c_str(), user_id, group_id, usage, size); "producer_usage=%" PRIx64 " consumer_usage=%" PRIx64 " size=%zu", name.c_str(), user_id, group_id, producer_usage, consumer_usage, size); const int width = static_cast<int>(size); const int height = 1; const int format = HAL_PIXEL_FORMAT_BLOB; const size_t meta_size_bytes = 0; const size_t slice_count = 1; // (b/37881101) Deprecate producer/consumer usage auto status = InvokeRemoteMethod<BufferHubRPC::CreatePersistentBuffer>( name, user_id, group_id, width, height, format, usage, meta_size_bytes, slice_count); name, user_id, group_id, width, height, format, (producer_usage | consumer_usage), meta_size_bytes, slice_count); if (!status) { ALOGE( "BufferProducer::BufferProducer: Failed to create persistent " Loading
libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h +19 −5 Original line number Diff line number Diff line Loading @@ -111,9 +111,13 @@ class BufferHubBuffer : public pdx::Client { uint32_t height() const { return slices_[0].height(); } uint32_t stride() const { return slices_[0].stride(); } uint32_t format() const { return slices_[0].format(); } uint64_t usage() const { return slices_[0].usage(); } uint32_t usage() const { return slices_[0].usage(); } uint32_t layer_count() const { return slices_[0].layer_count(); } // TODO(b/37881101) Clean up producer/consumer usage. uint64_t producer_usage() const { return slices_[0].usage(); } uint64_t consumer_usage() const { return slices_[0].usage(); } protected: explicit BufferHubBuffer(LocalChannelHandle channel); explicit BufferHubBuffer(const std::string& endpoint_path); Loading Loading @@ -220,8 +224,11 @@ class BufferProducer : public pdx::ClientBase<BufferProducer, BufferHubBuffer> { // Constructs a buffer with the given geometry and parameters. BufferProducer(uint32_t width, uint32_t height, uint32_t format, uint64_t usage, size_t metadata_size = 0, uint32_t usage, size_t metadata_size = 0, size_t slice_count = 1); BufferProducer(uint32_t width, uint32_t height, uint32_t format, uint64_t producer_usage, uint64_t consumer_usage, size_t metadata_size, size_t slice_count); // Constructs a persistent buffer with the given geometry and parameters and // binds it to |name| in one shot. If a persistent buffer with the same name Loading @@ -237,15 +244,22 @@ class BufferProducer : public pdx::ClientBase<BufferProducer, BufferHubBuffer> { // effective user or group id of the calling process. BufferProducer(const std::string& name, int user_id, int group_id, uint32_t width, uint32_t height, uint32_t format, uint64_t usage, size_t metadata_size = 0, uint32_t usage, size_t metadata_size = 0, size_t slice_count = 1); BufferProducer(const std::string& name, int user_id, int group_id, uint32_t width, uint32_t height, uint32_t format, uint64_t producer_usage, uint64_t consumer_usage, size_t metadata_size, size_t slice_count); // Constructs a blob (flat) buffer with the given usage flags. BufferProducer(uint64_t usage, size_t size); BufferProducer(uint32_t usage, size_t size); BufferProducer(uint64_t producer_usage, uint64_t consumer_usage, size_t size); // Constructs a persistent blob (flat) buffer and binds it to |name|. BufferProducer(const std::string& name, int user_id, int group_id, uint64_t usage, size_t size); uint32_t usage, size_t size); BufferProducer(const std::string& name, int user_id, int group_id, uint64_t producer_usage, uint64_t consumer_usage, size_t size); // Constructs a channel to persistent buffer by name only. The buffer must // have been previously created or made persistent. Loading
libs/vr/libdvr/display_manager_client.cpp +17 −3 Original line number Diff line number Diff line #include "include/dvr/display_manager_client.h" #include <dvr/dvr_buffer.h> #include <grallocusage/GrallocUsageConversion.h> #include <private/android/AHardwareBufferHelpers.h> #include <private/dvr/buffer_hub_client.h> #include <private/dvr/display_manager_client_impl.h> Loading Loading @@ -45,11 +46,24 @@ void dvrDisplayManagerClientDestroy(DvrDisplayManagerClient* client) { DvrBuffer* dvrDisplayManagerSetupNamedBuffer(DvrDisplayManagerClient* client, const char* name, size_t size, uint64_t usage) { uint64_t hardware_buffer_usage, uint64_t unused) { uint64_t producer_usage = 0; uint64_t consumer_usage = 0; // Note: AHardwareBuffer no longer uses usage0/usage1 uint64_t gralloc_usage = android::AHardwareBuffer_convertToGrallocUsageBits(usage); android::AHardwareBuffer_convertToGrallocUsageBits(hardware_buffer_usage); // Note: split producer/consumer usage is deprecated, grallocV2 uses single // 64-bits usage // And, currently, 64-bits gralloc usage flags can safely be truncated to // 32-bits android_convertGralloc0To1Usage((uint32_t)gralloc_usage, &producer_usage, &consumer_usage); auto ion_buffer = client->client->SetupNamedBuffer(name, size, gralloc_usage); auto ion_buffer = client->client->SetupNamedBuffer( name, size, (producer_usage | consumer_usage)); if (ion_buffer) { return CreateDvrBufferFromIonBuffer(std::move(ion_buffer)); } Loading
libs/vr/libdvr/dvr_surface.cpp +4 −7 Original line number Diff line number Diff line #include "include/dvr/dvr_surface.h" #include <private/android/AHardwareBufferHelpers.h> #include <private/dvr/display_client.h> using namespace android; Loading @@ -11,8 +10,8 @@ struct DvrSurface { extern "C" { int dvrSurfaceCreate(int width, int height, int format, uint64_t usage, int flags, DvrSurface** out_surface) { int dvrSurfaceCreate(int width, int height, int format, uint64_t usage0, uint64_t usage1, int flags, DvrSurface** out_surface) { if (out_surface == nullptr) { ALOGE("dvrSurfaceCreate: invalid inputs: out_surface=%p.", out_surface); return -EINVAL; Loading @@ -25,12 +24,10 @@ int dvrSurfaceCreate(int width, int height, int format, uint64_t usage, return error; } // The following convertion is sort of unnecessary as AHARDWAREBUFFER_USAGE // and BufferUsage should be synced up now. uint64_t gralloc_usage = AHardwareBuffer_convertToGrallocUsageBits(usage); // TODO(hendrikw): When we move to gralloc1, pass both usage0 and usage1 down. std::unique_ptr<dvr::DisplaySurfaceClient> surface = client->CreateDisplaySurface( width, height, static_cast<int>(gralloc_usage), format, flags); width, height, static_cast<int>(usage0 | usage1), format, flags); DvrSurface* dvr_surface = new DvrSurface; dvr_surface->display_surface_ = std::move(surface); Loading
libs/vr/libdvr/include/dvr/display_manager_client.h +1 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ void dvrDisplayManagerClientDestroy(DvrDisplayManagerClient* client); DvrBuffer* dvrDisplayManagerSetupNamedBuffer(DvrDisplayManagerClient* client, const char* name, size_t size, uint64_t usage); uint64_t usage0, uint64_t usage1); // Return an event fd for checking if there was an event on the server // Note that the only event which will be flagged is POLLIN. You must use Loading