mirror of
https://github.com/EduApps-CDG/OpenDX
synced 2024-12-30 09:45:37 +01:00
The naive optimization to use staging buffers rather than actual mapping turned out to be no more efficient than the previous approach. In order to achieve good performance, buffer renaming must be implemented instead.
61 lines
1.5 KiB
C++
61 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <dxvk_device.h>
|
|
|
|
#include "d3d11_device_child.h"
|
|
#include "d3d11_interfaces.h"
|
|
|
|
namespace dxvk {
|
|
|
|
class D3D11Device;
|
|
class D3D11DeviceContext;
|
|
|
|
|
|
class D3D11Buffer : public D3D11DeviceChild<ID3D11Buffer> {
|
|
|
|
public:
|
|
|
|
D3D11Buffer(
|
|
D3D11Device* device,
|
|
IDXGIBufferResourcePrivate* resource,
|
|
const D3D11_BUFFER_DESC& desc);
|
|
~D3D11Buffer();
|
|
|
|
HRESULT STDMETHODCALLTYPE QueryInterface(
|
|
REFIID riid,
|
|
void** ppvObject) final;
|
|
|
|
void STDMETHODCALLTYPE GetDevice(
|
|
ID3D11Device **ppDevice) final;
|
|
|
|
void STDMETHODCALLTYPE GetType(
|
|
D3D11_RESOURCE_DIMENSION *pResourceDimension) final;
|
|
|
|
UINT STDMETHODCALLTYPE GetEvictionPriority() final;
|
|
|
|
void STDMETHODCALLTYPE SetEvictionPriority(UINT EvictionPriority) final;
|
|
|
|
void STDMETHODCALLTYPE GetDesc(
|
|
D3D11_BUFFER_DESC *pDesc) final;
|
|
|
|
HRESULT Map(
|
|
D3D11DeviceContext* pContext,
|
|
D3D11_MAP MapType,
|
|
UINT MapFlags,
|
|
D3D11_MAPPED_SUBRESOURCE* pMappedSubresource);
|
|
|
|
void Unmap(
|
|
D3D11DeviceContext* pContext);
|
|
|
|
Rc<DxvkBuffer> GetDXVKBuffer();
|
|
|
|
private:
|
|
|
|
Com<D3D11Device> m_device;
|
|
Com<IDXGIBufferResourcePrivate> m_resource;
|
|
D3D11_BUFFER_DESC m_desc;
|
|
|
|
};
|
|
|
|
}
|