blob: fb0fbd75653f25e28bb5a2460e8b829147d19dab [file] [log] [blame]
Nicolas Capens17b29fd2016-09-15 09:32:16 -04001// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef D3D8_Direct3DVolumeTexture8_hpp
16#define D3D8_Direct3DVolumeTexture8_hpp
17
18#include "Direct3DBaseTexture8.hpp"
19
20#include "Config.hpp"
21
22#include <d3d8.h>
23
24namespace D3D8
25{
26 class Direct3DVolume8;
27
28 class Direct3DVolumeTexture8 : public IDirect3DVolumeTexture8, public Direct3DBaseTexture8
29 {
30 public:
31 Direct3DVolumeTexture8(Direct3DDevice8 *device, unsigned int width, unsigned int height, unsigned int depth, unsigned int levels, unsigned long usage, D3DFORMAT format, D3DPOOL pool);
32
33 virtual ~Direct3DVolumeTexture8();
34
35 // IUnknown methods
36 long __stdcall QueryInterface(const IID &iid, void **object);
37 unsigned long __stdcall AddRef();
38 unsigned long __stdcall Release();
39
40 // IDirect3DResource8 methods
41 long __stdcall FreePrivateData(const GUID &guid);
42 long __stdcall GetPrivateData(const GUID &guid, void *data, unsigned long *size);
43 void __stdcall PreLoad();
44 long __stdcall SetPrivateData(const GUID &guid, const void *data, unsigned long size, unsigned long flags);
45 long __stdcall GetDevice(IDirect3DDevice8 **device);
46 unsigned long __stdcall SetPriority(unsigned long newPriority);
47 unsigned long __stdcall GetPriority();
48 D3DRESOURCETYPE __stdcall GetType();
49
50 // IDirect3DBaseTexture methods
51 unsigned long __stdcall GetLevelCount();
52 unsigned long __stdcall GetLOD();
53 unsigned long __stdcall SetLOD(unsigned long newLOD);
54
55 // IDirect3DVolumeTexture8 methods
56 long __stdcall GetLevelDesc(unsigned int level, D3DVOLUME_DESC *description);
57 long __stdcall GetVolumeLevel(unsigned int level, IDirect3DVolume8 **volume);
58 long __stdcall LockBox(unsigned int level, D3DLOCKED_BOX *lockedVolume, const D3DBOX *box, unsigned long flags);
59 long __stdcall UnlockBox(unsigned int level);
60 long __stdcall AddDirtyBox(const D3DBOX *dirtyBox);
61
62 // Internal methods
63 Direct3DVolume8 *getInternalVolumeLevel(unsigned int level);
64
65 private:
66 // Creation parameters
67 const unsigned int width;
68 const unsigned int height;
69 const unsigned int depth;
70 const D3DFORMAT format;
71 const D3DPOOL pool;
72
73 Direct3DVolume8 *volumeLevel[sw::MIPMAP_LEVELS];
74 };
75}
76
77#endif // D3D8_Direct3DVolumeTexture8_hpp