-
Notifications
You must be signed in to change notification settings - Fork 229
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Christophe Riccio
committed
Jul 14, 2012
1 parent
24cc2df
commit c90a258
Showing
30 changed files
with
59,796 additions
and
0 deletions.
There are no files selected for viewing
56 changes: 56 additions & 0 deletions
56
Chapter 09 Mixing Graphics and Compute with Multiple GPUs/License.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
NVIDIA Corporation | ||
INTEROPERABILITY SAMPLE END USER LICENSE AGREEMENT (“Agreement”) | ||
|
||
BY DOWNLOADING THE SOFTWARE AND OTHER AVAILABLE MATERIALS, YOU ("DEVELOPER" or “LICENSEE”) AGREE TO BE BOUND BY THE FOLLOWING TERMS AND CONDITIONS OF THIS AGREEMENT. IF DEVELOPER DOES NOT AGREE TO THE TERMS AND CONDITION OF THIS AGREEMENT, THEN DO NOT DOWNLOAD THE SOFTWARE AND MATERIALS. | ||
|
||
The materials available for download to Developers may include software in both sample source ("Source Code") and object code ("Object Code") versions, documentation ("Documentation"), certain art work ("Art Assets") and other materials (collectively, these materials referred to herein as "Materials"). Except as expressly indicated herein, all terms and conditions of this Agreement apply to all of the Materials. | ||
|
||
Except as expressly set forth herein, NVIDIA owns all of the Materials and makes them available to Developer only under the terms and conditions set forth in this Agreement. | ||
|
||
License: Subject to the terms of this Agreement, NVIDIA hereby grants to Developer a royalty-free, non-exclusive license to possess and to use the Materials. Developer may install and use multiple copies of the Materials on a shared computer or concurrently on different computers, and make multiple back-up copies of the Materials, solely for Licensee’s use within Licensee’s Enterprise. “Enterprise” shall mean individual use by Licensee or any legal entity (such as a corporation or university) and the subsidiaries it owns by more than 50 percent. The following terms apply to the specified type of Material: | ||
|
||
Source Code: Developer shall have the right to modify and create derivative works with the Source Code. Developer shall own any derivative works ("Derivatives") it creates to the Source Code, provided that Developer uses the Materials in accordance with the terms and conditions of this Agreement. Developer may distribute the Derivatives, provided that all NVIDIA copyright notices and trademarks are propagated and used properly and the Derivatives include the following statement: "This software contains source code provided by NVIDIA Corporation." | ||
|
||
Object Code: Developer agrees not to disassemble, decompile or reverse engineer the Object Code versions of any of the Materials. Developer acknowledges that certain of the Materials provided in Object Code version may contain third party components that may be subject to restrictions, and expressly agrees not to attempt to modify or distribute such Materials without first receiving consent from NVIDIA. | ||
|
||
Art Assets: Developer shall have the right to modify and create Derivatives of the Art Assets, but may not distribute any of the Art Assets or Derivatives created therefrom without NVIDIA’s prior written consent. | ||
|
||
No Other License: No rights or licenses with respect to any proprietary information or patent, copyright, trade secret or other intellectual property right owned or controlled by NVIDIA are granted by NVIDIA to Developer under this Agreement, expressly or by implication, except as expressly provided in this Agreement. Licensee represents and warrants that any and all third party licensing and/or royalty payment obligations in connection with Licensee’s use of the H.264 video codecs are solely the responsibility of Licensee. | ||
|
||
Intellectual Property Ownership: All rights, title, interest and copyrights in and to the Materials (including but not limited to all images, photographs, animations, video, audio, music, text, and other information incorporated into the Materials), are owned by NVIDIA, or its suppliers. The Materials are protected by copyright laws and international treaty provisions. Accordingly, Developer is required to treat the Materials like any other copyrighted material, except as otherwise allowed pursuant to this Agreement. | ||
|
||
Term of Agreement: This Agreement is effective until (i) automatically terminated if Developer fails to comply with any of the terms and conditions of this Agreement; or (ii) terminated by NVIDIA. NVIDIA may terminate this Agreement (and with it, all of Developer’s right to the Materials) immediately upon written notice (which may include email) to Developer, with or without cause. For the sake of clarity, Licensee may continue to use the Derivatives created pursuant to this Agreement, after the termination or expiration of this Agreement | ||
|
||
Defensive Suspension: If Developer commences or participates in any legal proceeding against NVIDIA, then NVIDIA may, in its sole discretion, suspend or terminate all license grants and any other rights provided under this Agreement during the pendency of such legal proceedings. | ||
|
||
|
||
No Support: NVIDIA has no obligation to support or to continue providing or updating any of the Materials. | ||
|
||
No Warranty: THE SOFTWARE AND ANY OTHER MATERIALS PROVIDED BY NVIDIA TO DEVELOPER HEREUNDER ARE PROVIDED "AS IS." NVIDIA DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | ||
|
||
Limitation of Liability: NVIDIA SHALL NOT BE LIABLE TO DEVELOPER, DEVELOPER’S CUSTOMERS, OR ANY OTHER PERSON OR ENTITY CLAIMING THROUGH OR UNDER DEVELOPER FOR ANY LOSS OF PROFITS, INCOME, SAVINGS, OR ANY OTHER CONSEQUENTIAL, INCIDENTAL, SPECIAL, PUNITIVE, DIRECT OR INDIRECT DAMAGES (WHETHER IN AN ACTION IN CONTRACT, TORT OR BASED ON A WARRANTY), EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF THE ESSENTIAL PURPOSE OF ANY LIMITED REMEDY. IN NO EVENT SHALL NVIDIA’S AGGREGATE LIABILITY TO DEVELOPER OR ANY OTHER PERSON OR ENTITY CLAIMING THROUGH OR UNDER DEVELOPER EXCEED THE AMOUNT OF MONEY ACTUALLY PAID BY DEVELOPER TO NVIDIA FOR THE SOFTWARE OR ANY OTHER MATERIALS. | ||
|
||
Applicable Law: This Agreement shall be deemed to have been made in, and shall be construed pursuant to, the laws of the State of Delaware. The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed. | ||
|
||
Feedback. Notwithstanding any Non-Disclosure Agreement executed by and between the parties, the parties agree that in the event Licensee or NVIDIA provides Feedback (as defined below) to the other party on how to design, implement, or improve the SOFTWARE or Licensee’s product(s) for use with the SOFTWARE, the following terms and conditions apply the Feedback: | ||
|
||
a. Exchange of Feedback. Both parties agree that neither party has an obligation to give the other party any suggestions, comments or other feedback, whether verbally or in written or source code form, relating to (i) the SOFTWARE; (ii) Licensee’s products; (iii) Licensee’s use of the SOFTWARE; or (iv) optimization/interoperability of Licensee’s product with the SOFTWARE (collectively defined as “Feedback”). In the event either party provides Feedback to the other party, the party receiving the Feedback may use any Feedback that the other party voluntarily provides to improve the (i) SOFTWARE or other related NVIDIA technologies, respectively for the benefit of NVIDIA; or (ii) Licensee’s product or other related Licensee technologies, respectively for the benefit of Licensee. Accordingly, if either party provides Feedback to the other party, both parties agree that the other party and its respective licensees may freely use, reproduce, license, distribute, and otherwise commercialize the Feedback in the (i) SOFTWARE or other related technologies; or (ii) Licensee’s products or other related technologies, respectively, without the payment of any royalties or fees. | ||
|
||
b. Residual Rights. Licensee agrees that NVIDIA shall be free to use any general knowledge, skills and experience, (including, but not limited to, ideas, concepts, know-how, or techniques) (“Residuals”), contained in the (i) Feedback provided by Licensee to NVIDIA; (ii) Licensee’s products shared or disclosed to NVIDIA in connection with the Feedback; or (c) Licensee’s confidential information voluntarily provided to NVIDIA in connection with the Feedback, which are retained in the memories of NVIDIA’s employees, agents, or contractors who have had access to such Residuals. Subject to the terms and conditions of this Agreement, NVIDIA’s employees, agents, or contractors shall not be prevented from using Residuals as part of such employee’s, agent’s or contractor’s general knowledge, skills, experience, talent, and/or expertise. NVIDIA shall not have any obligation to limit or restrict the assignment of such employees, agents or contractors or to pay royalties for any work resulting from the use of Residuals. | ||
|
||
c. Disclaimer of Warranty. FEEDBACK FROM EITHER PARTY IS PROVIDED FOR THE OTHER PARTY’S USE “AS IS” AND BOTH PARTIES DISCLAIM ALL WARRANTIES, EXPRESS, IMPLIED AND STATUTORY INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR INFRINGEMENT. BOTH PARTIES DO NOT REPRESENT OR WARRANT THAT THE FEEDBACK WILL MEET THE OTHER PARTY’S REQUIREMENTS OR THAT THE OPERATION OR IMPLEMENTATION OF THE FEEDBACK WILL BE UNINTERRUPTED OR ERROR-FREE. | ||
|
||
d. No Liability for Consequential Damages. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL EITHER PARTY OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE FEEDBACK, EVEN IF THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. | ||
|
||
Freedom of Action. Developer agrees that this Agreement is nonexclusive and NVIDIA may currently or in the future be developing software, other technology or confidential information internally, or receiving confidential information from other parties that maybe similar to the Feedback and Developer’s confidential information (as provided in subsection 2 above), which may be provided to NVIDIA in connection with Feedback by Developer. Accordingly, Developer agrees that nothing in this Agreement will be construed as a representation or inference that NVIDIA will not develop, design, manufacture, acquire, market products, or have products developed, designed, manufactured, acquired, or marketed for NVIDIA, that compete with the Developer’s products or confidential information. | ||
|
||
RESTRICTED RIGHTS NOTICE: Materials has been developed entirely at private expense and is commercial computer software provided with RESTRICTED RIGHTS. Use, duplication or disclosure by the U.S. Government or a U.S. Government subcontractor is subject to the restrictions set forth in the license agreement under which Materials was obtained pursuant to DFARS 227.7202-3(a) or as set forth in subparagraphs (c)(1) and (2) of the Commercial Computer Software - Restricted Rights clause at FAR 52.227-19, as applicable. Contractor/manufacturer is NVIDIA, 2701 San Tomas Expressway, Santa Clara, CA 95050. | ||
|
||
Miscellaneous: If any provision of this Agreement is inconsistent with, or cannot be fully enforced under, the law, such provision will be construed as limited to the extent necessary to be consistent with and fully enforceable under the law. This Agreement is the final, complete and exclusive agreement between the parties relating to the subject matter hereof, and supersedes all prior or contemporaneous understandings and agreements relating to such subject matter, whether oral or written. This Agreement may only be modified in writing signed by an authorized officer of NVIDIA. Developer agrees that it will not ship, transfer or export the Materials into any country, or use the Materials in any manner, prohibited by the United States Bureau of Industry and Security or any export laws, restrictions or regulations. | ||
|
||
|
||
|
||
|
||
3 | ||
|
||
|
58 changes: 58 additions & 0 deletions
58
Chapter 09 Mixing Graphics and Compute with Multiple GPUs/Readme.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
Interoperability Sample | ||
----------------------------------------------------------------------------------------- | ||
This sample is designed to test CUDA-OpenGL interoperability performance in a system. | ||
- Requires CUDA version 5.0 or greater. | ||
- It creates a GLUT window and tests mapping/unmapping of a texture of a given size | ||
using GL/CUDA interoperability on every CUDA device available in the system. | ||
- CUDA is the producer and OpenGL is the consumer in this benchmark. This model is implemented by having | ||
the interoperability mapping flags set to cudaGraphicsMapFlagsWriteDiscard. | ||
- The application computes "speedup" for each CUDA/GL context configuration possible in a given system. | ||
The speedup is the frame rate compared to pure workload(no interoperability) framerate | ||
- The application also auto-adjusts the time it spends in GL work and CUDA kernels | ||
so that it simulates a specified workload (default is 60 FPS). This is because | ||
the number of iterations is sensitive to compiler changes, clocks, GPU type, etc. | ||
----------------------------------------------------------------------------------------- | ||
Usage | ||
----------------------------------------------------------------------------------------- | ||
|
||
> Interop.exe [-width #] [-height #] [-targetMsecCUDA #] [-targetMsecGL #] | ||
|
||
-Program parameters: | ||
-width # - width of the interop texture. Default 1920 | ||
-height # - height of the interop texture. Default 1080 | ||
-targetMsecCUDA # - The time to spend doing CUDA work in msec(can be fractions). Default 17msec | ||
-targetMsecGL # - The time to spend doing OpenGL work in msec(can be fractions). Default 17msec | ||
|
||
-Sample Output: | ||
|
||
OpenGL is using CUDA device(s): 1 | ||
Tuning knobs to make GL section take ~10.000 msec... 4.88 with 65536 iterations...9.87 with 134158 iterations... | ||
|
||
CUDA is using device 0 | ||
CUDA and OpenGL contexts reside on different devices | ||
Benchmarking using a 4096x4096 texture: | ||
Tuning knobs to make CUDA section take ~10.00 msec... 4.80 with 65536 iterations...9.99 with 136435 iterations... | ||
Benchmarking CUDA part of the program | ||
9.999358 msec/frame | ||
Benchmarking GL part of the program | ||
10.004820 msec/frame | ||
Benchmarking CUDA and GL combined, using interop | ||
34.617699 msec/frame | ||
Speedup(versus pure workload): 0.58x | ||
Overhead: 24.61 msec/frame | ||
Overhead: 71.10% | ||
|
||
CUDA is using device 1 | ||
CUDA and OpenGL contexts share the same device | ||
Benchmarking using a 4096x4096 texture: | ||
Tuning knobs to make CUDA section take ~10.00 msec... 10.01 with 136524 iterations...10.01 with 136412 iterations... | ||
Benchmarking CUDA part of the program | ||
10.001414 msec/frame | ||
Benchmarking GL part of the program | ||
10.007576 msec/frame | ||
Benchmarking CUDA and GL combined, using interop | ||
21.230110 msec/frame | ||
Speedup(versus pure workload): 0.94x | ||
Overhead: 1.22 msec/frame | ||
Overhead: 5.75% | ||
|
129 changes: 129 additions & 0 deletions
129
Chapter 09 Mixing Graphics and Compute with Multiple GPUs/linux/Makefile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
################################################################################ | ||
# | ||
# Copyright 1993-2012 NVIDIA Corporation. All rights reserved. | ||
# | ||
# NOTICE TO USER: | ||
# | ||
# This source code is subject to NVIDIA ownership rights under U.S. and | ||
# international Copyright laws. | ||
# | ||
# NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE | ||
# CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR | ||
# IMPLIED WARRANTY OF ANY KIND. NVIDIA DISCLAIMS ALL WARRANTIES WITH | ||
# REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF | ||
# MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE. | ||
# IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, | ||
# OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS | ||
# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE | ||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE | ||
# OR PERFORMANCE OF THIS SOURCE CODE. | ||
# | ||
# U.S. Government End Users. This source code is a "commercial item" as | ||
# that term is defined at 48 C.F.R. 2.101 (OCT 1995), consisting of | ||
# "commercial computer software" and "commercial computer software | ||
# documentation" as such terms are used in 48 C.F.R. 12.212 (SEPT 1995) | ||
# and is provided to the U.S. Government only as a commercial end item. | ||
# Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through | ||
# 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the | ||
# source code with only those rights set forth herein. | ||
# | ||
################################################################################ | ||
# | ||
# Makefile project only supported on Mac OSX and Linux Platforms) | ||
# | ||
################################################################################ | ||
|
||
# OS Name (Linux or Darwin) | ||
OSUPPER = $(shell uname -s 2>/dev/null | tr [:lower:] [:upper:]) | ||
OSLOWER = $(shell uname -s 2>/dev/null | tr [:upper:] [:lower:]) | ||
|
||
# Flags to detect 32-bit or 64-bit OS platform | ||
OS_SIZE = $(shell uname -m | sed -e "s/i.86/32/" -e "s/x86_64/64/") | ||
OS_ARCH = $(shell uname -m | sed -e "s/i386/i686/") | ||
|
||
# Flags to detect either a Linux system (linux) or Mac OSX (darwin) | ||
DARWIN = $(strip $(findstring DARWIN, $(OSUPPER))) | ||
|
||
# Location of the CUDA Toolkit binaries and libraries | ||
CUDA_PATH ?= /usr/local/cuda | ||
CUDA_INC_PATH ?= $(CUDA_PATH)/include | ||
CUDA_LIB_PATH ?= $(CUDA_PATH)/lib | ||
CUDA_BIN_PATH ?= $(CUDA_PATH)/bin | ||
|
||
# Common binaries | ||
NVCC ?= $(CUDA_BIN_PATH)/nvcc | ||
GCC ?= g++ | ||
|
||
# Extra user flags | ||
EXTRA_NVCCFLAGS ?= | ||
EXTRA_LDFLAGS ?= | ||
|
||
# CUDA code generation flags | ||
GENCODE_SM10 := -gencode arch=compute_10,code=sm_10 | ||
GENCODE_SM20 := -gencode arch=compute_20,code=sm_20 | ||
GENCODE_SM30 := -gencode arch=compute_30,code=sm_30 | ||
GENCODE_FLAGS := $(GENCODE_SM10) $(GENCODE_SM20) $(GENCODE_SM30) | ||
|
||
# OS-specific build flags | ||
ifneq ($(DARWIN),) | ||
LDFLAGS := -Xlinker -rpath $(CUDA_LIB_PATH) -L$(CUDA_LIB_PATH) -lcudart | ||
CCFLAGS := -arch $(OS_ARCH) | ||
else | ||
ifeq ($(OS_SIZE),32) | ||
LDFLAGS := -L$(CUDA_LIB_PATH) -lcudart | ||
CCFLAGS := -m32 | ||
else | ||
LDFLAGS := -L$(CUDA_LIB_PATH)64 -lcudart | ||
CCFLAGS := -m64 | ||
endif | ||
endif | ||
|
||
# OS-architecture specific flags | ||
ifeq ($(OS_SIZE),32) | ||
NVCCFLAGS := -m32 | ||
else | ||
NVCCFLAGS := -m64 | ||
endif | ||
|
||
# OpenGL specific libraries | ||
ifneq ($(DARWIN),) | ||
# Mac OSX specific libraries and paths to include | ||
LIBPATH_OPENGL := -L./lib/darwin -L/System/Library/Frameworks/OpenGL.framework/Libraries -framework GLUT -lGL -lGLU ./lib/darwin/libGLEW.a | ||
else | ||
# Linux specific libraries and paths to include | ||
LIBPATH_OPENGL := -L./lib/linux/$(OS_ARCH) -L/usr/X11R6/lib -lGL -lGLU -lX11 -lXi -lXmu -lglut ./lib/linux/$(OS_ARCH)/libGLEW.a | ||
endif | ||
|
||
# Debug build flags | ||
ifeq ($(dbg),1) | ||
CCFLAGS += -g | ||
NVCCFLAGS += -g -G | ||
TARGET := debug | ||
else | ||
TARGET := release | ||
endif | ||
|
||
|
||
# Common includes and paths for CUDA | ||
INCLUDES := -I$(CUDA_INC_PATH) -I. -I.. -I./inc | ||
LDFLAGS += $(LIBPATH_OPENGL) | ||
|
||
# Target rules | ||
all: build | ||
|
||
build: interop | ||
|
||
interop.o: ../main.cu | ||
$(NVCC) $(NVCCFLAGS) $(EXTRA_NVCCFLAGS) $(GENCODE_FLAGS) $(INCLUDES) -o $@ -c $< | ||
|
||
interop: interop.o | ||
$(GCC) $(CCFLAGS) -o $@ $+ $(LDFLAGS) $(EXTRA_LDFLAGS) | ||
mkdir -p ../bin/$(OSLOWER)/$(TARGET) | ||
cp $@ ../bin/$(OSLOWER)/$(TARGET) | ||
|
||
run: build | ||
./interop | ||
|
||
clean: | ||
rm -f interop.o interop.bin interop | ||
|
22 changes: 22 additions & 0 deletions
22
Chapter 09 Mixing Graphics and Compute with Multiple GPUs/linux/inc/GL/freeglut.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#ifndef __FREEGLUT_H__ | ||
#define __FREEGLUT_H__ | ||
|
||
/* | ||
* freeglut.h | ||
* | ||
* The freeglut library include file | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
* PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | ||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
*/ | ||
|
||
#include "freeglut_std.h" | ||
#include "freeglut_ext.h" | ||
|
||
/*** END OF FILE ***/ | ||
|
||
#endif /* __FREEGLUT_H__ */ |
Oops, something went wrong.