+ RENDER_TARGET_CREATE_INFO_STRUCT,
+ SYNC_OBJECT_CREATE_INFO_STRUCT
+};
+
+/**
+ * @brief Enum describes load operation associated
+ * with particular framebuffer attachment
+ */
+enum class AttachmentLoadOp
+{
+ LOAD, ///< Load previous content
+ CLEAR, ///< Clear the attachment
+ DONT_CARE ///< Let driver decide
+};
+
+/**
+ * @brief Enum describes store operation associated
+ * with particular framebuffer attachment
+ */
+enum class AttachmentStoreOp
+{
+ STORE, ///< Store content (color attachemnts)
+ DONT_CARE ///< Let driver decide (depth/stencil attachemnt with no intention of reading)
+};
+
+/**
+ * @brief The structure describes the read/write
+ * modes of a single framebuffer attachment
+ *
+ * The attachment description specifies what is going to
+ * happen to the attachment at the beginning and end of the
+ * render pass.
+ *
+ * The stencil operation is separated as it may be set
+ * independent from the depth component (use loadOp, storeOp
+ * to set up the depth component and stencilLoadOp, stencilStoreOp
+ * for stencil component).
+ */
+struct AttachmentDescription
+{
+ /**
+ * @brief Sets load operation for the attachment
+ *
+ * @param value Load operation
+ * @return this structure
+ */
+ auto& SetLoadOp(AttachmentLoadOp value)
+ {
+ loadOp = value;
+ return *this;
+ }
+
+ /**
+ * @brief Sets store operation for the attachment
+ *
+ * @param value Store operation
+ * @return this structure
+ */
+ auto& SetStoreOp(AttachmentStoreOp value)
+ {
+ storeOp = value;
+ return *this;
+ }
+
+ /**
+ * @brief Sets load operation for the stencil part of attachment
+ *
+ * @param value load operation
+ * @return this structure
+ */
+ auto& SetStencilLoadOp(AttachmentLoadOp value)
+ {
+ stencilLoadOp = value;
+ return *this;
+ }
+
+ /**
+ * @brief Sets store operation for the stencil part of attachment
+ *
+ * @param value store operation
+ * @return this structure
+ */
+ auto& SetStencilStoreOp(AttachmentStoreOp value)
+ {
+ stencilStoreOp = value;
+ return *this;
+ }
+
+ AttachmentLoadOp loadOp{};
+ AttachmentStoreOp storeOp{};
+ AttachmentLoadOp stencilLoadOp{};
+ AttachmentStoreOp stencilStoreOp{};