Permit a Null Shader in case of a bad host_ptr.
This commit is contained in:
		
				
					committed by
					
						 FernandoS27
						FernandoS27
					
				
			
			
				
	
			
			
			
						parent
						
							47f2405ab1
						
					
				
				
					commit
					021cd56bc9
				
			| @@ -57,3 +57,21 @@ __declspec(noinline, noreturn) | |||||||
|  |  | ||||||
| #define UNIMPLEMENTED_IF(cond) ASSERT_MSG(!(cond), "Unimplemented code!") | #define UNIMPLEMENTED_IF(cond) ASSERT_MSG(!(cond), "Unimplemented code!") | ||||||
| #define UNIMPLEMENTED_IF_MSG(cond, ...) ASSERT_MSG(!(cond), __VA_ARGS__) | #define UNIMPLEMENTED_IF_MSG(cond, ...) ASSERT_MSG(!(cond), __VA_ARGS__) | ||||||
|  |  | ||||||
|  | // If the assert is ignored, execute _b_ | ||||||
|  | #define ASSERT_OR_EXECUTE(_a_, _b_)                                                                \ | ||||||
|  |     do {                                                                                           \ | ||||||
|  |         ASSERT(_a_);                                                                               \ | ||||||
|  |         if (!(_a_)) {                                                                              \ | ||||||
|  |             _b_                                                                                    \ | ||||||
|  |         }                                                                                          \ | ||||||
|  |     } while (0) | ||||||
|  |  | ||||||
|  | // If the assert is ignored, execute _b_ | ||||||
|  | #define ASSERT_OR_EXECUTE_MSG(_a_, _b_, ...)                                                       \ | ||||||
|  |     do {                                                                                           \ | ||||||
|  |         ASSERT_MSG(_a_, __VA_ARGS__);                                                              \ | ||||||
|  |         if (!(_a_)) {                                                                              \ | ||||||
|  |             _b_                                                                                    \ | ||||||
|  |         }                                                                                          \ | ||||||
|  |     } while (0) | ||||||
|   | |||||||
| @@ -41,6 +41,10 @@ GPUVAddr GetShaderAddress(Maxwell::ShaderProgram program) { | |||||||
| /// Gets the shader program code from memory for the specified address | /// Gets the shader program code from memory for the specified address | ||||||
| ProgramCode GetShaderCode(const u8* host_ptr) { | ProgramCode GetShaderCode(const u8* host_ptr) { | ||||||
|     ProgramCode program_code(VideoCommon::Shader::MAX_PROGRAM_LENGTH); |     ProgramCode program_code(VideoCommon::Shader::MAX_PROGRAM_LENGTH); | ||||||
|  |     ASSERT_OR_EXECUTE(host_ptr != nullptr, { | ||||||
|  |         std::fill(program_code.begin(), program_code.end(), 0); | ||||||
|  |         return program_code; | ||||||
|  |     }); | ||||||
|     std::memcpy(program_code.data(), host_ptr, program_code.size() * sizeof(u64)); |     std::memcpy(program_code.data(), host_ptr, program_code.size() * sizeof(u64)); | ||||||
|     return program_code; |     return program_code; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user