Support virtualized contexts and transform feedback in Renderer11.
Track buffer offets in the transform feedback object and dirty them when a
buffer is bound. This fixes problems when a buffer is rebound at the same
offset and maintains tracking between context switches.
BUG=angleproject:1447
BUG=angleproject:1298
Change-Id: I2f890e3ad5edacab47f624a95a502615c86cc0c8
Reviewed-on: https://chromium-review.googlesource.com/360910
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/TransformFeedback_unittest.cpp b/src/libANGLE/TransformFeedback_unittest.cpp
index d173686..07a0959 100644
--- a/src/libANGLE/TransformFeedback_unittest.cpp
+++ b/src/libANGLE/TransformFeedback_unittest.cpp
@@ -14,12 +14,18 @@
#include "tests/angle_unittests_utils.h"
using ::testing::_;
+using ::testing::get;
using ::testing::Return;
using ::testing::SetArgumentPointee;
namespace
{
+ACTION(CreateMockTransformFeedbackImpl)
+{
+ return new rx::MockTransformFeedbackImpl(arg0);
+}
+
class TransformFeedbackTest : public testing::Test
{
protected:
@@ -27,17 +33,18 @@
void SetUp() override
{
- mImpl = new rx::MockTransformFeedbackImpl;
- EXPECT_CALL(mMockFactory, createTransformFeedback())
- .WillOnce(Return(mImpl))
+ EXPECT_CALL(mMockFactory, createTransformFeedback(_))
+ .WillOnce(CreateMockTransformFeedbackImpl())
.RetiresOnSaturation();
// Set a reasonable number of tf attributes
mCaps.maxTransformFeedbackSeparateAttributes = 8;
- EXPECT_CALL(*mImpl, destructor());
mFeedback = new gl::TransformFeedback(&mMockFactory, 1, mCaps);
mFeedback->addRef();
+
+ mImpl = rx::GetImplAs<rx::MockTransformFeedbackImpl>(mFeedback);
+ EXPECT_CALL(*mImpl, destructor());
}
void TearDown() override