radeonsi: Fix sampler views for depth textures.
[mesa.git] / src / gallium / drivers / radeon / AMDIL7XXDevice.h
1 //==-- AMDIL7XXDevice.h - Define 7XX Device Device for AMDIL ---*- C++ -*--===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //==-----------------------------------------------------------------------===//
9 //
10 // Interface for the subtarget data classes.
11 //
12 //===----------------------------------------------------------------------===//
13 // This file will define the interface that each generation needs to
14 // implement in order to correctly answer queries on the capabilities of the
15 // specific hardware.
16 //===----------------------------------------------------------------------===//
17 #ifndef _AMDIL7XXDEVICEIMPL_H_
18 #define _AMDIL7XXDEVICEIMPL_H_
19 #include "AMDILDevice.h"
20
21 namespace llvm {
22 class AMDGPUSubtarget;
23
24 //===----------------------------------------------------------------------===//
25 // 7XX generation of devices and their respective sub classes
26 //===----------------------------------------------------------------------===//
27
28 // The AMDGPU7XXDevice class represents the generic 7XX device. All 7XX
29 // devices are derived from this class. The AMDGPU7XX device will only
30 // support the minimal features that are required to be considered OpenCL 1.0
31 // compliant and nothing more.
32 class AMDGPU7XXDevice : public AMDGPUDevice {
33 public:
34 AMDGPU7XXDevice(AMDGPUSubtarget *ST);
35 virtual ~AMDGPU7XXDevice();
36 virtual size_t getMaxLDSSize() const;
37 virtual size_t getWavefrontSize() const;
38 virtual uint32_t getGeneration() const;
39 virtual uint32_t getResourceID(uint32_t DeviceID) const;
40 virtual uint32_t getMaxNumUAVs() const;
41
42 protected:
43 virtual void setCaps();
44 }; // AMDGPU7XXDevice
45
46 // The AMDGPU770Device class represents the RV770 chip and it's
47 // derivative cards. The difference between this device and the base
48 // class is this device device adds support for double precision
49 // and has a larger wavefront size.
50 class AMDGPU770Device : public AMDGPU7XXDevice {
51 public:
52 AMDGPU770Device(AMDGPUSubtarget *ST);
53 virtual ~AMDGPU770Device();
54 virtual size_t getWavefrontSize() const;
55 private:
56 virtual void setCaps();
57 }; // AMDGPU770Device
58
59 // The AMDGPU710Device class derives from the 7XX base class, but this
60 // class is a smaller derivative, so we need to overload some of the
61 // functions in order to correctly specify this information.
62 class AMDGPU710Device : public AMDGPU7XXDevice {
63 public:
64 AMDGPU710Device(AMDGPUSubtarget *ST);
65 virtual ~AMDGPU710Device();
66 virtual size_t getWavefrontSize() const;
67 }; // AMDGPU710Device
68
69 } // namespace llvm
70 #endif // _AMDILDEVICEIMPL_H_