|
|
@@ -483,6 +483,18 @@ private:
|
|
|
const auto host_ptr{memory_manager->GetPointer(gpu_addr)};
|
|
|
const auto cache_addr{ToCacheAddr(host_ptr)};
|
|
|
|
|
|
+ // Step 0: guarantee a valid surface
|
|
|
+ if (!cache_addr) {
|
|
|
+ // Return a null surface if it's invalid
|
|
|
+ SurfaceParams new_params = params;
|
|
|
+ new_params.width = 1;
|
|
|
+ new_params.height = 1;
|
|
|
+ new_params.depth = 1;
|
|
|
+ new_params.block_height = 0;
|
|
|
+ new_params.block_depth = 0;
|
|
|
+ return InitializeSurface(gpu_addr, new_params, false);
|
|
|
+ }
|
|
|
+
|
|
|
// Step 1
|
|
|
// Check Level 1 Cache for a fast structural match. If candidate surface
|
|
|
// matches at certain level we are pretty much done.
|