Squash State dirty bits to below 64.
This will dramatically speed up performance on 64-bit systems due to
the efficiency of angle::BitSet64. Improves performance of the GL
back-end on benchmarks quite a bit.
Squashes the Pack and Unpack states together. Also moves the current
value dirty bits to a single dirty bit, with a separate set for each
attribute. Also squashes a multisample dirty bit.
Also fixes an incorrect dirty bit in StateManagerGL.
We may want to implement a semi-fast version of BitSet64 for 32-bit
systems if we find performance is not satisfactory.
BUG=angleproject:2188
Change-Id: I4616782bf75413252ede3e3ac752b9ccdb9aab49
Reviewed-on: https://chromium-review.googlesource.com/722423
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/ContextVk.cpp b/src/libANGLE/renderer/vulkan/ContextVk.cpp
index e93309f..20dde85 100644
--- a/src/libANGLE/renderer/vulkan/ContextVk.cpp
+++ b/src/libANGLE/renderer/vulkan/ContextVk.cpp
@@ -572,9 +572,8 @@
case gl::State::DIRTY_BIT_SAMPLE_MASK_ENABLED:
WARN() << "DIRTY_BIT_SAMPLE_MASK_ENABLED unimplemented";
break;
- case gl::State::DIRTY_BIT_SAMPLE_MASK_WORD_0:
- case gl::State::DIRTY_BIT_SAMPLE_MASK_WORD_0 + 1:
- WARN() << "DIRTY_BIT_SAMPLE_MASK_WORD unimplemented";
+ case gl::State::DIRTY_BIT_SAMPLE_MASK:
+ WARN() << "DIRTY_BIT_SAMPLE_MASK unimplemented";
break;
case gl::State::DIRTY_BIT_DEPTH_TEST_ENABLED:
WARN() << "DIRTY_BIT_DEPTH_TEST_ENABLED unimplemented";
@@ -638,44 +637,11 @@
case gl::State::DIRTY_BIT_CLEAR_STENCIL:
WARN() << "DIRTY_BIT_CLEAR_STENCIL unimplemented";
break;
- case gl::State::DIRTY_BIT_UNPACK_ALIGNMENT:
- WARN() << "DIRTY_BIT_UNPACK_ALIGNMENT unimplemented";
+ case gl::State::DIRTY_BIT_UNPACK_STATE:
+ WARN() << "DIRTY_BIT_UNPACK_STATE unimplemented";
break;
- case gl::State::DIRTY_BIT_UNPACK_ROW_LENGTH:
- WARN() << "DIRTY_BIT_UNPACK_ROW_LENGTH unimplemented";
- break;
- case gl::State::DIRTY_BIT_UNPACK_IMAGE_HEIGHT:
- WARN() << "DIRTY_BIT_UNPACK_IMAGE_HEIGHT unimplemented";
- break;
- case gl::State::DIRTY_BIT_UNPACK_SKIP_IMAGES:
- WARN() << "DIRTY_BIT_UNPACK_SKIP_IMAGES unimplemented";
- break;
- case gl::State::DIRTY_BIT_UNPACK_SKIP_ROWS:
- WARN() << "DIRTY_BIT_UNPACK_SKIP_ROWS unimplemented";
- break;
- case gl::State::DIRTY_BIT_UNPACK_SKIP_PIXELS:
- WARN() << "DIRTY_BIT_UNPACK_SKIP_PIXELS unimplemented";
- break;
- case gl::State::DIRTY_BIT_UNPACK_BUFFER_BINDING:
- WARN() << "DIRTY_BIT_UNPACK_BUFFER_BINDING unimplemented";
- break;
- case gl::State::DIRTY_BIT_PACK_ALIGNMENT:
- WARN() << "DIRTY_BIT_PACK_ALIGNMENT unimplemented";
- break;
- case gl::State::DIRTY_BIT_PACK_REVERSE_ROW_ORDER:
- WARN() << "DIRTY_BIT_PACK_REVERSE_ROW_ORDER unimplemented";
- break;
- case gl::State::DIRTY_BIT_PACK_ROW_LENGTH:
- WARN() << "DIRTY_BIT_PACK_ROW_LENGTH unimplemented";
- break;
- case gl::State::DIRTY_BIT_PACK_SKIP_ROWS:
- WARN() << "DIRTY_BIT_PACK_SKIP_ROWS unimplemented";
- break;
- case gl::State::DIRTY_BIT_PACK_SKIP_PIXELS:
- WARN() << "DIRTY_BIT_PACK_SKIP_PIXELS unimplemented";
- break;
- case gl::State::DIRTY_BIT_PACK_BUFFER_BINDING:
- WARN() << "DIRTY_BIT_PACK_BUFFER_BINDING unimplemented";
+ case gl::State::DIRTY_BIT_PACK_STATE:
+ WARN() << "DIRTY_BIT_PACK_STATE unimplemented";
break;
case gl::State::DIRTY_BIT_DITHER_ENABLED:
WARN() << "DIRTY_BIT_DITHER_ENABLED unimplemented";
@@ -745,16 +711,11 @@
case gl::State::DIRTY_BIT_FRAMEBUFFER_SRGB:
WARN() << "DIRTY_BIT_FRAMEBUFFER_SRGB unimplemented";
break;
+ case gl::State::DIRTY_BIT_CURRENT_VALUES:
+ WARN() << "DIRTY_BIT_CURRENT_VALUES unimplemented";
+ break;
default:
- if (dirtyBit >= gl::State::DIRTY_BIT_CURRENT_VALUE_0 &&
- dirtyBit < gl::State::DIRTY_BIT_CURRENT_VALUE_MAX)
- {
- WARN() << "DIRTY_BIT_CURRENT_VALUE unimplemented";
- }
- else
- {
- UNREACHABLE();
- }
+ UNREACHABLE();
break;
}
}