blob: 115ed0823c7f38811b0afcb030b58250fe587d2a [file] [log] [blame]
shannon.woods@transgaming.combdf2d802013-02-28 23:16:20 +00001#include "precompiled.h"
daniel@transgaming.comd5d10192012-11-28 20:57:55 +00002//
shannon.woods@transgaming.com358e88d2013-01-25 21:53:11 +00003// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
daniel@transgaming.comd5d10192012-11-28 20:57:55 +00004// Use of this source code is governed by a BSD-style license that can be
5// found in the LICENSE file.
6//
7
8// ShaderExecutable9.cpp: Implements a D3D9-specific class to contain shader
9// executable implementation details.
10
Geoff Langd47e0fc2013-08-29 11:40:43 -040011#include "libGLESv2/renderer/d3d9/ShaderExecutable9.h"
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000012
13#include "common/debug.h"
14
15namespace rx
16{
17
daniel@transgaming.com2275f912012-12-20 21:13:22 +000018ShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DPixelShader9 *executable)
daniel@transgaming.com7b18d0c2012-11-28 21:04:10 +000019 : ShaderExecutable(function, length)
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000020{
21 mPixelExecutable = executable;
22 mVertexExecutable = NULL;
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000023}
24
daniel@transgaming.com2275f912012-12-20 21:13:22 +000025ShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DVertexShader9 *executable)
daniel@transgaming.com7b18d0c2012-11-28 21:04:10 +000026 : ShaderExecutable(function, length)
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000027{
28 mVertexExecutable = executable;
29 mPixelExecutable = NULL;
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000030}
31
32ShaderExecutable9::~ShaderExecutable9()
33{
Geoff Langea228632013-07-30 15:17:12 -040034 SafeRelease(mVertexExecutable);
35 SafeRelease(mPixelExecutable);
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000036}
37
38ShaderExecutable9 *ShaderExecutable9::makeShaderExecutable9(ShaderExecutable *executable)
39{
apatrick@chromium.org8b400b12013-01-30 21:53:40 +000040 ASSERT(HAS_DYNAMIC_TYPE(ShaderExecutable9*, executable));
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000041 return static_cast<ShaderExecutable9*>(executable);
42}
43
shannon.woods@transgaming.com358e88d2013-01-25 21:53:11 +000044IDirect3DVertexShader9 *ShaderExecutable9::getVertexShader() const
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000045{
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000046 return mVertexExecutable;
47}
48
shannon.woods@transgaming.com358e88d2013-01-25 21:53:11 +000049IDirect3DPixelShader9 *ShaderExecutable9::getPixelShader() const
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000050{
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000051 return mPixelExecutable;
52}
53
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000054}