[magma][fidl] Make semaphore vector non-nullable

There's no reason to have a null vector vs. an empty one. Also switch to
using zx.koid to match ReleaseObjectFIDL.

Test: astro:go/magma-tps#L0
Change-Id: I14e28823379047372013eac14608128dea75ead5
diff --git a/garnet/lib/magma/src/magma_util/platform/zircon/zircon_platform_connection.cc b/garnet/lib/magma/src/magma_util/platform/zircon/zircon_platform_connection.cc
index 69a04ab..eae54b6 100644
--- a/garnet/lib/magma/src/magma_util/platform/zircon/zircon_platform_connection.cc
+++ b/garnet/lib/magma/src/magma_util/platform/zircon/zircon_platform_connection.cc
@@ -458,10 +458,9 @@
     }
 
     void ExecuteImmediateCommandsFIDL(uint32_t context_id, ::std::vector<uint8_t> command_data_vec,
-                                      ::fidl::VectorPtr<uint64_t> semaphores) override
+                                      ::std::vector<uint64_t> semaphore_vec) override
     {
         DLOG("ZirconPlatformConnection: ExecuteImmediateCommandsFIDL");
-        std::vector<uint64_t> semaphore_vec(semaphores.take());
         magma::Status status = delegate_->ExecuteImmediateCommands(
             context_id, command_data_vec.size(), command_data_vec.data(), semaphore_vec.size(),
             semaphore_vec.data());
diff --git a/garnet/lib/magma/src/magma_util/platform/zircon/zircon_platform_connection_client.cc b/garnet/lib/magma/src/magma_util/platform/zircon/zircon_platform_connection_client.cc
index 0e55acf..64f5a8a 100644
--- a/garnet/lib/magma/src/magma_util/platform/zircon/zircon_platform_connection_client.cc
+++ b/garnet/lib/magma/src/magma_util/platform/zircon/zircon_platform_connection_client.cc
@@ -165,14 +165,14 @@
             //               interface without copying.
             std::vector<uint8_t> command_vec;
             command_vec.reserve(command_bytes);
-            fidl::VectorPtr<uint64_t> semaphore_vec;
-            semaphore_vec->reserve(num_semaphores);
+            std::vector<uint64_t> semaphore_vec;
+            semaphore_vec.reserve(num_semaphores);
             for (int i = 0; i < buffers_to_send; ++i) {
                 const auto& buffer = buffers[buffers_sent + i];
                 const auto buffer_data = static_cast<uint8_t*>(buffer.data);
                 std::copy(buffer_data, buffer_data + buffer.size, std::back_inserter(command_vec));
                 std::copy(buffer.semaphores, buffer.semaphores + buffer.semaphore_count,
-                          std::back_inserter(*semaphore_vec));
+                          std::back_inserter(semaphore_vec));
             }
             magma_status_t result = MagmaChannelStatus(magma_fidl_->ExecuteImmediateCommandsFIDL(
                 context_id, std::move(command_vec), std::move(semaphore_vec)));
diff --git a/sdk/fidl/fuchsia.gpu.magma/magma.fidl b/sdk/fidl/fuchsia.gpu.magma/magma.fidl
index 6e4b5e5..88f0c87 100644
--- a/sdk/fidl/fuchsia.gpu.magma/magma.fidl
+++ b/sdk/fidl/fuchsia.gpu.magma/magma.fidl
@@ -52,7 +52,7 @@
     // Submits a series of commands for execution on the GPU without using a command buffer.
     ExecuteImmediateCommandsFIDL(uint32 context_id,
                                  vector<uint8>:kReceiveBufferSize command_data,
-                                 vector<uint64>? semaphores);
+                                 vector<zx.koid> semaphores);
 
     // Retrieve the current magma error status.
     GetErrorFIDL() -> (int32 magma_status);