| 
									
										
										
										
											2021-01-09 03:30:07 -03:00
										 |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-17 00:59:28 -03:00
										 |  |  | #include <array>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-09 03:30:07 -03:00
										 |  |  | #include "common/common_types.h"
 | 
					
						
							| 
									
										
										
										
											2021-03-19 19:28:31 -03:00
										 |  |  | #include "shader_recompiler/program_header.h"
 | 
					
						
							| 
									
										
										
										
											2021-03-26 18:45:38 -03:00
										 |  |  | #include "shader_recompiler/shader_info.h"
 | 
					
						
							| 
									
										
										
										
											2021-03-22 21:03:20 -03:00
										 |  |  | #include "shader_recompiler/stage.h"
 | 
					
						
							| 
									
										
										
										
											2021-01-09 03:30:07 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace Shader { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Environment { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     virtual ~Environment() = default; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-17 00:59:28 -03:00
										 |  |  |     [[nodiscard]] virtual u64 ReadInstruction(u32 address) = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-27 22:30:24 +01:00
										 |  |  |     [[nodiscard]] virtual u32 ReadCbufValue(u32 cbuf_index, u32 cbuf_offset) = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-26 18:45:38 -03:00
										 |  |  |     [[nodiscard]] virtual TextureType ReadTextureType(u32 cbuf_index, u32 cbuf_offset) = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-22 21:03:20 -03:00
										 |  |  |     [[nodiscard]] virtual u32 TextureBoundBuffer() const = 0; | 
					
						
							| 
									
										
										
										
											2021-03-08 18:31:53 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-28 19:53:34 -03:00
										 |  |  |     [[nodiscard]] virtual u32 LocalMemorySize() const = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [[nodiscard]] virtual u32 SharedMemorySize() const = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-22 21:03:20 -03:00
										 |  |  |     [[nodiscard]] virtual std::array<u32, 3> WorkgroupSize() const = 0; | 
					
						
							| 
									
										
										
										
											2021-03-19 19:28:31 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  |     [[nodiscard]] const ProgramHeader& SPH() const noexcept { | 
					
						
							|  |  |  |         return sph; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [[nodiscard]] Stage ShaderStage() const noexcept { | 
					
						
							|  |  |  |         return stage; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-22 21:03:20 -03:00
										 |  |  |     [[nodiscard]] u32 StartAddress() const noexcept { | 
					
						
							|  |  |  |         return start_address; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-19 19:28:31 -03:00
										 |  |  | protected: | 
					
						
							|  |  |  |     ProgramHeader sph{}; | 
					
						
							|  |  |  |     Stage stage{}; | 
					
						
							| 
									
										
										
										
											2021-03-22 21:03:20 -03:00
										 |  |  |     u32 start_address{}; | 
					
						
							| 
									
										
										
										
											2021-01-09 03:30:07 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } // namespace Shader
 |