Add Direct3D 8 implementation. Bug swiftshader:5 Change-Id: I6aec7237f2db6222702e828a2b9dae1a1a6ac9af Reviewed-on: https://swiftshader-review.googlesource.com/7191 Tested-by: Nicolas Capens <capn@google.com> Reviewed-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/D3D8/Direct3DVertexDeclaration8.cpp b/src/D3D8/Direct3DVertexDeclaration8.cpp new file mode 100644 index 0000000..247af44 --- /dev/null +++ b/src/D3D8/Direct3DVertexDeclaration8.cpp
@@ -0,0 +1,71 @@ +// Copyright 2016 The SwiftShader Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "Direct3DVertexDeclaration8.hpp" + +#include "Debug.hpp" + +#include <d3d8types.h> + +namespace D3D8 +{ + Direct3DVertexDeclaration8::Direct3DVertexDeclaration8(Direct3DDevice8 *device, const unsigned long *vertexElement) : device(device) + { + int size = sizeof(unsigned long); + const unsigned long *element = vertexElement; + + while(*element != 0xFFFFFFFF) + { + size += sizeof(unsigned long); + element++; + } + + declaration = new unsigned long[size / sizeof(unsigned long)]; + memcpy(declaration, vertexElement, size); + } + + Direct3DVertexDeclaration8::~Direct3DVertexDeclaration8() + { + delete[] declaration; + declaration = 0; + } + + long Direct3DVertexDeclaration8::QueryInterface(const IID &iid, void **object) + { + TRACE(""); + + ASSERT(false); // Internal object + + return NOINTERFACE(iid); + } + + unsigned long Direct3DVertexDeclaration8::AddRef() + { + TRACE(""); + + return Unknown::AddRef(); + } + + unsigned long Direct3DVertexDeclaration8::Release() + { + TRACE(""); + + return Unknown::Release(); + } + + const unsigned long *Direct3DVertexDeclaration8::getDeclaration() const + { + return declaration; + } +} \ No newline at end of file