• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // 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 sw_PixelShader_hpp
16 #define sw_PixelShader_hpp
17 
18 #include "Shader.hpp"
19 #include "Device/Config.hpp"
20 
21 namespace sw
22 {
23 	class PixelShader : public Shader
24 	{
25 	public:
26 		explicit PixelShader(const PixelShader *ps = 0);
27 		explicit PixelShader(const unsigned long *token);
28 
29 		virtual ~PixelShader();
30 
31 		static int validate(const unsigned long *const token);   // Returns number of instructions if valid
32 		bool depthOverride() const;
33 		bool containsKill() const;
34 		bool containsCentroid() const;
35 		bool usesDiffuse(int component) const;
36 		bool usesSpecular(int component) const;
37 		bool usesTexture(int coordinate, int component) const;
38 
39 		void setInput(int inputIdx, int nbComponents, const Semantic& semantic);
40 		const Semantic& getInput(int inputIdx, int component) const;
41 
declareVPos()42 		void declareVPos() { vPosDeclared = true; }
declareVFace()43 		void declareVFace() { vFaceDeclared = true; }
isVPosDeclared() const44 		bool isVPosDeclared() const { return vPosDeclared; }
isVFaceDeclared() const45 		bool isVFaceDeclared() const { return vFaceDeclared; }
46 
47 	private:
48 		void analyze();
49 		void analyzeZOverride();
50 		void analyzeKill();
51 		void analyzeInterpolants();
52 
53 		Semantic input[MAX_FRAGMENT_INPUTS][4];
54 
55 		bool vPosDeclared;
56 		bool vFaceDeclared;
57 		bool zOverride;
58 		bool kill;
59 		bool centroid;
60 	};
61 }
62 
63 #endif   // sw_PixelShader_hpp
64