diff --git a/src/dawn_native/Device.cpp b/src/dawn_native/Device.cpp
index b0ef00d..adc75fc 100644
--- a/src/dawn_native/Device.cpp
+++ b/src/dawn_native/Device.cpp
@@ -112,6 +112,8 @@
         // alive.
         mState = State::Alive;
 
+        DAWN_TRY_ASSIGN(mEmptyBindGroupLayout, CreateEmptyBindGroupLayout());
+
         return {};
     }
 
@@ -390,21 +392,22 @@
         return mFormatTable[index];
     }
 
-    ResultOrError<BindGroupLayoutBase*> DeviceBase::GetOrCreateBindGroupLayout(
+    ResultOrError<Ref<BindGroupLayoutBase>> DeviceBase::GetOrCreateBindGroupLayout(
         const BindGroupLayoutDescriptor* descriptor) {
         BindGroupLayoutBase blueprint(this, descriptor);
 
+        Ref<BindGroupLayoutBase> result = nullptr;
         auto iter = mCaches->bindGroupLayouts.find(&blueprint);
         if (iter != mCaches->bindGroupLayouts.end()) {
-            (*iter)->Reference();
-            return *iter;
+            result = *iter;
+        } else {
+            BindGroupLayoutBase* backendObj;
+            DAWN_TRY_ASSIGN(backendObj, CreateBindGroupLayoutImpl(descriptor));
+            backendObj->SetIsCachedReference();
+            mCaches->bindGroupLayouts.insert(backendObj);
+            result = AcquireRef(backendObj);
         }
-
-        BindGroupLayoutBase* backendObj;
-        DAWN_TRY_ASSIGN(backendObj, CreateBindGroupLayoutImpl(descriptor));
-        backendObj->SetIsCachedReference();
-        mCaches->bindGroupLayouts.insert(backendObj);
-        return backendObj;
+        return std::move(result);
     }
 
     void DeviceBase::UncacheBindGroupLayout(BindGroupLayoutBase* obj) {
@@ -413,22 +416,18 @@
         ASSERT(removedCount == 1);
     }
 
-    ResultOrError<BindGroupLayoutBase*> DeviceBase::GetOrCreateEmptyBindGroupLayout() {
-        if (!mEmptyBindGroupLayout) {
-            BindGroupLayoutDescriptor desc = {};
-            desc.entryCount = 0;
-            desc.entries = nullptr;
+    // Private function used at initialization
+    ResultOrError<Ref<BindGroupLayoutBase>> DeviceBase::CreateEmptyBindGroupLayout() {
+        BindGroupLayoutDescriptor desc = {};
+        desc.entryCount = 0;
+        desc.entries = nullptr;
 
-            BindGroupLayoutBase* bgl = nullptr;
-            if (ConsumedError(GetOrCreateBindGroupLayout(&desc), &bgl)) {
-                return BindGroupLayoutBase::MakeError(this);
-            }
-            mEmptyBindGroupLayout = bgl;
-            return bgl;
-        } else {
-            mEmptyBindGroupLayout->Reference();
-            return mEmptyBindGroupLayout.Get();
-        }
+        return GetOrCreateBindGroupLayout(&desc);
+    }
+
+    BindGroupLayoutBase* DeviceBase::GetEmptyBindGroupLayout() {
+        ASSERT(mEmptyBindGroupLayout);
+        return mEmptyBindGroupLayout.Get();
     }
 
     ResultOrError<ComputePipelineBase*> DeviceBase::GetOrCreateComputePipeline(
@@ -871,7 +870,9 @@
         if (IsValidationEnabled()) {
             DAWN_TRY(ValidateBindGroupLayoutDescriptor(this, descriptor));
         }
-        DAWN_TRY_ASSIGN(*result, GetOrCreateBindGroupLayout(descriptor));
+        Ref<BindGroupLayoutBase> bgl;
+        DAWN_TRY_ASSIGN(bgl, GetOrCreateBindGroupLayout(descriptor));
+        *result = bgl.Detach();
         return {};
     }
 
@@ -1107,4 +1108,4 @@
         }
     }
 
-}  // namespace dawn_native
+}  // namespace dawn_native
\ No newline at end of file
diff --git a/src/dawn_native/Device.h b/src/dawn_native/Device.h
index f9a3b43..a513796 100644
--- a/src/dawn_native/Device.h
+++ b/src/dawn_native/Device.h
@@ -108,11 +108,11 @@
         // the created object will be, the "blueprint". The blueprint is just a FooBase object
         // instead of a backend Foo object. If the blueprint doesn't match an object in the
         // cache, then the descriptor is used to make a new object.
-        ResultOrError<BindGroupLayoutBase*> GetOrCreateBindGroupLayout(
+        ResultOrError<Ref<BindGroupLayoutBase>> GetOrCreateBindGroupLayout(
             const BindGroupLayoutDescriptor* descriptor);
         void UncacheBindGroupLayout(BindGroupLayoutBase* obj);
 
-        ResultOrError<BindGroupLayoutBase*> GetOrCreateEmptyBindGroupLayout();
+        BindGroupLayoutBase* GetEmptyBindGroupLayout();
 
         ResultOrError<ComputePipelineBase*> GetOrCreateComputePipeline(
             const ComputePipelineDescriptor* descriptor);
@@ -266,6 +266,8 @@
             TextureBase* texture,
             const TextureViewDescriptor* descriptor) = 0;
 
+        ResultOrError<Ref<BindGroupLayoutBase>> CreateEmptyBindGroupLayout();
+
         MaybeError CreateBindGroupInternal(BindGroupBase** result,
                                            const BindGroupDescriptor* descriptor);
         MaybeError CreateBindGroupLayoutInternal(BindGroupLayoutBase** result,
diff --git a/src/dawn_native/Pipeline.cpp b/src/dawn_native/Pipeline.cpp
index 15dd068..074f647 100644
--- a/src/dawn_native/Pipeline.cpp
+++ b/src/dawn_native/Pipeline.cpp
@@ -92,17 +92,14 @@
 
         BindGroupIndex groupIndex(groupIndexIn);
 
+        BindGroupLayoutBase* bgl = nullptr;
         if (!mLayout->GetBindGroupLayoutsMask()[groupIndex]) {
-            BindGroupLayoutBase* bgl = nullptr;
-            if (GetDevice()->ConsumedError(GetDevice()->GetOrCreateEmptyBindGroupLayout(), &bgl)) {
-                return BindGroupLayoutBase::MakeError(GetDevice());
-            }
-            return bgl;
+            bgl = GetDevice()->GetEmptyBindGroupLayout();
+        } else {
+            bgl = mLayout->GetBindGroupLayout(groupIndex);
         }
-
-        BindGroupLayoutBase* bgl = mLayout->GetBindGroupLayout(groupIndex);
         bgl->Reference();
         return bgl;
     }
 
-}  // namespace dawn_native
+}  // namespace dawn_native
\ No newline at end of file
diff --git a/src/dawn_native/PipelineLayout.cpp b/src/dawn_native/PipelineLayout.cpp
index def4875..995a3ee 100644
--- a/src/dawn_native/PipelineLayout.cpp
+++ b/src/dawn_native/PipelineLayout.cpp
@@ -222,7 +222,10 @@
 
             // We should never produce a bad descriptor.
             ASSERT(!ValidateBindGroupLayoutDescriptor(device, &desc).IsError());
-            DAWN_TRY_ASSIGN(bindGroupLayouts[group], device->GetOrCreateBindGroupLayout(&desc));
+
+            Ref<BindGroupLayoutBase> bgl;
+            DAWN_TRY_ASSIGN(bgl, device->GetOrCreateBindGroupLayout(&desc));
+            bindGroupLayouts[group] = bgl.Detach();
         }
 
         PipelineLayoutDescriptor desc = {};
@@ -313,4 +316,4 @@
         return true;
     }
 
-}  // namespace dawn_native
+}  // namespace dawn_native
\ No newline at end of file
