1//
2// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
7// ShaderExecutable9.cpp: Implements a D3D9-specific class to contain shader
8// executable implementation details.
9
10#include "libGLESv2/renderer/d3d/d3d9/ShaderExecutable9.h"
11
12#include "common/debug.h"
13
14namespace rx
15{
16
17ShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DPixelShader9 *executable)
18    : ShaderExecutable(function, length)
19{
20    mPixelExecutable = executable;
21    mVertexExecutable = NULL;
22}
23
24ShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DVertexShader9 *executable)
25    : ShaderExecutable(function, length)
26{
27    mVertexExecutable = executable;
28    mPixelExecutable = NULL;
29}
30
31ShaderExecutable9::~ShaderExecutable9()
32{
33    SafeRelease(mVertexExecutable);
34    SafeRelease(mPixelExecutable);
35}
36
37ShaderExecutable9 *ShaderExecutable9::makeShaderExecutable9(ShaderExecutable *executable)
38{
39    ASSERT(HAS_DYNAMIC_TYPE(ShaderExecutable9*, executable));
40    return static_cast<ShaderExecutable9*>(executable);
41}
42
43IDirect3DVertexShader9 *ShaderExecutable9::getVertexShader() const
44{
45    return mVertexExecutable;
46}
47
48IDirect3DPixelShader9 *ShaderExecutable9::getPixelShader() const
49{
50    return mPixelExecutable;
51}
52
53}