# LockBufferForWrite

> Enable the LockBufferForWrite and UnlockBufferAfterWrite methods on the GraphicsBuffer. CAUTION: when using this flag, ensure that you do not introduce memory read/write hazards.

## Definition

* **Type:** Field
* **Namespace:** [UnityEngine](/engine/6000.6/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
LockBufferForWrite = 1
```

### Remarks

With this flag, the buffer can be updated at any time using [GraphicsBuffer.SetData](/engine/6000.6/script-reference/unityengine/graphicsbuffer/setdata.md) and equivalent functions that write data from the CPU.

The GPU can only read from the buffer, including using it as a copy source. No writes from the GPU are allowed, including using the GPU as a copy destination or a UAV. This means that when using [GraphicsBuffer.Target.Raw](/engine/6000.6/script-reference/unityengine/graphicsbuffer/target/raw.md), for example, you can use `ByteAddressBuffer` but not `RWByteAddressBuffer` in an HLSL shader. Using `RWByteAddressBuffer` allows writes into the buffer.

The buffer can be written to directly from the CPU using [GraphicsBuffer.LockBufferForWrite](/engine/6000.6/script-reference/unityengine/graphicsbuffer/lockbufferforwrite.md). For more information, see [GraphicsBuffer.LockBufferForWrite](/engine/6000.6/script-reference/unityengine/graphicsbuffer/lockbufferforwrite.md).

This mode might place the buffer in the CPU visible GPU memory or in GPU visible CPU memory depending on a platform.

Additional Resources: [GraphicsBuffer](/engine/6000.6/script-reference/unityengine/graphicsbuffer.md) [GraphicsBuffer.LockBufferForWrite](/engine/6000.6/script-reference/unityengine/graphicsbuffer/lockbufferforwrite.md).
