mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-11-04 04:34:07 +01:00 
			
		
		
		
	Merge pull request #9749 from ameerj/pr9559-partial-revert
buffer_base: Partially revert changes from #9559
This commit is contained in:
		
						commit
						7bad3a7e5e
					
				@ -538,7 +538,7 @@ TEST_CASE("BufferBase: Cached write downloads") {
 | 
			
		||||
    int num = 0;
 | 
			
		||||
    buffer.ForEachDownloadRangeAndClear(c, WORD, [&](u64 offset, u64 size) { ++num; });
 | 
			
		||||
    buffer.ForEachUploadRange(c, WORD, [&](u64 offset, u64 size) { ++num; });
 | 
			
		||||
    REQUIRE(num == 1);
 | 
			
		||||
    REQUIRE(num == 0);
 | 
			
		||||
    REQUIRE(!buffer.IsRegionCpuModified(c + PAGE, PAGE));
 | 
			
		||||
    REQUIRE(!buffer.IsRegionGpuModified(c + PAGE, PAGE));
 | 
			
		||||
    buffer.FlushCachedWrites();
 | 
			
		||||
 | 
			
		||||
@ -430,7 +430,7 @@ private:
 | 
			
		||||
        if (query_begin >= SizeBytes() || size < 0) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        [[maybe_unused]] u64* const untracked_words = Array<Type::Untracked>();
 | 
			
		||||
        u64* const untracked_words = Array<Type::Untracked>();
 | 
			
		||||
        u64* const state_words = Array<type>();
 | 
			
		||||
        const u64 query_end = query_begin + std::min(static_cast<u64>(size), SizeBytes());
 | 
			
		||||
        u64* const words_begin = state_words + query_begin / BYTES_PER_WORD;
 | 
			
		||||
@ -483,7 +483,7 @@ private:
 | 
			
		||||
                NotifyRasterizer<true>(word_index, current_bits, ~u64{0});
 | 
			
		||||
            }
 | 
			
		||||
            // Exclude CPU modified pages when visiting GPU pages
 | 
			
		||||
            const u64 word = current_word;
 | 
			
		||||
            const u64 word = current_word & ~(type == Type::GPU ? untracked_words[word_index] : 0);
 | 
			
		||||
            u64 page = page_begin;
 | 
			
		||||
            page_begin = 0;
 | 
			
		||||
 | 
			
		||||
@ -531,7 +531,7 @@ private:
 | 
			
		||||
    [[nodiscard]] bool IsRegionModified(u64 offset, u64 size) const noexcept {
 | 
			
		||||
        static_assert(type != Type::Untracked);
 | 
			
		||||
 | 
			
		||||
        [[maybe_unused]] const u64* const untracked_words = Array<Type::Untracked>();
 | 
			
		||||
        const u64* const untracked_words = Array<Type::Untracked>();
 | 
			
		||||
        const u64* const state_words = Array<type>();
 | 
			
		||||
        const u64 num_query_words = size / BYTES_PER_WORD + 1;
 | 
			
		||||
        const u64 word_begin = offset / BYTES_PER_WORD;
 | 
			
		||||
@ -539,7 +539,8 @@ private:
 | 
			
		||||
        const u64 page_limit = Common::DivCeil(offset + size, BYTES_PER_PAGE);
 | 
			
		||||
        u64 page_index = (offset / BYTES_PER_PAGE) % PAGES_PER_WORD;
 | 
			
		||||
        for (u64 word_index = word_begin; word_index < word_end; ++word_index, page_index = 0) {
 | 
			
		||||
            const u64 word = state_words[word_index];
 | 
			
		||||
            const u64 off_word = type == Type::GPU ? untracked_words[word_index] : 0;
 | 
			
		||||
            const u64 word = state_words[word_index] & ~off_word;
 | 
			
		||||
            if (word == 0) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
@ -563,7 +564,7 @@ private:
 | 
			
		||||
    [[nodiscard]] std::pair<u64, u64> ModifiedRegion(u64 offset, u64 size) const noexcept {
 | 
			
		||||
        static_assert(type != Type::Untracked);
 | 
			
		||||
 | 
			
		||||
        [[maybe_unused]] const u64* const untracked_words = Array<Type::Untracked>();
 | 
			
		||||
        const u64* const untracked_words = Array<Type::Untracked>();
 | 
			
		||||
        const u64* const state_words = Array<type>();
 | 
			
		||||
        const u64 num_query_words = size / BYTES_PER_WORD + 1;
 | 
			
		||||
        const u64 word_begin = offset / BYTES_PER_WORD;
 | 
			
		||||
@ -573,7 +574,8 @@ private:
 | 
			
		||||
        u64 begin = std::numeric_limits<u64>::max();
 | 
			
		||||
        u64 end = 0;
 | 
			
		||||
        for (u64 word_index = word_begin; word_index < word_end; ++word_index) {
 | 
			
		||||
            const u64 word = state_words[word_index];
 | 
			
		||||
            const u64 off_word = type == Type::GPU ? untracked_words[word_index] : 0;
 | 
			
		||||
            const u64 word = state_words[word_index] & ~off_word;
 | 
			
		||||
            if (word == 0) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user