diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index 583dc91d..f550b7fb 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -218,6 +218,17 @@ namespace dxvk { } + void DxvkContext::bindXfbBuffer( + uint32_t binding, + const DxvkBufferSlice& buffer, + const DxvkBufferSlice& counter) { + m_state.xfb.buffers [binding] = buffer; + m_state.xfb.counters[binding] = counter; + + m_flags.set(DxvkContextFlag::GpDirtyXfbBuffers); + } + + void DxvkContext::clearBuffer( const Rc& buffer, VkDeviceSize offset, diff --git a/src/dxvk/dxvk_context.h b/src/dxvk/dxvk_context.h index d0a3ae3e..b186bf6a 100644 --- a/src/dxvk/dxvk_context.h +++ b/src/dxvk/dxvk_context.h @@ -173,6 +173,18 @@ namespace dxvk { const DxvkBufferSlice& buffer, uint32_t stride); + /** + * \brief Binds transform feedback buffer + * + * \param [in] binding Xfb buffer binding + * \param [in] buffer The buffer to bind + * \param [in] counter Xfb counter buffer + */ + void bindXfbBuffer( + uint32_t binding, + const DxvkBufferSlice& buffer, + const DxvkBufferSlice& counter); + /** * \brief Clears a buffer with a fixed value *