1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 #include "gpu/command_buffer/service/shader_translator_cache.h"
8 #include "testing/gtest/include/gtest/gtest.h"
13 TEST(ShaderTranslatorCacheTest
, InitParamComparable
) {
14 // Tests that ShaderTranslatorInitParams padding or padding of its
15 // members does not affect the object equality or ordering.
17 ShBuiltInResources a_resources
;
18 memset(&a_resources
, 88, sizeof(a_resources
));
19 ShInitBuiltInResources(&a_resources
);
21 ShBuiltInResources b_resources
;
22 memset(&b_resources
, 77, sizeof(b_resources
));
23 ShInitBuiltInResources(&b_resources
);
25 EXPECT_TRUE(memcmp(&a_resources
, &b_resources
, sizeof(a_resources
)) == 0);
27 ShCompileOptions driver_bug_workarounds
= SH_VALIDATE
;
29 char a_storage
[sizeof(ShaderTranslatorCache::ShaderTranslatorInitParams
)];
30 memset(a_storage
, 55, sizeof(a_storage
));
31 ShaderTranslatorCache::ShaderTranslatorInitParams
* a
=
32 new (&a_storage
) ShaderTranslatorCache::ShaderTranslatorInitParams(
33 GL_VERTEX_SHADER
, SH_GLES2_SPEC
, a_resources
, SH_ESSL_OUTPUT
,
34 driver_bug_workarounds
);
36 ShaderTranslatorCache::ShaderTranslatorInitParams
b(
37 GL_VERTEX_SHADER
, SH_GLES2_SPEC
, b_resources
, SH_ESSL_OUTPUT
,
38 driver_bug_workarounds
);
41 EXPECT_FALSE(*a
< b
|| b
< *a
);
43 memset(a_storage
, 55, sizeof(a_storage
));
44 a
= new (&a_storage
) ShaderTranslatorCache::ShaderTranslatorInitParams(b
);
47 EXPECT_FALSE(*a
< b
|| b
< *a
);