blob: ad50e547a3c6ddcb1941c61abd4bae0f07b32213 [file] [log] [blame]
daniel@transgaming.comd5d10192012-11-28 20:57:55 +00001//
2// Copyright (c) 2012 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/ShaderExecutable9.h"
11
12#include "common/debug.h"
13
14namespace rx
15{
16
daniel@transgaming.com7b18d0c2012-11-28 21:04:10 +000017ShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DPixelShader9 *executable, gl::D3DConstantTable *constantTable)
18 : ShaderExecutable(function, length)
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000019{
20 mPixelExecutable = executable;
21 mVertexExecutable = NULL;
22 mConstantTable = constantTable;
23}
24
daniel@transgaming.com7b18d0c2012-11-28 21:04:10 +000025ShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DVertexShader9 *executable, gl::D3DConstantTable *constantTable)
26 : ShaderExecutable(function, length)
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000027{
28 mVertexExecutable = executable;
29 mPixelExecutable = NULL;
30 mConstantTable = constantTable;
31}
32
33ShaderExecutable9::~ShaderExecutable9()
34{
35 if (mVertexExecutable)
36 {
37 mVertexExecutable->Release();
38 }
39 if (mPixelExecutable)
40 {
41 mPixelExecutable->Release();
42 }
43
44 delete mConstantTable;
45}
46
47ShaderExecutable9 *ShaderExecutable9::makeShaderExecutable9(ShaderExecutable *executable)
48{
49 ASSERT(dynamic_cast<ShaderExecutable9*>(executable) != NULL);
50 return static_cast<ShaderExecutable9*>(executable);
51}
52
53IDirect3DVertexShader9 *ShaderExecutable9::getVertexShader()
54{
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000055 return mVertexExecutable;
56}
57
58IDirect3DPixelShader9 *ShaderExecutable9::getPixelShader()
59{
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000060 return mPixelExecutable;
61}
62
63gl::D3DConstantTable *ShaderExecutable9::getConstantTable()
64{
65 return mConstantTable;
66}
67
68}