#pragma once #include #include "d3d11_device_child.h" namespace dxvk { class D3D11Device; class D3D11SamplerState : public D3D11DeviceChild { public: using DescType = D3D11_SAMPLER_DESC; D3D11SamplerState( D3D11Device* device, const D3D11_SAMPLER_DESC& desc); ~D3D11SamplerState(); HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid, void** ppvObject) final; void STDMETHODCALLTYPE GetDevice( ID3D11Device **ppDevice) final; void STDMETHODCALLTYPE GetDesc( D3D11_SAMPLER_DESC* pDesc) final; Rc GetDXVKSampler() const { return m_sampler; } static HRESULT NormalizeDesc( D3D11_SAMPLER_DESC* pDesc); private: D3D11Device* const m_device; D3D11_SAMPLER_DESC m_desc; Rc m_sampler; static bool ValidateAddressMode( D3D11_TEXTURE_ADDRESS_MODE Mode); static bool ValidateComparisonFunc( D3D11_COMPARISON_FUNC Comparison); }; }