117b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// Copyright 2016 The SwiftShader Authors. All Rights Reserved. 217b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// 317b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// Licensed under the Apache License, Version 2.0 (the "License"); 417b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// you may not use this file except in compliance with the License. 517b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// You may obtain a copy of the License at 617b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// 717b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// http://www.apache.org/licenses/LICENSE-2.0 817b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// 917b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// Unless required by applicable law or agreed to in writing, software 1017b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// distributed under the License is distributed on an "AS IS" BASIS, 1117b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1217b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// See the License for the specific language governing permissions and 1317b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens// limitations under the License. 1417b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 1517b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens#ifndef D3D8_Direct3DVolumeTexture8_hpp 1617b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens#define D3D8_Direct3DVolumeTexture8_hpp 1717b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 1817b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens#include "Direct3DBaseTexture8.hpp" 1917b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 2017b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens#include "Config.hpp" 2117b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 2217b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens#include <d3d8.h> 2317b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 2417b29fd4f21db9966607fc502b075dc6840e223bNicolas Capensnamespace D3D8 2517b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens{ 2617b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens class Direct3DVolume8; 2717b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 2817b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens class Direct3DVolumeTexture8 : public IDirect3DVolumeTexture8, public Direct3DBaseTexture8 2917b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens { 3017b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens public: 3117b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens Direct3DVolumeTexture8(Direct3DDevice8 *device, unsigned int width, unsigned int height, unsigned int depth, unsigned int levels, unsigned long usage, D3DFORMAT format, D3DPOOL pool); 3217b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 333b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens ~Direct3DVolumeTexture8() override; 3417b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 3517b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens // IUnknown methods 363b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens long __stdcall QueryInterface(const IID &iid, void **object) override; 373b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens unsigned long __stdcall AddRef() override; 383b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens unsigned long __stdcall Release() override; 3917b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 4017b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens // IDirect3DResource8 methods 413b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens long __stdcall FreePrivateData(const GUID &guid) override; 423b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens long __stdcall GetPrivateData(const GUID &guid, void *data, unsigned long *size) override; 433b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens void __stdcall PreLoad() override; 443b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens long __stdcall SetPrivateData(const GUID &guid, const void *data, unsigned long size, unsigned long flags) override; 453b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens long __stdcall GetDevice(IDirect3DDevice8 **device) override; 463b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens unsigned long __stdcall SetPriority(unsigned long newPriority) override; 473b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens unsigned long __stdcall GetPriority() override; 483b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens D3DRESOURCETYPE __stdcall GetType() override; 4917b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 5017b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens // IDirect3DBaseTexture methods 513b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens unsigned long __stdcall GetLevelCount() override; 523b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens unsigned long __stdcall GetLOD() override; 533b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens unsigned long __stdcall SetLOD(unsigned long newLOD) override; 5417b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 5517b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens // IDirect3DVolumeTexture8 methods 563b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens long __stdcall GetLevelDesc(unsigned int level, D3DVOLUME_DESC *description) override; 573b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens long __stdcall GetVolumeLevel(unsigned int level, IDirect3DVolume8 **volume) override; 583b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens long __stdcall LockBox(unsigned int level, D3DLOCKED_BOX *lockedVolume, const D3DBOX *box, unsigned long flags) override; 593b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens long __stdcall UnlockBox(unsigned int level) override; 603b9e1eab3544111f3f1ff8fc652d6548acb608baNicolas Capens long __stdcall AddDirtyBox(const D3DBOX *dirtyBox) override; 6117b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 6217b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens // Internal methods 6317b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens Direct3DVolume8 *getInternalVolumeLevel(unsigned int level); 6417b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 6517b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens private: 6617b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens // Creation parameters 6717b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens const unsigned int width; 6817b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens const unsigned int height; 6917b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens const unsigned int depth; 7017b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens const D3DFORMAT format; 7117b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens const D3DPOOL pool; 7217b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 7317b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens Direct3DVolume8 *volumeLevel[sw::MIPMAP_LEVELS]; 7417b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens }; 7517b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens} 7617b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens 7717b29fd4f21db9966607fc502b075dc6840e223bNicolas Capens#endif // D3D8_Direct3DVolumeTexture8_hpp 78