From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/d3d10/tests/effect.c | 100 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+)
diff --git a/dlls/d3d10/tests/effect.c b/dlls/d3d10/tests/effect.c index 9748ca5e7a1..22379289d8a 100644 --- a/dlls/d3d10/tests/effect.c +++ b/dlls/d3d10/tests/effect.c @@ -82,6 +82,22 @@ static HRESULT create_effect_pool(DWORD *data, ID3D10Device *device, ID3D10Effec return D3D10CreateEffectPoolFromMemory(data, data[6], 0, device, pool); }
+static UINT effect_get_d3d_buffer_size(ID3D10Effect *effect, const char *name) +{ + ID3D10EffectConstantBuffer *var; + D3D10_BUFFER_DESC desc; + ID3D10Buffer *buffer; + HRESULT hr; + + var = effect->lpVtbl->GetConstantBufferByName(effect, name); + hr = var->lpVtbl->GetConstantBuffer(var, &buffer); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ID3D10Buffer_GetDesc(buffer, &desc); + ID3D10Buffer_Release(buffer); + + return desc.ByteWidth; +} + /* * test_effect_constant_buffer_type */ @@ -129,6 +145,7 @@ static void test_effect_constant_buffer_type(void) HRESULT hr; LPCSTR string; unsigned int i; + UINT size;
if (!(device = create_device())) { @@ -156,6 +173,11 @@ static void test_effect_constant_buffer_type(void) desc.SharedGlobalVariables); ok(desc.Techniques == 0, "Unexpected techniques count %u.\n", desc.Techniques);
+ size = effect_get_d3d_buffer_size(effect, "cb"); + ok(size == 16, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb2"); + ok(size == 48, "Unexpected size %u.\n", size); + constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 0);
hr = constantbuffer->lpVtbl->GetDesc(constantbuffer, &var_desc); @@ -356,6 +378,7 @@ static void test_effect_variable_type(void) HRESULT hr; LPCSTR string; unsigned int i; + UINT size;
if (!(device = create_device())) { @@ -377,6 +400,9 @@ static void test_effect_variable_type(void) desc.SharedGlobalVariables); ok(desc.Techniques == 0, "Unexpected techniques count %u.\n", desc.Techniques);
+ size = effect_get_d3d_buffer_size(effect, "cb"); + ok(size == 32, "Unexpected size %u.\n", size); + constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 0); type = constantbuffer->lpVtbl->GetType(constantbuffer); hr = type->lpVtbl->GetDesc(type, &type_desc); @@ -601,6 +627,7 @@ static void test_effect_variable_member(void) ID3D10Device *device; ULONG refcount; HRESULT hr; + UINT size;
if (!(device = create_device())) { @@ -624,6 +651,9 @@ static void test_effect_variable_member(void) effect_desc.SharedGlobalVariables); ok(effect_desc.Techniques == 0, "Unexpected techniques count %u.\n", effect_desc.Techniques);
+ size = effect_get_d3d_buffer_size(effect, "cb"); + ok(size == 32, "Unexpected size %u.\n", size); + constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 0); hr = constantbuffer->lpVtbl->GetDesc(constantbuffer, &desc); ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); @@ -822,6 +852,7 @@ static void test_effect_variable_element(void) ID3D10Device *device; ULONG refcount; HRESULT hr; + UINT size;
if (!(device = create_device())) { @@ -845,6 +876,9 @@ static void test_effect_variable_element(void) effect_desc.SharedGlobalVariables); ok(effect_desc.Techniques == 0, "Unexpected techniques count %u.\n", effect_desc.Techniques);
+ size = effect_get_d3d_buffer_size(effect, "cb"); + ok(size == 96, "Unexpected size %u.\n", size); + constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 0); hr = constantbuffer->lpVtbl->GetDesc(constantbuffer, &desc); ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); @@ -1500,6 +1534,7 @@ static void test_effect_variable_type_class(void) HRESULT hr; unsigned int variable_nr = 0; const char *str1, *str2; + UINT size;
if (!(device = create_device())) { @@ -1523,6 +1558,9 @@ static void test_effect_variable_type_class(void) effect_desc.SharedGlobalVariables); ok(effect_desc.Techniques == 0, "Unexpected techniques count %u.\n", effect_desc.Techniques);
+ size = effect_get_d3d_buffer_size(effect, "cb"); + ok(size == 96, "Unexpected size %u.\n", size); + /* get the null_constantbuffer, so that we can compare it to variables->GetParentConstantBuffer */ null_buffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 1);
@@ -2569,6 +2607,7 @@ static void test_effect_constant_buffer_stride(void) ULONG refcount; HRESULT hr; unsigned int i; + UINT size;
static const struct { unsigned int m; /* members */ @@ -2615,6 +2654,37 @@ static void test_effect_constant_buffer_stride(void) effect_desc.SharedGlobalVariables); ok(effect_desc.Techniques == 0, "Unexpected techniques count %u.\n", effect_desc.Techniques);
+ size = effect_get_d3d_buffer_size(effect, "cb1"); + ok(size == 16, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb2"); + ok(size == 16, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb3"); + ok(size == 32, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb4"); + ok(size == 48, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb5"); + ok(size == 32, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb6"); + ok(size == 32, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb7"); + ok(size == 48, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb8"); + ok(size == 48, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb9"); + ok(size == 16, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb10"); + ok(size == 48, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb11"); + ok(size == 32, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb12"); + ok(size == 48, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb13"); + ok(size == 32, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb14"); + ok(size == 32, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb15"); + ok(size == 32, "Unexpected size %u.\n", size); + for (i=0; i<ARRAY_SIZE(tv_ecbs); i++) { constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, i); @@ -4002,6 +4072,7 @@ static void test_effect_get_variable_by(void) ID3D10Device *device; ULONG refcount; HRESULT hr; + UINT size;
if (!(device = create_device())) { @@ -4025,6 +4096,11 @@ static void test_effect_get_variable_by(void) effect_desc.SharedGlobalVariables); ok(effect_desc.Techniques == 0, "Unexpected techniques count %u.\n", effect_desc.Techniques);
+ size = effect_get_d3d_buffer_size(effect, "cb"); + ok(size == 16, "Unexpected size %u.\n", size); + size = effect_get_d3d_buffer_size(effect, "cb2"); + ok(size == 16, "Unexpected size %u.\n", size); + /* get the null variable */ null_variable = effect->lpVtbl->GetVariableByIndex(effect, 0xffffffff);
@@ -5275,6 +5351,7 @@ static void test_effect_scalar_variable(void) unsigned int i; ULONG refcount; HRESULT hr; + UINT size; float f;
if (!(device = create_device())) @@ -5299,6 +5376,9 @@ static void test_effect_scalar_variable(void) effect_desc.SharedGlobalVariables); ok(effect_desc.Techniques == 0, "Unexpected techniques count %u.\n", effect_desc.Techniques);
+ size = effect_get_d3d_buffer_size(effect, "cb"); + ok(size == 144, "Unexpected size %u.\n", size); + /* Check each different scalar type, make sure the variable returned is * valid, set it to a value, and make sure what we get back is the same * as what we set it to. */ @@ -5719,6 +5799,7 @@ static void test_effect_vector_variable(void) unsigned int i; ULONG refcount; HRESULT hr; + UINT size;
if (!(device = create_device())) { @@ -5742,6 +5823,9 @@ static void test_effect_vector_variable(void) effect_desc.SharedGlobalVariables); ok(effect_desc.Techniques == 0, "Unexpected techniques count %u.\n", effect_desc.Techniques);
+ size = effect_get_d3d_buffer_size(effect, "cb"); + ok(size == 192, "Unexpected size %u.\n", size); + for (i = 0; i < ARRAY_SIZE(tests); ++i) { const D3D10_EFFECT_TYPE_DESC *t = &tests[i].type; @@ -6078,6 +6162,7 @@ static void test_effect_matrix_variable(void) unsigned int i; ULONG refcount; HRESULT hr; + UINT size;
if (!(device = create_device())) { @@ -6101,6 +6186,9 @@ static void test_effect_matrix_variable(void) effect_desc.SharedGlobalVariables); ok(effect_desc.Techniques == 0, "Unexpected techniques count %u.\n", effect_desc.Techniques);
+ size = effect_get_d3d_buffer_size(effect, "cb"); + ok(size == 320, "Unexpected size %u.\n", size); + for (i = 0; i < ARRAY_SIZE(tests); ++i) { const D3D10_EFFECT_TYPE_DESC *t = &tests[i].type; @@ -7545,6 +7633,7 @@ static void test_effect_default_variable_value(void) int int_v[2], int_s; ULONG refcount; HRESULT hr; + UINT size; BOOL ret;
if (!(device = create_device())) @@ -7556,6 +7645,9 @@ static void test_effect_default_variable_value(void) hr = create_effect(fx_test_default_variable_value, 0, device, NULL, &effect); ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ size = effect_get_d3d_buffer_size(effect, "$Globals"); + ok(size == 224, "Unexpected size %u.\n", size); + memset(float_v, 0, sizeof(float_v)); v = effect->lpVtbl->GetVariableByName(effect, "f4"); vector = v->lpVtbl->AsVector(v); @@ -7886,6 +7978,7 @@ static void test_effect_dynamic_numeric_field(void) unsigned int idx; ULONG refcount; HRESULT hr; + UINT size;
if (!(device = create_device())) { @@ -7896,6 +7989,9 @@ static void test_effect_dynamic_numeric_field(void) hr = create_effect(fx_test_effect_dynamic_numeric_field, 0, device, NULL, &effect); ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ size = effect_get_d3d_buffer_size(effect, "$Globals"); + ok(size == 144, "Unexpected size %u.\n", size); + tech = effect->lpVtbl->GetTechniqueByIndex(effect, 0); ok(tech->lpVtbl->IsValid(tech), "Expected valid technique.\n");
@@ -8997,6 +9093,7 @@ static void test_effect_value_expression(void) unsigned int idx; ULONG refcount; HRESULT hr; + UINT size; int i[4];
if (!(device = create_device())) @@ -9008,6 +9105,9 @@ static void test_effect_value_expression(void) hr = create_effect(fx_test_value_expression, 0, device, NULL, &effect); ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ size = effect_get_d3d_buffer_size(effect, "$Globals"); + ok(size == 64, "Unexpected size %u.\n", size); + t = effect->lpVtbl->GetTechniqueByName(effect, "tech"); ok(t->lpVtbl->IsValid(t), "Expected valid technique.\n");