From 55447498815f3a500658662d2bd77a9355225e4f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Mon, 16 Apr 2012 20:10:19 +0100 Subject: [PATCH 01/16] Update reference for GLboolean update. --- apps/egl/gl/tri_glsl.ref.txt | 6 +- apps/egl/gles2/tri_glsl.ref.txt | 6 +- apps/gl/default.ref.json | 394 ++++++++++++++++---------------- apps/gl/default_db.ref.json | 2 +- apps/gl/default_sb.ref.json | 2 +- 5 files changed, 205 insertions(+), 205 deletions(-) diff --git a/apps/egl/gl/tri_glsl.ref.txt b/apps/egl/gl/tri_glsl.ref.txt index c82f8f3..cdd77fc 100644 --- a/apps/egl/gl/tri_glsl.ref.txt +++ b/apps/egl/gl/tri_glsl.ref.txt @@ -37,12 +37,12 @@ glGetUniformLocation(program = 3, name = "modelviewProjection") = 0 glViewport(x = 0, y = 0, width = 300, height = 300) glViewport(x = 0, y = 0, width = 300, height = 300) glViewport(x = 0, y = 0, width = 300, height = 300) -glUniformMatrix4fv(location = 0, count = 1, transpose = false, value = {0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1}) +glUniformMatrix4fv(location = 0, count = 1, transpose = GL_FALSE, value = {0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1}) glClear(mask = GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT) glEnableVertexAttribArray(index = 0) glEnableVertexAttribArray(index = 1) -glVertexAttribPointer(index = 0, size = 2, type = GL_FLOAT, normalized = false, stride = 0, pointer = blob(24)) -glVertexAttribPointer(index = 1, size = 3, type = GL_FLOAT, normalized = false, stride = 0, pointer = blob(36)) +glVertexAttribPointer(index = 0, size = 2, type = GL_FLOAT, normalized = GL_FALSE, stride = 0, pointer = blob(24)) +glVertexAttribPointer(index = 1, size = 3, type = GL_FLOAT, normalized = GL_FALSE, stride = 0, pointer = blob(36)) glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3) glDisableVertexAttribArray(index = 0) glDisableVertexAttribArray(index = 1) diff --git a/apps/egl/gles2/tri_glsl.ref.txt b/apps/egl/gles2/tri_glsl.ref.txt index 4894610..f73ccd0 100644 --- a/apps/egl/gles2/tri_glsl.ref.txt +++ b/apps/egl/gles2/tri_glsl.ref.txt @@ -37,12 +37,12 @@ glGetUniformLocation(program = 3, name = "modelviewProjection") = 0 glViewport(x = 0, y = 0, width = 300, height = 300) glViewport(x = 0, y = 0, width = 300, height = 300) glViewport(x = 0, y = 0, width = 300, height = 300) -glUniformMatrix4fv(location = 0, count = 1, transpose = false, value = {0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1}) +glUniformMatrix4fv(location = 0, count = 1, transpose = GL_FALSE, value = {0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1}) glClear(mask = GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT) glEnableVertexAttribArray(index = 0) glEnableVertexAttribArray(index = 1) -glVertexAttribPointer(index = 0, size = 2, type = GL_FLOAT, normalized = false, stride = 0, pointer = blob(24)) -glVertexAttribPointer(index = 1, size = 3, type = GL_FLOAT, normalized = false, stride = 0, pointer = blob(36)) +glVertexAttribPointer(index = 0, size = 2, type = GL_FLOAT, normalized = GL_FALSE, stride = 0, pointer = blob(24)) +glVertexAttribPointer(index = 1, size = 3, type = GL_FLOAT, normalized = GL_FALSE, stride = 0, pointer = blob(36)) glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3) glDisableVertexAttribArray(index = 0) glDisableVertexAttribArray(index = 1) diff --git a/apps/gl/default.ref.json b/apps/gl/default.ref.json index df155f5..2b533d5 100644 --- a/apps/gl/default.ref.json +++ b/apps/gl/default.ref.json @@ -10,32 +10,32 @@ "GL_CURRENT_RASTER_POSITION": [0, 0, 0, 1], "GL_CURRENT_RASTER_POSITION_VALID": 1, "GL_CURRENT_RASTER_DISTANCE": 0, - "GL_POINT_SMOOTH": false, + "GL_POINT_SMOOTH": "GL_FALSE", "GL_POINT_SIZE": 1, - "GL_LINE_SMOOTH": false, + "GL_LINE_SMOOTH": "GL_FALSE", "GL_LINE_WIDTH": 1, - "GL_LINE_STIPPLE": false, + "GL_LINE_STIPPLE": "GL_FALSE", "GL_LINE_STIPPLE_PATTERN": 65535, "GL_LINE_STIPPLE_REPEAT": 1, "GL_LIST_MODE": "GL_ZERO", "GL_LIST_BASE": 0, "GL_LIST_INDEX": 0, "GL_POLYGON_MODE": ["GL_FILL", "GL_FILL"], - "GL_POLYGON_SMOOTH": false, - "GL_POLYGON_STIPPLE": false, - "GL_EDGE_FLAG": true, - "GL_CULL_FACE": false, + "GL_POLYGON_SMOOTH": "GL_FALSE", + "GL_POLYGON_STIPPLE": "GL_FALSE", + "GL_EDGE_FLAG": "GL_TRUE", + "GL_CULL_FACE": "GL_FALSE", "GL_CULL_FACE_MODE": "GL_BACK", "GL_FRONT_FACE": "GL_CCW", - "GL_LIGHTING": false, - "GL_LIGHT_MODEL_LOCAL_VIEWER": false, - "GL_LIGHT_MODEL_TWO_SIDE": false, + "GL_LIGHTING": "GL_FALSE", + "GL_LIGHT_MODEL_LOCAL_VIEWER": "GL_FALSE", + "GL_LIGHT_MODEL_TWO_SIDE": "GL_FALSE", "GL_LIGHT_MODEL_AMBIENT": [0.200000003, 0.200000003, 0.200000003, 1], "GL_SHADE_MODEL": "GL_SMOOTH", "GL_COLOR_MATERIAL_FACE": "GL_FRONT_AND_BACK", "GL_COLOR_MATERIAL_PARAMETER": "GL_AMBIENT_AND_DIFFUSE", - "GL_COLOR_MATERIAL": false, - "GL_FOG": false, + "GL_COLOR_MATERIAL": "GL_FALSE", + "GL_FOG": "GL_FALSE", "GL_FOG_INDEX": 0, "GL_FOG_DENSITY": 1, "GL_FOG_START": 0, @@ -43,12 +43,12 @@ "GL_FOG_MODE": "GL_EXP", "GL_FOG_COLOR": [0, 0, 0, 0], "GL_DEPTH_RANGE": [0, 1], - "GL_DEPTH_TEST": false, - "GL_DEPTH_WRITEMASK": true, + "GL_DEPTH_TEST": "GL_FALSE", + "GL_DEPTH_WRITEMASK": "GL_TRUE", "GL_DEPTH_CLEAR_VALUE": 1, "GL_DEPTH_FUNC": "GL_LESS", "GL_ACCUM_CLEAR_VALUE": [0, 0, 0, 0], - "GL_STENCIL_TEST": false, + "GL_STENCIL_TEST": "GL_FALSE", "GL_STENCIL_CLEAR_VALUE": 0, "GL_STENCIL_FUNC": "GL_ALWAYS", "GL_STENCIL_VALUE_MASK": -1, @@ -58,7 +58,7 @@ "GL_STENCIL_REF": 0, "GL_STENCIL_WRITEMASK": -1, "GL_MATRIX_MODE": "GL_MODELVIEW", - "GL_NORMALIZE": false, + "GL_NORMALIZE": "GL_FALSE", // GL_VIEWPORT depends on the drawable "GL_MODELVIEW_STACK_DEPTH": 1, "GL_PROJECTION_STACK_DEPTH": 1, @@ -68,38 +68,38 @@ "GL_TEXTURE_MATRIX": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], "GL_ATTRIB_STACK_DEPTH": 0, "GL_CLIENT_ATTRIB_STACK_DEPTH": 0, - "GL_ALPHA_TEST": false, + "GL_ALPHA_TEST": "GL_FALSE", "GL_ALPHA_TEST_FUNC": "GL_ALWAYS", "GL_ALPHA_TEST_REF": 0, - "GL_DITHER": true, + "GL_DITHER": "GL_TRUE", "GL_BLEND_DST": "GL_ZERO", "GL_BLEND_SRC": "GL_ONE", - "GL_BLEND": false, + "GL_BLEND": "GL_FALSE", "GL_LOGIC_OP_MODE": "GL_COPY", - "GL_INDEX_LOGIC_OP": false, - "GL_COLOR_LOGIC_OP": false, + "GL_INDEX_LOGIC_OP": "GL_FALSE", + "GL_COLOR_LOGIC_OP": "GL_FALSE", // Some implementations return more GL_AUX_BUFFERS than requested // GL_DRAW_BUFFER and GL_READ_BUFFER vary with visual // GL_SCISSOR_BOX depends on the drawable - "GL_SCISSOR_TEST": false, + "GL_SCISSOR_TEST": "GL_FALSE", "GL_INDEX_CLEAR_VALUE": 0, "GL_INDEX_WRITEMASK": -1, "GL_COLOR_CLEAR_VALUE": [0, 0, 0, 0], - "GL_COLOR_WRITEMASK": [true, true, true, true], - "GL_INDEX_MODE": false, - "GL_RGBA_MODE": true, + "GL_COLOR_WRITEMASK": ["GL_TRUE", "GL_TRUE", "GL_TRUE", "GL_TRUE"], + "GL_INDEX_MODE": "GL_FALSE", + "GL_RGBA_MODE": "GL_TRUE", // GL_DOUBLEBUFFER varies with visual - "GL_STEREO": false, + "GL_STEREO": "GL_FALSE", "GL_RENDER_MODE": "GL_RENDER", "GL_PERSPECTIVE_CORRECTION_HINT": "GL_DONT_CARE", "GL_POINT_SMOOTH_HINT": "GL_DONT_CARE", "GL_LINE_SMOOTH_HINT": "GL_DONT_CARE", "GL_POLYGON_SMOOTH_HINT": "GL_DONT_CARE", "GL_FOG_HINT": "GL_DONT_CARE", - "GL_TEXTURE_GEN_S": false, - "GL_TEXTURE_GEN_T": false, - "GL_TEXTURE_GEN_R": false, - "GL_TEXTURE_GEN_Q": false, + "GL_TEXTURE_GEN_S": "GL_FALSE", + "GL_TEXTURE_GEN_T": "GL_FALSE", + "GL_TEXTURE_GEN_R": "GL_FALSE", + "GL_TEXTURE_GEN_Q": "GL_FALSE", "GL_PIXEL_MAP_I_TO_I_SIZE": 1, "GL_PIXEL_MAP_S_TO_S_SIZE": 1, "GL_PIXEL_MAP_I_TO_R_SIZE": 1, @@ -110,20 +110,20 @@ "GL_PIXEL_MAP_G_TO_G_SIZE": 1, "GL_PIXEL_MAP_B_TO_B_SIZE": 1, "GL_PIXEL_MAP_A_TO_A_SIZE": 1, - "GL_UNPACK_SWAP_BYTES": false, - "GL_UNPACK_LSB_FIRST": false, + "GL_UNPACK_SWAP_BYTES": "GL_FALSE", + "GL_UNPACK_LSB_FIRST": "GL_FALSE", "GL_UNPACK_ROW_LENGTH": 0, "GL_UNPACK_SKIP_ROWS": 0, "GL_UNPACK_SKIP_PIXELS": 0, "GL_UNPACK_ALIGNMENT": 4, - "GL_PACK_SWAP_BYTES": false, - "GL_PACK_LSB_FIRST": false, + "GL_PACK_SWAP_BYTES": "GL_FALSE", + "GL_PACK_LSB_FIRST": "GL_FALSE", "GL_PACK_ROW_LENGTH": 0, "GL_PACK_SKIP_ROWS": 0, "GL_PACK_SKIP_PIXELS": 0, "GL_PACK_ALIGNMENT": 4, - "GL_MAP_COLOR": false, - "GL_MAP_STENCIL": false, + "GL_MAP_COLOR": "GL_FALSE", + "GL_MAP_STENCIL": "GL_FALSE", "GL_INDEX_SHIFT": 0, "GL_INDEX_OFFSET": 0, "GL_RED_SCALE": 1, @@ -141,25 +141,25 @@ "GL_INDEX_BITS": 0, // GL_xxx_BITS state can often vary "GL_NAME_STACK_DEPTH": 0, - "GL_AUTO_NORMAL": false, - "GL_MAP1_COLOR_4": false, - "GL_MAP1_INDEX": false, - "GL_MAP1_NORMAL": false, - "GL_MAP1_TEXTURE_COORD_1": false, - "GL_MAP1_TEXTURE_COORD_2": false, - "GL_MAP1_TEXTURE_COORD_3": false, - "GL_MAP1_TEXTURE_COORD_4": false, - "GL_MAP1_VERTEX_3": false, - "GL_MAP1_VERTEX_4": false, - "GL_MAP2_COLOR_4": false, - "GL_MAP2_INDEX": false, - "GL_MAP2_NORMAL": false, - "GL_MAP2_TEXTURE_COORD_1": false, - "GL_MAP2_TEXTURE_COORD_2": false, - "GL_MAP2_TEXTURE_COORD_3": false, - "GL_MAP2_TEXTURE_COORD_4": false, - "GL_MAP2_VERTEX_3": false, - "GL_MAP2_VERTEX_4": false, + "GL_AUTO_NORMAL": "GL_FALSE", + "GL_MAP1_COLOR_4": "GL_FALSE", + "GL_MAP1_INDEX": "GL_FALSE", + "GL_MAP1_NORMAL": "GL_FALSE", + "GL_MAP1_TEXTURE_COORD_1": "GL_FALSE", + "GL_MAP1_TEXTURE_COORD_2": "GL_FALSE", + "GL_MAP1_TEXTURE_COORD_3": "GL_FALSE", + "GL_MAP1_TEXTURE_COORD_4": "GL_FALSE", + "GL_MAP1_VERTEX_3": "GL_FALSE", + "GL_MAP1_VERTEX_4": "GL_FALSE", + "GL_MAP2_COLOR_4": "GL_FALSE", + "GL_MAP2_INDEX": "GL_FALSE", + "GL_MAP2_NORMAL": "GL_FALSE", + "GL_MAP2_TEXTURE_COORD_1": "GL_FALSE", + "GL_MAP2_TEXTURE_COORD_2": "GL_FALSE", + "GL_MAP2_TEXTURE_COORD_3": "GL_FALSE", + "GL_MAP2_TEXTURE_COORD_4": "GL_FALSE", + "GL_MAP2_VERTEX_3": "GL_FALSE", + "GL_MAP2_VERTEX_4": "GL_FALSE", "GL_MAP1_GRID_DOMAIN": [0, 1], "GL_MAP1_GRID_SEGMENTS": 1, "GL_MAP2_GRID_DOMAIN": [0, 1, 0, 1], @@ -170,30 +170,30 @@ "GL_SELECTION_BUFFER_POINTER": 0, "GL_SELECTION_BUFFER_SIZE": 0, "GL_POLYGON_OFFSET_UNITS": 0, - "GL_POLYGON_OFFSET_POINT": false, - "GL_POLYGON_OFFSET_LINE": false, - "GL_CLIP_DISTANCE0": false, - "GL_CLIP_DISTANCE1": false, - "GL_CLIP_DISTANCE2": false, - "GL_CLIP_DISTANCE3": false, - "GL_CLIP_DISTANCE4": false, - "GL_CLIP_DISTANCE5": false, + "GL_POLYGON_OFFSET_POINT": "GL_FALSE", + "GL_POLYGON_OFFSET_LINE": "GL_FALSE", + "GL_CLIP_DISTANCE0": "GL_FALSE", + "GL_CLIP_DISTANCE1": "GL_FALSE", + "GL_CLIP_DISTANCE2": "GL_FALSE", + "GL_CLIP_DISTANCE3": "GL_FALSE", + "GL_CLIP_DISTANCE4": "GL_FALSE", + "GL_CLIP_DISTANCE5": "GL_FALSE", "GL_BLEND_COLOR": [0, 0, 0, 0], "GL_BLEND_EQUATION": "GL_FUNC_ADD", - "GL_POLYGON_OFFSET_FILL": false, + "GL_POLYGON_OFFSET_FILL": "GL_FALSE", "GL_POLYGON_OFFSET_FACTOR": 0, - "GL_RESCALE_NORMAL": false, + "GL_RESCALE_NORMAL": "GL_FALSE", "GL_PACK_SKIP_IMAGES": 0, "GL_PACK_IMAGE_HEIGHT": 0, "GL_UNPACK_SKIP_IMAGES": 0, "GL_UNPACK_IMAGE_HEIGHT": 0, - "GL_TEXTURE_3D": false, - "GL_VERTEX_ARRAY": false, - "GL_NORMAL_ARRAY": false, - "GL_COLOR_ARRAY": false, - "GL_INDEX_ARRAY": false, - "GL_TEXTURE_COORD_ARRAY": false, - "GL_EDGE_FLAG_ARRAY": false, + "GL_TEXTURE_3D": "GL_FALSE", + "GL_VERTEX_ARRAY": "GL_FALSE", + "GL_NORMAL_ARRAY": "GL_FALSE", + "GL_COLOR_ARRAY": "GL_FALSE", + "GL_INDEX_ARRAY": "GL_FALSE", + "GL_TEXTURE_COORD_ARRAY": "GL_FALSE", + "GL_EDGE_FLAG_ARRAY": "GL_FALSE", "GL_VERTEX_ARRAY_SIZE": 4, "GL_VERTEX_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ARRAY_STRIDE": 0, @@ -234,13 +234,13 @@ "GL_CURRENT_FOG_COORD": 0, "GL_FOG_COORD_ARRAY_TYPE": "GL_FLOAT", "GL_FOG_COORD_ARRAY_STRIDE": 0, - "GL_FOG_COORD_ARRAY": false, - "GL_COLOR_SUM": false, + "GL_FOG_COORD_ARRAY": "GL_FALSE", + "GL_COLOR_SUM": "GL_FALSE", "GL_CURRENT_SECONDARY_COLOR": [0, 0, 0, 1], "GL_SECONDARY_COLOR_ARRAY_SIZE": 3, "GL_SECONDARY_COLOR_ARRAY_TYPE": "GL_FLOAT", "GL_SECONDARY_COLOR_ARRAY_STRIDE": 0, - "GL_SECONDARY_COLOR_ARRAY": false, + "GL_SECONDARY_COLOR_ARRAY": "GL_FALSE", "GL_ACTIVE_TEXTURE": "GL_TEXTURE0", "GL_CLIENT_ACTIVE_TEXTURE": "GL_TEXTURE0", "GL_TRANSPOSE_MODELVIEW_MATRIX": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], @@ -248,8 +248,8 @@ "GL_TRANSPOSE_TEXTURE_MATRIX": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], "GL_TEXTURE_COMPRESSION_HINT": "GL_DONT_CARE", "GL_VERTEX_ARRAY_BINDING": 0, - "GL_PROGRAM_POINT_SIZE": false, - "GL_VERTEX_PROGRAM_TWO_SIDE": false, + "GL_PROGRAM_POINT_SIZE": "GL_FALSE", + "GL_VERTEX_PROGRAM_TWO_SIDE": "GL_FALSE", "GL_STENCIL_BACK_FUNC": "GL_ALWAYS", "GL_STENCIL_BACK_FAIL": "GL_KEEP", "GL_STENCIL_BACK_PASS_DEPTH_FAIL": "GL_KEEP", @@ -297,159 +297,159 @@ "GL_COLOR_INDEXES": [0, 1, 1] }, "GL_VERTEX_ATTRIB_ARRAY0": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY1": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY2": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY3": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY4": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY5": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY6": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY7": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY8": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY9": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY10": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY11": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY12": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY13": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY14": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_VERTEX_ATTRIB_ARRAY15": { - "GL_VERTEX_ATTRIB_ARRAY_ENABLED": false, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_SIZE": 4, "GL_VERTEX_ATTRIB_ARRAY_STRIDE": 0, "GL_VERTEX_ATTRIB_ARRAY_TYPE": "GL_FLOAT", "GL_VERTEX_ATTRIB_ARRAY_POINTER": 0, - "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": false, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED": "GL_FALSE", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 0 }, "GL_TEXTURE0": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0, "GL_TEXTURE_ENV": { "GL_ALPHA_SCALE": 1, @@ -475,19 +475,19 @@ "GL_TEXTURE_LOD_BIAS": 0 }, "GL_POINT_SPRITE": { - "GL_COORD_REPLACE": false + "GL_COORD_REPLACE": "GL_FALSE" } }, "GL_TEXTURE1": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0, "GL_TEXTURE_ENV": { "GL_ALPHA_SCALE": 1, @@ -513,19 +513,19 @@ "GL_TEXTURE_LOD_BIAS": 0 }, "GL_POINT_SPRITE": { - "GL_COORD_REPLACE": false + "GL_COORD_REPLACE": "GL_FALSE" } }, "GL_TEXTURE2": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0, "GL_TEXTURE_ENV": { "GL_ALPHA_SCALE": 1, @@ -551,19 +551,19 @@ "GL_TEXTURE_LOD_BIAS": 0 }, "GL_POINT_SPRITE": { - "GL_COORD_REPLACE": false + "GL_COORD_REPLACE": "GL_FALSE" } }, "GL_TEXTURE3": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0, "GL_TEXTURE_ENV": { "GL_ALPHA_SCALE": 1, @@ -589,19 +589,19 @@ "GL_TEXTURE_LOD_BIAS": 0 }, "GL_POINT_SPRITE": { - "GL_COORD_REPLACE": false + "GL_COORD_REPLACE": "GL_FALSE" } }, "GL_TEXTURE4": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0, "GL_TEXTURE_ENV": { "GL_ALPHA_SCALE": 1, @@ -627,19 +627,19 @@ "GL_TEXTURE_LOD_BIAS": 0 }, "GL_POINT_SPRITE": { - "GL_COORD_REPLACE": false + "GL_COORD_REPLACE": "GL_FALSE" } }, "GL_TEXTURE5": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0, "GL_TEXTURE_ENV": { "GL_ALPHA_SCALE": 1, @@ -665,19 +665,19 @@ "GL_TEXTURE_LOD_BIAS": 0 }, "GL_POINT_SPRITE": { - "GL_COORD_REPLACE": false + "GL_COORD_REPLACE": "GL_FALSE" } }, "GL_TEXTURE6": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0, "GL_TEXTURE_ENV": { "GL_ALPHA_SCALE": 1, @@ -703,19 +703,19 @@ "GL_TEXTURE_LOD_BIAS": 0 }, "GL_POINT_SPRITE": { - "GL_COORD_REPLACE": false + "GL_COORD_REPLACE": "GL_FALSE" } }, "GL_TEXTURE7": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0, "GL_TEXTURE_ENV": { "GL_ALPHA_SCALE": 1, @@ -741,103 +741,103 @@ "GL_TEXTURE_LOD_BIAS": 0 }, "GL_POINT_SPRITE": { - "GL_COORD_REPLACE": false + "GL_COORD_REPLACE": "GL_FALSE" } }, "GL_TEXTURE8": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0 }, "GL_TEXTURE9": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0 }, "GL_TEXTURE10": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0 }, "GL_TEXTURE11": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0 }, "GL_TEXTURE12": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0 }, "GL_TEXTURE13": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0 }, "GL_TEXTURE14": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0 }, "GL_TEXTURE15": { - "GL_TEXTURE_1D": false, + "GL_TEXTURE_1D": "GL_FALSE", "GL_TEXTURE_BINDING_1D": 0, - "GL_TEXTURE_2D": false, + "GL_TEXTURE_2D": "GL_FALSE", "GL_TEXTURE_BINDING_2D": 0, - "GL_TEXTURE_3D": false, + "GL_TEXTURE_3D": "GL_FALSE", "GL_TEXTURE_BINDING_3D": 0, - "GL_TEXTURE_RECTANGLE": false, + "GL_TEXTURE_RECTANGLE": "GL_FALSE", "GL_TEXTURE_BINDING_RECTANGLE": 0, - "GL_TEXTURE_CUBE_MAP": false, + "GL_TEXTURE_CUBE_MAP": "GL_FALSE", "GL_TEXTURE_BINDING_CUBE_MAP": 0 } }, diff --git a/apps/gl/default_db.ref.json b/apps/gl/default_db.ref.json index bde1c36..772db7b 100644 --- a/apps/gl/default_db.ref.json +++ b/apps/gl/default_db.ref.json @@ -3,6 +3,6 @@ "GL_DRAW_BUFFER": "GL_BACK", "GL_DRAW_BUFFER0": "GL_BACK", "GL_READ_BUFFER": "GL_BACK", - "GL_DOUBLEBUFFER": true + "GL_DOUBLEBUFFER": "GL_TRUE" } } diff --git a/apps/gl/default_sb.ref.json b/apps/gl/default_sb.ref.json index 381ccbc..6ac5992 100644 --- a/apps/gl/default_sb.ref.json +++ b/apps/gl/default_sb.ref.json @@ -3,6 +3,6 @@ "GL_DRAW_BUFFER": "GL_FRONT", "GL_DRAW_BUFFER0": "GL_FRONT", "GL_READ_BUFFER": "GL_FRONT", - "GL_DOUBLEBUFFER": false + "GL_DOUBLEBUFFER": "GL_FALSE" } } -- 2.45.2 From 13e2c906a5e6ece1cf9ba1ed23551b570d7180fd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Thu, 3 May 2012 11:15:12 +0100 Subject: [PATCH 02/16] Handle CRLF lines in tool_driver.py --- tool_driver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool_driver.py b/tool_driver.py index 4cbcc37..962db1e 100755 --- a/tool_driver.py +++ b/tool_driver.py @@ -81,7 +81,7 @@ class ToolDriver(Driver): args = refStream.readline().split() cmd = [self.options.apitrace] + args cwd = os.path.dirname(os.path.abspath(refScript)) - p = popen(cmd, cwd=cwd, stdout=subprocess.PIPE) + p = popen(cmd, cwd=cwd, stdout=subprocess.PIPE, universal_newlines=True) comparer = AsciiComparer(p.stdout, refStream, self.options.verbose) comparer.compare() -- 2.45.2 From 799a2cd3f002cb517b0c461ee0cb9feb31dc5761 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Thu, 3 May 2012 11:20:41 +0100 Subject: [PATCH 03/16] Simple D3D9 app. --- CMakeLists.txt | 17 +++- README.markdown | 2 +- app_driver.py | 15 +++- apps/CMakeLists.txt | 5 ++ apps/d3d9/CMakeLists.txt | 27 +++++++ apps/d3d9/tri.cpp | 168 +++++++++++++++++++++++++++++++++++++++ apps/d3d9/tri.ref.txt | 0 base_driver.py | 7 ++ traces/CMakeLists.txt | 1 + 9 files changed, 236 insertions(+), 6 deletions(-) create mode 100644 apps/d3d9/CMakeLists.txt create mode 100644 apps/d3d9/tri.cpp create mode 100644 apps/d3d9/tri.ref.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index cd7f9d1..67bbb3c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,23 @@ cmake_minimum_required (VERSION 2.8) project (apitrace-tests) +find_path (APITRACE_SOURCE_DIR NAMES cmake/FindDirectX.cmake PATHS .. ../.. DOC "apitrace source tree" NO_DEFAULT_PATH) +if (NOT EXISTS ${APITRACE_SOURCE_DIR}) + message (SEND_ERROR "Please specify path to apitrace source tree via APITRACE_SOURCE_DIR") +endif () + +find_program (APITRACE_EXECUTABLE NAMES apitrace PATHS ${APITRACE_SOURCE_DIR} DOC "apitrace executable") +if (NOT EXISTS ${APITRACE_EXECUTABLE}) + message (SEND_ERROR "Please specify path to apitrace executable via APITRACE_EXECUTABLE") +endif () + include (FindPkgConfig) +if (APITRACE_SOURCE_DIR) + set (CMAKE_MODULE_PATH ${APITRACE_SOURCE_DIR}/cmake) + find_package (DirectX) +endif () + # Set default built type if (NOT CMAKE_BUILD_TYPE) set (CMAKE_BUILD_TYPE Debug @@ -64,8 +79,6 @@ if (MSVC) add_definitions (-wd4244) # conversion' conversion from 'type1' to 'type2', possible loss of data endif () -find_program (APITRACE_EXECUTABLE apitrace DOC "apitrace executable") - enable_testing() add_subdirectory (apps) diff --git a/README.markdown b/README.markdown index 2820428..c32d9e6 100644 --- a/README.markdown +++ b/README.markdown @@ -8,7 +8,7 @@ In addition to apitrace requirements, it also requires: To run the test suite do on Unices: - cmake -DAPITRACE_EXECUTABLE=/path/to/apitrace -H. -B./build + cmake -DAPITRACE_SOURCE_DIR=/path/to/apitrace/tree -DAPITRACE_EXECUTABLE=/path/to/apitrace/build/apitrace -H. -B./build export CTEST_OUTPUT_ON_FAILURE=1 make -C ./build all test diff --git a/app_driver.py b/app_driver.py index 33d2d5e..2c7a319 100755 --- a/app_driver.py +++ b/app_driver.py @@ -170,11 +170,20 @@ class AppDriver(Driver): if p.returncode: skip('application returned code %i' % p.returncode) - api_map = { + api_trace_map = { 'gl': 'gl', 'egl_gl': 'egl', 'egl_gles1': 'egl', 'egl_gles2': 'egl', + 'd3d9': 'd3d9', + } + + api_retrace_map = { + 'gl': 'glretrace', + 'egl_gl': 'eglretrace', + 'egl_gles1': 'eglretrace', + 'egl_gles2': 'eglretrace', + 'd3d9': 'd3dretrace', } def traceApp(self): @@ -202,7 +211,7 @@ class AppDriver(Driver): cmd = [ options.apitrace, 'trace', - '--api', self.api_map[self.api], + '--api', self.api_trace_map[self.api], '--output', self.trace_file, '--' ] + cmd @@ -395,7 +404,7 @@ class AppDriver(Driver): pass def _retrace(self, args = None, stdout=subprocess.PIPE): - retrace = self.api_map[self.api] + 'retrace' + retrace = self.api_retrace_map[self.api] cmd = [get_build_program(retrace)] if self.doubleBuffer: cmd += ['-db'] diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index 1793709..98c41f5 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -15,6 +15,7 @@ function (ADD_APP_TEST) COMMAND python ${CMAKE_SOURCE_DIR}/app_driver.py --apitrace ${APITRACE_EXECUTABLE} + --apitrace-source ${APITRACE_SOURCE_DIR} --api ${api} --ref-dump ${CMAKE_CURRENT_SOURCE_DIR}/${TEST_REF} -- @@ -30,3 +31,7 @@ endif () if (EGL_FOUND) add_subdirectory (egl) endif () + +if (DirectX_D3D9_FOUND) + add_subdirectory (d3d9) +endif () diff --git a/apps/d3d9/CMakeLists.txt b/apps/d3d9/CMakeLists.txt new file mode 100644 index 0000000..999879b --- /dev/null +++ b/apps/d3d9/CMakeLists.txt @@ -0,0 +1,27 @@ +include_directories ( + ${DirectX_D3D9_INCLUDE_DIR} +) + +link_libraries ( + ${DirectX_D3D9_LIBRARY} +) + +set (api d3d9) + +set (targets + tri +) + +foreach (target ${targets}) + add_executable (${api}_${target} WIN32 ${target}.cpp) + set_target_properties (${api}_${target} PROPERTIES OUTPUT_NAME ${target}) + + if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${target}.ref.txt) + add_app_test( + NAME ${api}_${target} + TARGET ${api}_${target} + REF ${target}.ref.txt + ) + endif () +endforeach (target) + diff --git a/apps/d3d9/tri.cpp b/apps/d3d9/tri.cpp new file mode 100644 index 0000000..8166734 --- /dev/null +++ b/apps/d3d9/tri.cpp @@ -0,0 +1,168 @@ +/************************************************************************** + * + * Copyright 2012 Jose Fonseca + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * 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 THE + * AUTHORS OR COPYRIGHT HOLDERS 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 + +#include + + +static IDirect3D9 * g_pD3D = NULL; +static IDirect3DDevice9 * g_pDevice = NULL; +static D3DPRESENT_PARAMETERS g_PresentationParameters; + + +int WINAPI +WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow) +{ + HRESULT hr; + + WNDCLASSEX wc = { + sizeof(WNDCLASSEX), + CS_CLASSDC, + DefWindowProc, + 0, + 0, + hInstance, + NULL, + NULL, + NULL, + NULL, + "SimpleDX9", + NULL + }; + RegisterClassEx(&wc); + + const int WindowWidth = 250; + const int WindowHeight = 250; + BOOL Windowed = TRUE; + + DWORD dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW; + + RECT rect = {0, 0, WindowWidth, WindowHeight}; + AdjustWindowRect(&rect, dwStyle, FALSE); + + HWND hWnd = CreateWindow(wc.lpszClassName, + "Simple example using DirectX9", + dwStyle, + CW_USEDEFAULT, CW_USEDEFAULT, + rect.right - rect.left, + rect.bottom - rect.top, + NULL, + NULL, + hInstance, + NULL); + if (!hWnd) { + return 1; + } + + ShowWindow(hWnd, SW_SHOW); + + g_pD3D = Direct3DCreate9(D3D_SDK_VERSION); + if (!g_pD3D) { + return 1; + } + + D3DCAPS9 caps; + hr = g_pD3D->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps); + if (FAILED(hr)) { + return 1; + } + + DWORD dwBehaviorFlags; + if ((caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) == 0 || + caps.VertexShaderVersion < D3DVS_VERSION(1, 1)) { + dwBehaviorFlags = D3DCREATE_SOFTWARE_VERTEXPROCESSING; + } else { + dwBehaviorFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING; + } + + ZeroMemory(&g_PresentationParameters, sizeof g_PresentationParameters); + g_PresentationParameters.Windowed = Windowed; + if (!Windowed) { + g_PresentationParameters.BackBufferWidth = WindowWidth; + g_PresentationParameters.BackBufferHeight = WindowHeight; + } + g_PresentationParameters.BackBufferCount = 1; + g_PresentationParameters.SwapEffect = D3DSWAPEFFECT_FLIP; + if (!Windowed) { + g_PresentationParameters.BackBufferFormat = D3DFMT_X8R8G8B8; + } else { + g_PresentationParameters.BackBufferFormat = D3DFMT_UNKNOWN; + } + g_PresentationParameters.hDeviceWindow = hWnd; + + g_PresentationParameters.EnableAutoDepthStencil = FALSE; + g_PresentationParameters.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; + + hr = g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, + D3DDEVTYPE_HAL, + hWnd, + dwBehaviorFlags, + &g_PresentationParameters, + &g_pDevice); + if (FAILED(hr)) { + g_pD3D->Release(); + g_pD3D = NULL; + return 1; + } + + struct Vertex { + float x, y, z; + DWORD color; + }; + + + D3DCOLOR clearColor = D3DCOLOR_COLORVALUE(0.3f, 0.1f, 0.3f, 1.0f); + g_pDevice->Clear(0, NULL, D3DCLEAR_TARGET, clearColor, 1.0f, 0); + g_pDevice->BeginScene(); + + g_pDevice->SetRenderState(D3DRS_LIGHTING, FALSE); + g_pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); + + static const Vertex vertices[] = { + { -0.9f, -0.9f, 0.5f, D3DCOLOR_COLORVALUE(0.8f, 0.0f, 0.0f, 0.1f) }, + { 0.9f, -0.9f, 0.5f, D3DCOLOR_COLORVALUE(0.0f, 0.9f, 0.0f, 0.1f) }, + { 0.0f, 0.9f, 0.5f, D3DCOLOR_COLORVALUE(0.0f, 0.0f, 0.7f, 0.1f) }, + }; + + g_pDevice->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE); + g_pDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, vertices, sizeof(Vertex)); + + g_pDevice->EndScene(); + + g_pDevice->Present(NULL, NULL, NULL, NULL); + + + g_pDevice->Release(); + g_pDevice = NULL; + g_pD3D->Release(); + g_pD3D = NULL; + + DestroyWindow(hWnd); + + return 0; +} + diff --git a/apps/d3d9/tri.ref.txt b/apps/d3d9/tri.ref.txt new file mode 100644 index 0000000..e69de29 diff --git a/base_driver.py b/base_driver.py index 1be1432..1971fce 100644 --- a/base_driver.py +++ b/base_driver.py @@ -107,6 +107,9 @@ def get_build_program(program): def get_scripts_path(): + if options.apitrace_source: + return os.path.join(options.apitrace_source, 'scripts') + bin_path = get_bin_path() try_paths = [ @@ -147,6 +150,10 @@ class Driver: '--apitrace', metavar='PROGRAM', type='string', dest='apitrace', default=default_apitrace, help='path to apitrace executable') + optparser.add_option( + '--apitrace-source', metavar='PATH', + type='string', dest='apitrace_source', + help='path to apitrace source tree') optparser.add_option( '-C', '--directory', metavar='PATH', type='string', dest='cwd', default=None, diff --git a/traces/CMakeLists.txt b/traces/CMakeLists.txt index c1e0500..983be78 100644 --- a/traces/CMakeLists.txt +++ b/traces/CMakeLists.txt @@ -8,6 +8,7 @@ foreach (script ${scripts}) COMMAND python ${CMAKE_SOURCE_DIR}/tool_driver.py --apitrace ${APITRACE_EXECUTABLE} + --apitrace-source ${APITRACE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${script} ) endforeach (script) -- 2.45.2 From 17cb85dd761e0a2d0b085162b4f250ed679cbb33 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Thu, 3 May 2012 13:31:37 +0100 Subject: [PATCH 04/16] D3D8 sample app. --- app_driver.py | 7 ++ apps/CMakeLists.txt | 4 + apps/d3d8/CMakeLists.txt | 27 ++++++ apps/d3d8/tri.cpp | 176 +++++++++++++++++++++++++++++++++++++++ apps/d3d8/tri.ref.txt | 0 5 files changed, 214 insertions(+) create mode 100644 apps/d3d8/CMakeLists.txt create mode 100644 apps/d3d8/tri.cpp create mode 100644 apps/d3d8/tri.ref.txt diff --git a/app_driver.py b/app_driver.py index 2c7a319..27eb452 100755 --- a/app_driver.py +++ b/app_driver.py @@ -175,6 +175,7 @@ class AppDriver(Driver): 'egl_gl': 'egl', 'egl_gles1': 'egl', 'egl_gles2': 'egl', + 'd3d8': 'd3d8', 'd3d9': 'd3d9', } @@ -236,6 +237,9 @@ class AppDriver(Driver): self.doubleBuffer = checker.doubleBuffer + if self.api not in self.api_retrace_map: + return + for callNo, refImageFileName in checker.images: self.checkImage(callNo, refImageFileName) for callNo, refStateFileName in checker.states: @@ -302,6 +306,9 @@ class AppDriver(Driver): open(filename, 'wt').write(s) def retrace(self): + if self.api not in self.api_retrace_map: + return + p = self._retrace() p.wait() if p.returncode != 0: diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index 98c41f5..f75c9f8 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -35,3 +35,7 @@ endif () if (DirectX_D3D9_FOUND) add_subdirectory (d3d9) endif () + +if (DirectX_D3D8_FOUND) + add_subdirectory (d3d8) +endif () diff --git a/apps/d3d8/CMakeLists.txt b/apps/d3d8/CMakeLists.txt new file mode 100644 index 0000000..964a080 --- /dev/null +++ b/apps/d3d8/CMakeLists.txt @@ -0,0 +1,27 @@ +include_directories ( + ${DirectX_D3D8_INCLUDE_DIR} +) + +link_libraries ( + ${DirectX_D3D8_LIBRARY} +) + +set (api d3d8) + +set (targets + tri +) + +foreach (target ${targets}) + add_executable (${api}_${target} ${target}.cpp) + set_target_properties (${api}_${target} PROPERTIES OUTPUT_NAME ${target}) + + if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${target}.ref.txt) + add_app_test( + NAME ${api}_${target} + TARGET ${api}_${target} + REF ${target}.ref.txt + ) + endif () +endforeach (target) + diff --git a/apps/d3d8/tri.cpp b/apps/d3d8/tri.cpp new file mode 100644 index 0000000..156d0c5 --- /dev/null +++ b/apps/d3d8/tri.cpp @@ -0,0 +1,176 @@ +/************************************************************************** + * + * Copyright 2012 Jose Fonseca + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * 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 THE + * AUTHORS OR COPYRIGHT HOLDERS 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 + +#include + + +static IDirect3D8 * g_pD3D = NULL; +static IDirect3DDevice8 * g_pDevice = NULL; +static D3DPRESENT_PARAMETERS g_PresentationParameters; + + +int main(int argc, char *argv[]) +{ + HRESULT hr; + + HINSTANCE hInstance = GetModuleHandle(NULL); + + WNDCLASSEX wc = { + sizeof(WNDCLASSEX), + CS_CLASSDC, + DefWindowProc, + 0, + 0, + hInstance, + NULL, + NULL, + NULL, + NULL, + "SimpleDX8", + NULL + }; + RegisterClassEx(&wc); + + const int WindowWidth = 250; + const int WindowHeight = 250; + BOOL Windowed = TRUE; + + DWORD dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW; + + RECT rect = {0, 0, WindowWidth, WindowHeight}; + AdjustWindowRect(&rect, dwStyle, FALSE); + + HWND hWnd = CreateWindow(wc.lpszClassName, + "Simple example using DirectX8", + dwStyle, + CW_USEDEFAULT, CW_USEDEFAULT, + rect.right - rect.left, + rect.bottom - rect.top, + NULL, + NULL, + hInstance, + NULL); + if (!hWnd) { + return 1; + } + + ShowWindow(hWnd, SW_SHOW); + + g_pD3D = Direct3DCreate8(D3D_SDK_VERSION); + if (!g_pD3D) { + return 1; + } + + D3DCAPS8 caps; + hr = g_pD3D->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps); + if (FAILED(hr)) { + return 1; + } + + DWORD dwBehaviorFlags; + if ((caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) == 0 || + caps.VertexShaderVersion < D3DVS_VERSION(1, 1)) { + dwBehaviorFlags = D3DCREATE_SOFTWARE_VERTEXPROCESSING; + } else { + dwBehaviorFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING; + } + + ZeroMemory(&g_PresentationParameters, sizeof g_PresentationParameters); + g_PresentationParameters.Windowed = Windowed; + if (!Windowed) { + g_PresentationParameters.BackBufferWidth = WindowWidth; + g_PresentationParameters.BackBufferHeight = WindowHeight; + } + g_PresentationParameters.BackBufferCount = 1; + g_PresentationParameters.SwapEffect = D3DSWAPEFFECT_DISCARD; + if (Windowed) { + // Must matche the format of the current display mode + D3DDISPLAYMODE Mode; + hr = g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &Mode); + if (FAILED(hr)) { + g_pD3D->Release(); + g_pD3D = NULL; + return 1; + } + g_PresentationParameters.BackBufferFormat = Mode.Format; + } else { + g_PresentationParameters.BackBufferFormat = D3DFMT_X8R8G8B8; + g_PresentationParameters.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; + } + g_PresentationParameters.hDeviceWindow = hWnd; + + g_PresentationParameters.EnableAutoDepthStencil = FALSE; + + hr = g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, + D3DDEVTYPE_HAL, + hWnd, + dwBehaviorFlags, + &g_PresentationParameters, + &g_pDevice); + if (FAILED(hr)) { + g_pD3D->Release(); + g_pD3D = NULL; + return 1; + } + + struct Vertex { + float x, y, z; + DWORD color; + }; + + + D3DCOLOR clearColor = D3DCOLOR_COLORVALUE(0.3f, 0.1f, 0.3f, 1.0f); + g_pDevice->Clear(0, NULL, D3DCLEAR_TARGET, clearColor, 1.0f, 0); + g_pDevice->BeginScene(); + + g_pDevice->SetRenderState(D3DRS_LIGHTING, FALSE); + g_pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); + + static const Vertex vertices[] = { + { -0.9f, -0.9f, 0.5f, D3DCOLOR_COLORVALUE(0.8f, 0.0f, 0.0f, 0.1f) }, + { 0.9f, -0.9f, 0.5f, D3DCOLOR_COLORVALUE(0.0f, 0.9f, 0.0f, 0.1f) }, + { 0.0f, 0.9f, 0.5f, D3DCOLOR_COLORVALUE(0.0f, 0.0f, 0.7f, 0.1f) }, + }; + + g_pDevice->SetVertexShader(D3DFVF_XYZ | D3DFVF_DIFFUSE); + g_pDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, vertices, sizeof(Vertex)); + + g_pDevice->EndScene(); + + g_pDevice->Present(NULL, NULL, NULL, NULL); + + g_pDevice->Release(); + g_pDevice = NULL; + g_pD3D->Release(); + g_pD3D = NULL; + + DestroyWindow(hWnd); + + return 0; +} + diff --git a/apps/d3d8/tri.ref.txt b/apps/d3d8/tri.ref.txt new file mode 100644 index 0000000..e69de29 -- 2.45.2 From 1e49c97f30915ee057d2616ce50e437a19e2f16c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Thu, 3 May 2012 14:21:55 +0100 Subject: [PATCH 05/16] D3D7 sample. --- app_driver.py | 1 + apps/CMakeLists.txt | 4 + apps/d3d7/CMakeLists.txt | 27 ++++++ apps/d3d7/tri.cpp | 201 +++++++++++++++++++++++++++++++++++++++ apps/d3d7/tri.ref.txt | 0 5 files changed, 233 insertions(+) create mode 100644 apps/d3d7/CMakeLists.txt create mode 100644 apps/d3d7/tri.cpp create mode 100644 apps/d3d7/tri.ref.txt diff --git a/app_driver.py b/app_driver.py index 27eb452..67098d8 100755 --- a/app_driver.py +++ b/app_driver.py @@ -175,6 +175,7 @@ class AppDriver(Driver): 'egl_gl': 'egl', 'egl_gles1': 'egl', 'egl_gles2': 'egl', + 'd3d7': 'd3d7', 'd3d8': 'd3d8', 'd3d9': 'd3d9', } diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index f75c9f8..062e4c2 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -39,3 +39,7 @@ endif () if (DirectX_D3D8_FOUND) add_subdirectory (d3d8) endif () + +if (DirectX_D3D_FOUND) + add_subdirectory (d3d7) +endif () diff --git a/apps/d3d7/CMakeLists.txt b/apps/d3d7/CMakeLists.txt new file mode 100644 index 0000000..0b73135 --- /dev/null +++ b/apps/d3d7/CMakeLists.txt @@ -0,0 +1,27 @@ +include_directories ( + ${DirectX_D3D_INCLUDE_DIR} +) + +link_libraries ( + ${DirectX_DDRAW_LIBRARY} +) + +set (api d3d7) + +set (targets + tri +) + +foreach (target ${targets}) + add_executable (${api}_${target} ${target}.cpp) + set_target_properties (${api}_${target} PROPERTIES OUTPUT_NAME ${target}) + + if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${target}.ref.txt) + add_app_test( + NAME ${api}_${target} + TARGET ${api}_${target} + REF ${target}.ref.txt + ) + endif () +endforeach (target) + diff --git a/apps/d3d7/tri.cpp b/apps/d3d7/tri.cpp new file mode 100644 index 0000000..7852e6e --- /dev/null +++ b/apps/d3d7/tri.cpp @@ -0,0 +1,201 @@ +/************************************************************************** + * + * Copyright 2012 Jose Fonseca + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * 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 THE + * AUTHORS OR COPYRIGHT HOLDERS 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 + +#include + +#include + + +static LPDIRECTDRAW7 g_pDD = NULL; +static LPDIRECT3D7 g_pD3D = NULL; +static LPDIRECT3DDEVICE7 g_pDevice = NULL; +static LPDIRECTDRAWSURFACE7 g_pddsPrimary; +static LPDIRECTDRAWSURFACE7 g_pddsBackBuffer; +static RECT g_rcScreenRect; +static RECT g_rcViewportRect; + + +int main(int argc, char *argv[]) +{ + HRESULT hr; + + HINSTANCE hInstance = GetModuleHandle(NULL); + + WNDCLASSEX wc = { + sizeof(WNDCLASSEX), + CS_CLASSDC, + DefWindowProc, + 0, + 0, + hInstance, + NULL, + NULL, + NULL, + NULL, + "SimpleDX7", + NULL + }; + RegisterClassEx(&wc); + + const int WindowWidth = 250; + const int WindowHeight = 250; + const int WindowDepth = 4; + BOOL Windowed = TRUE; + + DWORD dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW; + + RECT rect = {0, 0, WindowWidth, WindowHeight}; + AdjustWindowRect(&rect, dwStyle, FALSE); + + HWND hWnd = CreateWindow(wc.lpszClassName, + "Simple example using DirectX7", + dwStyle, + CW_USEDEFAULT, CW_USEDEFAULT, + rect.right - rect.left, + rect.bottom - rect.top, + NULL, + NULL, + hInstance, + NULL); + if (!hWnd) { + return 1; + } + + ShowWindow(hWnd, SW_SHOW); + + hr = DirectDrawCreateEx(NULL, (void **)&g_pDD, IID_IDirectDraw7, NULL); + if (FAILED(hr)) { + return 1; + } + + hr = g_pDD->SetCooperativeLevel(hWnd, DDSCL_NORMAL); + if (FAILED(hr)) { + return 1; + } + + /* + * Create primary + */ + + DDSURFACEDESC2 ddsd; + ZeroMemory(&ddsd, sizeof ddsd); + ddsd.dwSize = sizeof ddsd; + ddsd.dwFlags = DDSD_CAPS; + ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; + + hr = g_pDD->CreateSurface(&ddsd, &g_pddsPrimary, NULL); + if (FAILED(hr)) { + return 1; + } + + /* + * Create backbuffer + */ + + ddsd.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_CAPS; + ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE; + + GetClientRect(hWnd, &g_rcScreenRect); + GetClientRect(hWnd, &g_rcViewportRect); + ClientToScreen(hWnd, (POINT*)&g_rcScreenRect.left); + ClientToScreen(hWnd, (POINT*)&g_rcScreenRect.right); + ddsd.dwWidth = g_rcScreenRect.right - g_rcScreenRect.left; + ddsd.dwHeight = g_rcScreenRect.bottom - g_rcScreenRect.top; + + hr = g_pDD->CreateSurface(&ddsd, &g_pddsBackBuffer, NULL); + if (FAILED(hr)) { + return 1; + } + + LPDIRECTDRAWCLIPPER pcClipper; + hr = g_pDD->CreateClipper(0, &pcClipper, NULL); + if (FAILED(hr)) { + return 1; + } + + pcClipper->SetHWnd(0, hWnd); + g_pddsPrimary->SetClipper(pcClipper); + pcClipper->Release(); + + /* + * Initialize D3D + */ + + hr = g_pDD->QueryInterface(IID_IDirect3D7, (void **)&g_pD3D); + if (FAILED(hr)) { + return 1; + } + + hr = g_pD3D->CreateDevice(IID_IDirect3DHALDevice, g_pddsBackBuffer, &g_pDevice); + if (FAILED(hr)) { + g_pD3D->Release(); + g_pD3D = NULL; + return 1; + } + + struct Vertex { + float x, y, z; + DWORD color; + }; + + + D3DCOLOR clearColor = D3DRGBA(0.3f, 0.1f, 0.3f, 1.0f); + g_pDevice->Clear(0, NULL, D3DCLEAR_TARGET, clearColor, 1.0f, 0); + g_pDevice->BeginScene(); + + g_pDevice->SetRenderState(D3DRENDERSTATE_LIGHTING, FALSE); + g_pDevice->SetRenderState(D3DRENDERSTATE_CULLMODE, D3DCULL_NONE); + + static Vertex vertices[] = { + { -0.9f, -0.9f, 0.5f, D3DRGBA(0.8f, 0.0f, 0.0f, 0.1f) }, + { 0.9f, -0.9f, 0.5f, D3DRGBA(0.0f, 0.9f, 0.0f, 0.1f) }, + { 0.0f, 0.9f, 0.5f, D3DRGBA(0.0f, 0.0f, 0.7f, 0.1f) }, + }; + + g_pDevice->DrawPrimitive(D3DPT_TRIANGLELIST, D3DFVF_XYZ | D3DFVF_DIFFUSE, vertices, 3, 0); + + g_pDevice->EndScene(); + + /* + * Present + */ + hr = g_pddsPrimary->Blt(&g_rcScreenRect, g_pddsBackBuffer, &g_rcViewportRect, DDBLT_WAIT, NULL); + if (FAILED(hr)) { + return 1; + } + + g_pDevice->Release(); + g_pDevice = NULL; + g_pD3D->Release(); + g_pD3D = NULL; + + DestroyWindow(hWnd); + + return 0; +} + diff --git a/apps/d3d7/tri.ref.txt b/apps/d3d7/tri.ref.txt new file mode 100644 index 0000000..e69de29 -- 2.45.2 From a3ccf852524ab7eac72236aaecd6c5ba67459f70 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Fri, 4 May 2012 00:52:13 +0100 Subject: [PATCH 06/16] Prototype of d3d10 sample app. Compiles but untested. --- apps/CMakeLists.txt | 4 + apps/d3d10/CMakeLists.txt | 28 +++++ apps/d3d10/tri.cpp | 246 ++++++++++++++++++++++++++++++++++++++ apps/d3d10/tri.ref.txt | 0 4 files changed, 278 insertions(+) create mode 100644 apps/d3d10/CMakeLists.txt create mode 100644 apps/d3d10/tri.cpp create mode 100644 apps/d3d10/tri.ref.txt diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index 062e4c2..b824e2b 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -32,6 +32,10 @@ if (EGL_FOUND) add_subdirectory (egl) endif () +if (DirectX_D3D10_FOUND) + add_subdirectory (d3d10) +endif () + if (DirectX_D3D9_FOUND) add_subdirectory (d3d9) endif () diff --git a/apps/d3d10/CMakeLists.txt b/apps/d3d10/CMakeLists.txt new file mode 100644 index 0000000..e94e463 --- /dev/null +++ b/apps/d3d10/CMakeLists.txt @@ -0,0 +1,28 @@ +include_directories ( + ${DirectX_D3D10_INCLUDE_DIR} + ${APITRACE_SOURCE_DIR}/dispatch +) + +link_libraries ( + ${DirectX_D3D10_LIBRARY} +) + +set (api d3d10) + +set (targets + tri +) + +foreach (target ${targets}) + add_executable (${api}_${target} WIN32 ${target}.cpp) + set_target_properties (${api}_${target} PROPERTIES OUTPUT_NAME ${target}) + + if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${target}.ref.txt) + add_app_test( + NAME ${api}_${target} + TARGET ${api}_${target} + REF ${target}.ref.txt + ) + endif () +endforeach (target) + diff --git a/apps/d3d10/tri.cpp b/apps/d3d10/tri.cpp new file mode 100644 index 0000000..2b1d3b6 --- /dev/null +++ b/apps/d3d10/tri.cpp @@ -0,0 +1,246 @@ +/************************************************************************** + * + * Copyright 2012 Jose Fonseca + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * 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 THE + * AUTHORS OR COPYRIGHT HOLDERS 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 + +#include + +#include "compat.h" + +#include +#include + + +static IDXGISwapChain* g_pSwapChain = NULL; +static ID3D10Device * g_pDevice = NULL; + + +int WINAPI +WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow) +{ + HRESULT hr; + + WNDCLASSEX wc = { + sizeof(WNDCLASSEX), + CS_CLASSDC, + DefWindowProc, + 0, + 0, + hInstance, + NULL, + NULL, + NULL, + NULL, + "SimpleDX10", + NULL + }; + RegisterClassEx(&wc); + + const int WindowWidth = 250; + const int WindowHeight = 250; + BOOL Windowed = TRUE; + + DWORD dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW; + + RECT rect = {0, 0, WindowWidth, WindowHeight}; + AdjustWindowRect(&rect, dwStyle, FALSE); + + HWND hWnd = CreateWindow(wc.lpszClassName, + "Simple example using DirectX10", + dwStyle, + CW_USEDEFAULT, CW_USEDEFAULT, + rect.right - rect.left, + rect.bottom - rect.top, + NULL, + NULL, + hInstance, + NULL); + if (!hWnd) { + return 1; + } + + ShowWindow(hWnd, SW_SHOW); + + DXGI_SWAP_CHAIN_DESC SwapChainDesc; + ZeroMemory(&SwapChainDesc, sizeof SwapChainDesc); + SwapChainDesc.BufferDesc.Width = WindowWidth; + SwapChainDesc.BufferDesc.Height = WindowHeight; + SwapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;; + SwapChainDesc.BufferDesc.RefreshRate.Numerator = 60; + SwapChainDesc.BufferDesc.RefreshRate.Denominator = 1; + SwapChainDesc.SampleDesc.Quality = 0; + SwapChainDesc.SampleDesc.Count = 1; + SwapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + SwapChainDesc.BufferCount = 2; + SwapChainDesc.OutputWindow = hWnd; + SwapChainDesc.Windowed = true; + + hr = D3D10CreateDeviceAndSwapChain(NULL, + D3D10_DRIVER_TYPE_HARDWARE, + NULL, + 0, + D3D10_SDK_VERSION, + &SwapChainDesc, + &g_pSwapChain, + &g_pDevice); + if (FAILED(hr)) { + return 1; + } + + ID3D10RenderTargetView *pRenderTargetView = NULL; + ID3D10Texture2D* pBackBuffer; + hr = g_pSwapChain->GetBuffer(0, IID_ID3D10Texture2D, (void **)&pBackBuffer); + if (FAILED(hr)) { + return 1; + } + hr = g_pDevice->CreateRenderTargetView(pBackBuffer, NULL, &pRenderTargetView); + if (FAILED(hr)) { + return 1; + } + pBackBuffer->Release(); + + g_pDevice->OMSetRenderTargets(1, &pRenderTargetView, NULL); + + const float clearColor[4] = { 0.3f, 0.1f, 0.3f, 1.0f }; + g_pDevice->ClearRenderTargetView(pRenderTargetView, clearColor); + + const char *szShader = + "struct VS_OUTPUT {\n" + " float4 Pos : SV_POSITION;\n" + " float4 Color : COLOR0;\n" + "};\n" + "\n" + "VS_OUTPUT VertexShader(float4 Pos : POSITION, float4 Color : COLOR) {\n" + " VS_OUTPUT Out;\n" + " Out.Pos = Pos;\n" + " Out.Color = Color;\n" + " return Out;\n" + "}\n" + "\n" + "float4 PixelShader(VS_OUTPUT In) : SV_Target {\n" + " return In.Color;\n" + "}\n" + ; + + ID3D10Blob *pVertexShaderBlob; + hr = D3D10CompileShader(szShader, strlen(szShader), NULL, NULL, NULL, "VertexShader", "vs_4_0", 0, &pVertexShaderBlob, NULL); + + ID3D10VertexShader * pVertexShader; + hr = g_pDevice->CreateVertexShader((DWORD*)pVertexShaderBlob->GetBufferPointer(), pVertexShaderBlob->GetBufferSize(), &pVertexShader); + + struct Vertex { + float x, y, z; + float r, g, b, a; + }; + + D3D10_INPUT_ELEMENT_DESC InputElementDescs[] = { + { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 }, + { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 16, D3D10_INPUT_PER_VERTEX_DATA, 0 } + }; + + ID3D10InputLayout *pVertexLayout = NULL; + hr = g_pDevice->CreateInputLayout(InputElementDescs, + 2, + pVertexShaderBlob->GetBufferPointer(), + pVertexShaderBlob->GetBufferSize(), + &pVertexLayout); + pVertexShaderBlob->Release(); + + g_pDevice->IASetInputLayout(pVertexLayout); + + + ID3D10Blob *pPixelShaderBlob; + hr = D3D10CompileShader(szShader, strlen(szShader), NULL, NULL, NULL, "PixelShader", "ps_4_0", 0, &pPixelShaderBlob, NULL); + + ID3D10PixelShader * pPixelShader; + hr = g_pDevice->CreatePixelShader((DWORD*)pPixelShaderBlob->GetBufferPointer(), pPixelShaderBlob->GetBufferSize(), &pPixelShader); + pPixelShaderBlob->Release(); + + + g_pDevice->VSSetShader(pVertexShader); + g_pDevice->GSSetShader(NULL); + g_pDevice->PSSetShader(pPixelShader); + + static const Vertex vertices[] = { + { -0.9f, -0.9f, 0.5f, 0.8f, 0.0f, 0.0f, 0.1f }, + { 0.9f, -0.9f, 0.5f, 0.0f, 0.9f, 0.0f, 0.1f }, + { 0.0f, 0.9f, 0.5f, 0.0f, 0.0f, 0.7f, 0.1f }, + }; + + D3D10_BUFFER_DESC BufferDesc; + ZeroMemory(&BufferDesc, sizeof BufferDesc); + BufferDesc.Usage = D3D10_USAGE_DYNAMIC; + BufferDesc.ByteWidth = sizeof vertices; + BufferDesc.BindFlags = D3D10_BIND_VERTEX_BUFFER; + BufferDesc.CPUAccessFlags = D3D10_CPU_ACCESS_WRITE; + BufferDesc.MiscFlags = 0; + + ID3D10Buffer *pVertexBuffer; + hr = g_pDevice->CreateBuffer(&BufferDesc, NULL, &pVertexBuffer); + + void *pMap = NULL; + pVertexBuffer->Map(D3D10_MAP_WRITE_DISCARD, 0, &pMap); + memcpy(pMap, vertices, sizeof vertices); + pVertexBuffer->Unmap(); + + UINT Stride = sizeof(Vertex); + UINT Offset = 0; + g_pDevice->IASetVertexBuffers(0, 1, &pVertexBuffer, &Stride, &Offset); + + D3D10_VIEWPORT ViewPort; + ViewPort.TopLeftX = 0; + ViewPort.TopLeftY = 0; + ViewPort.Width = WindowWidth; + ViewPort.Height = WindowHeight; + ViewPort.MinDepth = 0.0f; + ViewPort.MaxDepth = 1.0f; + g_pDevice->RSSetViewports(1, &ViewPort); + + D3D10_RASTERIZER_DESC RasterizerDesc; + ZeroMemory(&RasterizerDesc, sizeof RasterizerDesc); + RasterizerDesc.CullMode = D3D10_CULL_NONE; + RasterizerDesc.FillMode = D3D10_FILL_SOLID; + RasterizerDesc.FrontCounterClockwise = true; + ID3D10RasterizerState* pRasterizerState; + g_pDevice->CreateRasterizerState(&RasterizerDesc, &pRasterizerState); + g_pDevice->RSSetState(pRasterizerState); + + g_pDevice->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); + g_pDevice->Draw(3, 0); + + g_pSwapChain->Present(0, 0); + + g_pSwapChain->Release(); + g_pSwapChain = NULL; + + g_pDevice->Release(); + g_pDevice = NULL; + + DestroyWindow(hWnd); + + return 0; +} + diff --git a/apps/d3d10/tri.ref.txt b/apps/d3d10/tri.ref.txt new file mode 100644 index 0000000..e69de29 -- 2.45.2 From 31b8ad2c38b6697088ab30422bb32d703947c43a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Fri, 4 May 2012 11:28:05 +0100 Subject: [PATCH 07/16] Fixup d3d10 test. --- app_driver.py | 1 + apps/d3d10/CMakeLists.txt | 2 +- apps/d3d10/tri.cpp | 80 +++++++++++++++++++++++++++++---------- 3 files changed, 62 insertions(+), 21 deletions(-) diff --git a/app_driver.py b/app_driver.py index 67098d8..8dd7b5e 100755 --- a/app_driver.py +++ b/app_driver.py @@ -178,6 +178,7 @@ class AppDriver(Driver): 'd3d7': 'd3d7', 'd3d8': 'd3d8', 'd3d9': 'd3d9', + 'd3d10': 'd3d10', } api_retrace_map = { diff --git a/apps/d3d10/CMakeLists.txt b/apps/d3d10/CMakeLists.txt index e94e463..6de25e7 100644 --- a/apps/d3d10/CMakeLists.txt +++ b/apps/d3d10/CMakeLists.txt @@ -14,7 +14,7 @@ set (targets ) foreach (target ${targets}) - add_executable (${api}_${target} WIN32 ${target}.cpp) + add_executable (${api}_${target} ${target}.cpp) set_target_properties (${api}_${target} PROPERTIES OUTPUT_NAME ${target}) if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${target}.ref.txt) diff --git a/apps/d3d10/tri.cpp b/apps/d3d10/tri.cpp index 2b1d3b6..1539797 100644 --- a/apps/d3d10/tri.cpp +++ b/apps/d3d10/tri.cpp @@ -24,8 +24,10 @@ **************************************************************************/ -#include +#include +#include +#include #include #include "compat.h" @@ -38,11 +40,11 @@ static IDXGISwapChain* g_pSwapChain = NULL; static ID3D10Device * g_pDevice = NULL; -int WINAPI -WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow) -{ +int main(int argc, char *argv[]){ HRESULT hr; + HINSTANCE hInstance = GetModuleHandle(NULL); + WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, @@ -101,7 +103,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdSh hr = D3D10CreateDeviceAndSwapChain(NULL, D3D10_DRIVER_TYPE_HARDWARE, NULL, - 0, + D3D10_CREATE_DEVICE_DEBUG, D3D10_SDK_VERSION, &SwapChainDesc, &g_pSwapChain, @@ -133,32 +135,41 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdSh " float4 Color : COLOR0;\n" "};\n" "\n" - "VS_OUTPUT VertexShader(float4 Pos : POSITION, float4 Color : COLOR) {\n" + "VS_OUTPUT VS(float4 Pos : POSITION, float4 Color : COLOR) {\n" " VS_OUTPUT Out;\n" " Out.Pos = Pos;\n" " Out.Color = Color;\n" " return Out;\n" "}\n" "\n" - "float4 PixelShader(VS_OUTPUT In) : SV_Target {\n" + "float4 PS(VS_OUTPUT In) : SV_Target {\n" " return In.Color;\n" "}\n" ; - ID3D10Blob *pVertexShaderBlob; - hr = D3D10CompileShader(szShader, strlen(szShader), NULL, NULL, NULL, "VertexShader", "vs_4_0", 0, &pVertexShaderBlob, NULL); + ID3D10Blob *pVertexShaderBlob = NULL; + ID3D10Blob *pErrorMsgs = NULL; + + hr = D3D10CompileShader(szShader, strlen(szShader), NULL, NULL, NULL, "VS", "vs_4_0", 0, &pVertexShaderBlob, &pErrorMsgs); + if (pErrorMsgs) { + fprintf(stderr, "%s\n", pErrorMsgs->GetBufferPointer()); + pErrorMsgs->Release(); + } + if (FAILED(hr)) { + return 1; + } ID3D10VertexShader * pVertexShader; hr = g_pDevice->CreateVertexShader((DWORD*)pVertexShaderBlob->GetBufferPointer(), pVertexShaderBlob->GetBufferSize(), &pVertexShader); struct Vertex { - float x, y, z; - float r, g, b, a; + float position[4]; + float color[4]; }; D3D10_INPUT_ELEMENT_DESC InputElementDescs[] = { - { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 }, - { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 16, D3D10_INPUT_PER_VERTEX_DATA, 0 } + { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, offsetof(Vertex, position), D3D10_INPUT_PER_VERTEX_DATA, 0 }, + { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, offsetof(Vertex, color), D3D10_INPUT_PER_VERTEX_DATA, 0 } }; ID3D10InputLayout *pVertexLayout = NULL; @@ -172,8 +183,16 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdSh g_pDevice->IASetInputLayout(pVertexLayout); - ID3D10Blob *pPixelShaderBlob; - hr = D3D10CompileShader(szShader, strlen(szShader), NULL, NULL, NULL, "PixelShader", "ps_4_0", 0, &pPixelShaderBlob, NULL); + ID3D10Blob *pPixelShaderBlob = NULL; + pErrorMsgs = NULL; + hr = D3D10CompileShader(szShader, strlen(szShader), NULL, NULL, NULL, "PS", "ps_4_0", 0, &pPixelShaderBlob, &pErrorMsgs); + if (pErrorMsgs) { + fprintf(stderr, "%s\n", pErrorMsgs->GetBufferPointer()); + pErrorMsgs->Release(); + } + if (FAILED(hr)) { + return 1; + } ID3D10PixelShader * pPixelShader; hr = g_pDevice->CreatePixelShader((DWORD*)pPixelShaderBlob->GetBufferPointer(), pPixelShaderBlob->GetBufferSize(), &pPixelShader); @@ -181,13 +200,12 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdSh g_pDevice->VSSetShader(pVertexShader); - g_pDevice->GSSetShader(NULL); g_pDevice->PSSetShader(pPixelShader); static const Vertex vertices[] = { - { -0.9f, -0.9f, 0.5f, 0.8f, 0.0f, 0.0f, 0.1f }, - { 0.9f, -0.9f, 0.5f, 0.0f, 0.9f, 0.0f, 0.1f }, - { 0.0f, 0.9f, 0.5f, 0.0f, 0.0f, 0.7f, 0.1f }, + { { -0.9f, -0.9f, 0.5f, 1.0f}, { 0.8f, 0.0f, 0.0f, 0.1f } }, + { { 0.9f, -0.9f, 0.5f, 1.0f}, { 0.0f, 0.9f, 0.0f, 0.1f } }, + { { 0.0f, 0.9f, 0.5f, 1.0f}, { 0.0f, 0.0f, 0.7f, 0.1f } }, }; D3D10_BUFFER_DESC BufferDesc; @@ -224,7 +242,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdSh RasterizerDesc.CullMode = D3D10_CULL_NONE; RasterizerDesc.FillMode = D3D10_FILL_SOLID; RasterizerDesc.FrontCounterClockwise = true; - ID3D10RasterizerState* pRasterizerState; + ID3D10RasterizerState* pRasterizerState = NULL; g_pDevice->CreateRasterizerState(&RasterizerDesc, &pRasterizerState); g_pDevice->RSSetState(pRasterizerState); @@ -233,6 +251,28 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdSh g_pSwapChain->Present(0, 0); + + ID3D10Buffer *pNullBuffer = NULL; + UINT NullStride = 0; + UINT NullOffset = 0; + g_pDevice->IASetVertexBuffers(0, 1, &pNullBuffer, &NullStride, &NullOffset); + pVertexBuffer->Release(); + + g_pDevice->OMSetRenderTargets(0, NULL, NULL); + pRenderTargetView->Release(); + + g_pDevice->IASetInputLayout(NULL); + pVertexLayout->Release(); + + g_pDevice->VSSetShader(NULL); + pVertexShader->Release(); + + g_pDevice->PSSetShader(NULL); + pPixelShader->Release(); + + g_pDevice->RSSetState(NULL); + pRasterizerState->Release(); + g_pSwapChain->Release(); g_pSwapChain = NULL; -- 2.45.2 From 0e029cc72de2c8e57fed0ba4eb2c2a9cc4c7a0f4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Fri, 4 May 2012 11:35:48 +0100 Subject: [PATCH 08/16] Precompile d3d10 shader. --- apps/d3d10/tri.cpp | 56 +++---------------- apps/d3d10/tri.fx | 15 ++++++ apps/d3d10/tri_ps.h | 112 ++++++++++++++++++++++++++++++++++++++ apps/d3d10/tri_vs.h | 128 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 263 insertions(+), 48 deletions(-) create mode 100644 apps/d3d10/tri.fx create mode 100644 apps/d3d10/tri_ps.h create mode 100644 apps/d3d10/tri_vs.h diff --git a/apps/d3d10/tri.cpp b/apps/d3d10/tri.cpp index 1539797..4ea8b93 100644 --- a/apps/d3d10/tri.cpp +++ b/apps/d3d10/tri.cpp @@ -33,7 +33,9 @@ #include "compat.h" #include -#include + +#include "tri_vs.h" +#include "tri_ps.h" static IDXGISwapChain* g_pSwapChain = NULL; @@ -129,38 +131,8 @@ int main(int argc, char *argv[]){ const float clearColor[4] = { 0.3f, 0.1f, 0.3f, 1.0f }; g_pDevice->ClearRenderTargetView(pRenderTargetView, clearColor); - const char *szShader = - "struct VS_OUTPUT {\n" - " float4 Pos : SV_POSITION;\n" - " float4 Color : COLOR0;\n" - "};\n" - "\n" - "VS_OUTPUT VS(float4 Pos : POSITION, float4 Color : COLOR) {\n" - " VS_OUTPUT Out;\n" - " Out.Pos = Pos;\n" - " Out.Color = Color;\n" - " return Out;\n" - "}\n" - "\n" - "float4 PS(VS_OUTPUT In) : SV_Target {\n" - " return In.Color;\n" - "}\n" - ; - - ID3D10Blob *pVertexShaderBlob = NULL; - ID3D10Blob *pErrorMsgs = NULL; - - hr = D3D10CompileShader(szShader, strlen(szShader), NULL, NULL, NULL, "VS", "vs_4_0", 0, &pVertexShaderBlob, &pErrorMsgs); - if (pErrorMsgs) { - fprintf(stderr, "%s\n", pErrorMsgs->GetBufferPointer()); - pErrorMsgs->Release(); - } - if (FAILED(hr)) { - return 1; - } - ID3D10VertexShader * pVertexShader; - hr = g_pDevice->CreateVertexShader((DWORD*)pVertexShaderBlob->GetBufferPointer(), pVertexShaderBlob->GetBufferSize(), &pVertexShader); + hr = g_pDevice->CreateVertexShader(g_VS, sizeof g_VS, &pVertexShader); struct Vertex { float position[4]; @@ -175,30 +147,18 @@ int main(int argc, char *argv[]){ ID3D10InputLayout *pVertexLayout = NULL; hr = g_pDevice->CreateInputLayout(InputElementDescs, 2, - pVertexShaderBlob->GetBufferPointer(), - pVertexShaderBlob->GetBufferSize(), + g_VS, + sizeof g_VS, &pVertexLayout); - pVertexShaderBlob->Release(); g_pDevice->IASetInputLayout(pVertexLayout); - - ID3D10Blob *pPixelShaderBlob = NULL; - pErrorMsgs = NULL; - hr = D3D10CompileShader(szShader, strlen(szShader), NULL, NULL, NULL, "PS", "ps_4_0", 0, &pPixelShaderBlob, &pErrorMsgs); - if (pErrorMsgs) { - fprintf(stderr, "%s\n", pErrorMsgs->GetBufferPointer()); - pErrorMsgs->Release(); - } + ID3D10PixelShader * pPixelShader; + hr = g_pDevice->CreatePixelShader(g_PS, sizeof g_PS, &pPixelShader); if (FAILED(hr)) { return 1; } - ID3D10PixelShader * pPixelShader; - hr = g_pDevice->CreatePixelShader((DWORD*)pPixelShaderBlob->GetBufferPointer(), pPixelShaderBlob->GetBufferSize(), &pPixelShader); - pPixelShaderBlob->Release(); - - g_pDevice->VSSetShader(pVertexShader); g_pDevice->PSSetShader(pPixelShader); diff --git a/apps/d3d10/tri.fx b/apps/d3d10/tri.fx new file mode 100644 index 0000000..c221f9d --- /dev/null +++ b/apps/d3d10/tri.fx @@ -0,0 +1,15 @@ +struct VS_OUTPUT { + float4 Pos : SV_POSITION; + float4 Color : COLOR0; +}; + +VS_OUTPUT VS(float4 Pos : POSITION, float4 Color : COLOR) { + VS_OUTPUT Out; + Out.Pos = Pos; + Out.Color = Color; + return Out; +} + +float4 PS(VS_OUTPUT In) : SV_Target { + return In.Color; +} diff --git a/apps/d3d10/tri_ps.h b/apps/d3d10/tri_ps.h new file mode 100644 index 0000000..0c9302a --- /dev/null +++ b/apps/d3d10/tri_ps.h @@ -0,0 +1,112 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// +// fxc /T ps_4_0 /E PS /Fh apps\d3d10\tri_ps.h apps\d3d10\tri.fx +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_POSITION 0 xyzw 0 POS float +// COLOR 0 xyzw 1 NONE float xyzw +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_4_0 +dcl_input_ps linear v1.xyzw +dcl_output o0.xyzw +mov o0.xyzw, v1.xyzw +ret +// Approximately 2 instruction slots used +#endif + +const BYTE g_PS[] = +{ + 68, 88, 66, 67, 150, 24, + 98, 193, 223, 185, 25, 11, + 105, 3, 199, 138, 10, 93, + 81, 50, 1, 0, 0, 0, + 208, 1, 0, 0, 5, 0, + 0, 0, 52, 0, 0, 0, + 140, 0, 0, 0, 224, 0, + 0, 0, 20, 1, 0, 0, + 84, 1, 0, 0, 82, 68, + 69, 70, 80, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 4, + 255, 255, 0, 1, 0, 0, + 28, 0, 0, 0, 77, 105, + 99, 114, 111, 115, 111, 102, + 116, 32, 40, 82, 41, 32, + 72, 76, 83, 76, 32, 83, + 104, 97, 100, 101, 114, 32, + 67, 111, 109, 112, 105, 108, + 101, 114, 32, 57, 46, 50, + 57, 46, 57, 53, 50, 46, + 51, 49, 49, 49, 0, 171, + 171, 171, 73, 83, 71, 78, + 76, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 15, 15, 0, 0, + 83, 86, 95, 80, 79, 83, + 73, 84, 73, 79, 78, 0, + 67, 79, 76, 79, 82, 0, + 171, 171, 79, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 83, 86, 95, 84, 97, 114, + 103, 101, 116, 0, 171, 171, + 83, 72, 68, 82, 56, 0, + 0, 0, 64, 0, 0, 0, + 14, 0, 0, 0, 98, 16, + 0, 3, 242, 16, 16, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 242, 32, 16, 0, + 0, 0, 0, 0, 70, 30, + 16, 0, 1, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 116, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0 +}; diff --git a/apps/d3d10/tri_vs.h b/apps/d3d10/tri_vs.h new file mode 100644 index 0000000..478e5e2 --- /dev/null +++ b/apps/d3d10/tri_vs.h @@ -0,0 +1,128 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// +// fxc /T vs_4_0 /E VS /Fh apps\d3d10\tri_vs.h apps\d3d10\tri.fx +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// POSITION 0 xyzw 0 NONE float xyzw +// COLOR 0 xyzw 1 NONE float xyzw +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_POSITION 0 xyzw 0 POS float xyzw +// COLOR 0 xyzw 1 NONE float xyzw +// +vs_4_0 +dcl_input v0.xyzw +dcl_input v1.xyzw +dcl_output_siv o0.xyzw, position +dcl_output o1.xyzw +mov o0.xyzw, v0.xyzw +mov o1.xyzw, v1.xyzw +ret +// Approximately 3 instruction slots used +#endif + +const BYTE g_VS[] = +{ + 68, 88, 66, 67, 190, 171, + 186, 20, 44, 105, 95, 129, + 137, 204, 223, 72, 251, 159, + 126, 176, 1, 0, 0, 0, + 28, 2, 0, 0, 5, 0, + 0, 0, 52, 0, 0, 0, + 140, 0, 0, 0, 220, 0, + 0, 0, 48, 1, 0, 0, + 160, 1, 0, 0, 82, 68, + 69, 70, 80, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 4, + 254, 255, 0, 1, 0, 0, + 28, 0, 0, 0, 77, 105, + 99, 114, 111, 115, 111, 102, + 116, 32, 40, 82, 41, 32, + 72, 76, 83, 76, 32, 83, + 104, 97, 100, 101, 114, 32, + 67, 111, 109, 112, 105, 108, + 101, 114, 32, 57, 46, 50, + 57, 46, 57, 53, 50, 46, + 51, 49, 49, 49, 0, 171, + 171, 171, 73, 83, 71, 78, + 72, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 15, 0, 0, + 65, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 15, 15, 0, 0, + 80, 79, 83, 73, 84, 73, + 79, 78, 0, 67, 79, 76, + 79, 82, 0, 171, 79, 83, + 71, 78, 76, 0, 0, 0, + 2, 0, 0, 0, 8, 0, + 0, 0, 56, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 68, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 15, 0, + 0, 0, 83, 86, 95, 80, + 79, 83, 73, 84, 73, 79, + 78, 0, 67, 79, 76, 79, + 82, 0, 171, 171, 83, 72, + 68, 82, 104, 0, 0, 0, + 64, 0, 1, 0, 26, 0, + 0, 0, 95, 0, 0, 3, + 242, 16, 16, 0, 0, 0, + 0, 0, 95, 0, 0, 3, + 242, 16, 16, 0, 1, 0, + 0, 0, 103, 0, 0, 4, + 242, 32, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 242, 32, + 16, 0, 0, 0, 0, 0, + 70, 30, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 242, 32, 16, 0, 1, 0, + 0, 0, 70, 30, 16, 0, + 1, 0, 0, 0, 62, 0, + 0, 1, 83, 84, 65, 84, + 116, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 +}; -- 2.45.2 From e3171a80329d21614fb50990c56621b968ece117 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Tue, 8 May 2012 19:26:03 +0100 Subject: [PATCH 09/16] Cleanup d3d10 test. --- apps/d3d10/tri.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/d3d10/tri.cpp b/apps/d3d10/tri.cpp index 4ea8b93..737d27d 100644 --- a/apps/d3d10/tri.cpp +++ b/apps/d3d10/tri.cpp @@ -133,14 +133,17 @@ int main(int argc, char *argv[]){ ID3D10VertexShader * pVertexShader; hr = g_pDevice->CreateVertexShader(g_VS, sizeof g_VS, &pVertexShader); + if (FAILED(hr)) { + return 1; + } struct Vertex { float position[4]; float color[4]; }; - D3D10_INPUT_ELEMENT_DESC InputElementDescs[] = { - { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, offsetof(Vertex, position), D3D10_INPUT_PER_VERTEX_DATA, 0 }, + static const D3D10_INPUT_ELEMENT_DESC InputElementDescs[] = { + { "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, offsetof(Vertex, position), D3D10_INPUT_PER_VERTEX_DATA, 0 }, { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, offsetof(Vertex, color), D3D10_INPUT_PER_VERTEX_DATA, 0 } }; @@ -150,6 +153,9 @@ int main(int argc, char *argv[]){ g_VS, sizeof g_VS, &pVertexLayout); + if (FAILED(hr)) { + return 1; + } g_pDevice->IASetInputLayout(pVertexLayout); @@ -178,6 +184,9 @@ int main(int argc, char *argv[]){ ID3D10Buffer *pVertexBuffer; hr = g_pDevice->CreateBuffer(&BufferDesc, NULL, &pVertexBuffer); + if (FAILED(hr)) { + return 1; + } void *pMap = NULL; pVertexBuffer->Map(D3D10_MAP_WRITE_DISCARD, 0, &pMap); -- 2.45.2 From 009c029e5360c8ae668b21caffeb275639ede8a7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Tue, 8 May 2012 22:26:17 +0100 Subject: [PATCH 10/16] d3d11 test. --- app_driver.py | 1 + apps/CMakeLists.txt | 4 + apps/d3d10/CMakeLists.txt | 2 +- apps/d3d11/CMakeLists.txt | 29 +++++ apps/d3d11/tri.cpp | 260 ++++++++++++++++++++++++++++++++++++++ apps/d3d11/tri.ref.txt | 0 6 files changed, 295 insertions(+), 1 deletion(-) create mode 100644 apps/d3d11/CMakeLists.txt create mode 100644 apps/d3d11/tri.cpp create mode 100644 apps/d3d11/tri.ref.txt diff --git a/app_driver.py b/app_driver.py index 8dd7b5e..9d3b48b 100755 --- a/app_driver.py +++ b/app_driver.py @@ -179,6 +179,7 @@ class AppDriver(Driver): 'd3d8': 'd3d8', 'd3d9': 'd3d9', 'd3d10': 'd3d10', + 'd3d11': 'd3d11', } api_retrace_map = { diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index b824e2b..7218458 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -32,6 +32,10 @@ if (EGL_FOUND) add_subdirectory (egl) endif () +if (DirectX_D3D11_FOUND) + add_subdirectory (d3d11) +endif () + if (DirectX_D3D10_FOUND) add_subdirectory (d3d10) endif () diff --git a/apps/d3d10/CMakeLists.txt b/apps/d3d10/CMakeLists.txt index 6de25e7..3664f5f 100644 --- a/apps/d3d10/CMakeLists.txt +++ b/apps/d3d10/CMakeLists.txt @@ -1,6 +1,6 @@ include_directories ( - ${DirectX_D3D10_INCLUDE_DIR} ${APITRACE_SOURCE_DIR}/dispatch + ${DirectX_D3D10_INCLUDE_DIR} ) link_libraries ( diff --git a/apps/d3d11/CMakeLists.txt b/apps/d3d11/CMakeLists.txt new file mode 100644 index 0000000..5517cd4 --- /dev/null +++ b/apps/d3d11/CMakeLists.txt @@ -0,0 +1,29 @@ +include_directories ( + ${CMAKE_CURRENT_SOURCE_DIR}/../d3d10 + ${APITRACE_SOURCE_DIR}/dispatch + ${DirectX_D3D11_INCLUDE_DIR} +) + +link_libraries ( + ${DirectX_D3D11_LIBRARY} +) + +set (api d3d11) + +set (targets + tri +) + +foreach (target ${targets}) + add_executable (${api}_${target} ${target}.cpp) + set_target_properties (${api}_${target} PROPERTIES OUTPUT_NAME ${target}) + + if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${target}.ref.txt) + add_app_test( + NAME ${api}_${target} + TARGET ${api}_${target} + REF ${target}.ref.txt + ) + endif () +endforeach (target) + diff --git a/apps/d3d11/tri.cpp b/apps/d3d11/tri.cpp new file mode 100644 index 0000000..1649bbf --- /dev/null +++ b/apps/d3d11/tri.cpp @@ -0,0 +1,260 @@ +/************************************************************************** + * + * Copyright 2012 Jose Fonseca + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * 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 THE + * AUTHORS OR COPYRIGHT HOLDERS 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 +#include + +#include +#include + +#include "compat.h" + +#include + +#include "tri_vs.h" +#include "tri_ps.h" + + +static IDXGISwapChain* g_pSwapChain = NULL; +static ID3D11Device * g_pDevice = NULL; +static ID3D11DeviceContext * g_pDeviceContext = NULL; + + +int main(int argc, char *argv[]){ + HRESULT hr; + + HINSTANCE hInstance = GetModuleHandle(NULL); + + WNDCLASSEX wc = { + sizeof(WNDCLASSEX), + CS_CLASSDC, + DefWindowProc, + 0, + 0, + hInstance, + NULL, + NULL, + NULL, + NULL, + "SimpleDX10", + NULL + }; + RegisterClassEx(&wc); + + const int WindowWidth = 250; + const int WindowHeight = 250; + BOOL Windowed = TRUE; + + DWORD dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW; + + RECT rect = {0, 0, WindowWidth, WindowHeight}; + AdjustWindowRect(&rect, dwStyle, FALSE); + + HWND hWnd = CreateWindow(wc.lpszClassName, + "Simple example using DirectX10", + dwStyle, + CW_USEDEFAULT, CW_USEDEFAULT, + rect.right - rect.left, + rect.bottom - rect.top, + NULL, + NULL, + hInstance, + NULL); + if (!hWnd) { + return 1; + } + + ShowWindow(hWnd, SW_SHOW); + + DXGI_SWAP_CHAIN_DESC SwapChainDesc; + ZeroMemory(&SwapChainDesc, sizeof SwapChainDesc); + SwapChainDesc.BufferDesc.Width = WindowWidth; + SwapChainDesc.BufferDesc.Height = WindowHeight; + SwapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;; + SwapChainDesc.BufferDesc.RefreshRate.Numerator = 60; + SwapChainDesc.BufferDesc.RefreshRate.Denominator = 1; + SwapChainDesc.SampleDesc.Quality = 0; + SwapChainDesc.SampleDesc.Count = 1; + SwapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + SwapChainDesc.BufferCount = 2; + SwapChainDesc.OutputWindow = hWnd; + SwapChainDesc.Windowed = true; + + hr = D3D11CreateDeviceAndSwapChain(NULL, /* pAdapter */ + D3D_DRIVER_TYPE_HARDWARE, + NULL, /* Software */ + D3D11_CREATE_DEVICE_DEBUG, + NULL, + 0, + D3D11_SDK_VERSION, + &SwapChainDesc, + &g_pSwapChain, + &g_pDevice, + NULL, /* pFeatureLevel */ + &g_pDeviceContext); /* ppImmediateContext */ + if (FAILED(hr)) { + return 1; + } + + ID3D11RenderTargetView *pRenderTargetView = NULL; + ID3D11Texture2D* pBackBuffer; + hr = g_pSwapChain->GetBuffer(0, IID_ID3D11Texture2D, (void **)&pBackBuffer); + if (FAILED(hr)) { + return 1; + } + hr = g_pDevice->CreateRenderTargetView(pBackBuffer, NULL, &pRenderTargetView); + if (FAILED(hr)) { + return 1; + } + pBackBuffer->Release(); + + g_pDeviceContext->OMSetRenderTargets(1, &pRenderTargetView, NULL); + + const float clearColor[4] = { 0.3f, 0.1f, 0.3f, 1.0f }; + g_pDeviceContext->ClearRenderTargetView(pRenderTargetView, clearColor); + + ID3D11VertexShader * pVertexShader; + hr = g_pDevice->CreateVertexShader(g_VS, sizeof g_VS, NULL, &pVertexShader); + if (FAILED(hr)) { + return 1; + } + + struct Vertex { + float position[4]; + float color[4]; + }; + + static const D3D11_INPUT_ELEMENT_DESC InputElementDescs[] = { + { "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, offsetof(Vertex, position), D3D11_INPUT_PER_VERTEX_DATA, 0 }, + { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, offsetof(Vertex, color), D3D11_INPUT_PER_VERTEX_DATA, 0 } + }; + + ID3D11InputLayout *pVertexLayout = NULL; + hr = g_pDevice->CreateInputLayout(InputElementDescs, + 2, + g_VS, + sizeof g_VS, + &pVertexLayout); + if (FAILED(hr)) { + return 1; + } + + g_pDeviceContext->IASetInputLayout(pVertexLayout); + + ID3D11PixelShader * pPixelShader; + hr = g_pDevice->CreatePixelShader(g_PS, sizeof g_PS, NULL, &pPixelShader); + if (FAILED(hr)) { + return 1; + } + + g_pDeviceContext->VSSetShader(pVertexShader, NULL, 0); + g_pDeviceContext->PSSetShader(pPixelShader, NULL, 0); + + static const Vertex vertices[] = { + { { -0.9f, -0.9f, 0.5f, 1.0f}, { 0.8f, 0.0f, 0.0f, 0.1f } }, + { { 0.9f, -0.9f, 0.5f, 1.0f}, { 0.0f, 0.9f, 0.0f, 0.1f } }, + { { 0.0f, 0.9f, 0.5f, 1.0f}, { 0.0f, 0.0f, 0.7f, 0.1f } }, + }; + + D3D11_BUFFER_DESC BufferDesc; + ZeroMemory(&BufferDesc, sizeof BufferDesc); + BufferDesc.Usage = D3D11_USAGE_DYNAMIC; + BufferDesc.ByteWidth = sizeof vertices; + BufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; + BufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + BufferDesc.MiscFlags = 0; + + D3D11_SUBRESOURCE_DATA BufferData; + BufferData.pSysMem = vertices; + BufferData.SysMemPitch = 0; + BufferData.SysMemSlicePitch = 0; + + ID3D11Buffer *pVertexBuffer; + hr = g_pDevice->CreateBuffer(&BufferDesc, &BufferData, &pVertexBuffer); + if (FAILED(hr)) { + return 1; + } + + UINT Stride = sizeof(Vertex); + UINT Offset = 0; + g_pDeviceContext->IASetVertexBuffers(0, 1, &pVertexBuffer, &Stride, &Offset); + + D3D11_VIEWPORT ViewPort; + ViewPort.TopLeftX = 0; + ViewPort.TopLeftY = 0; + ViewPort.Width = WindowWidth; + ViewPort.Height = WindowHeight; + ViewPort.MinDepth = 0.0f; + ViewPort.MaxDepth = 1.0f; + g_pDeviceContext->RSSetViewports(1, &ViewPort); + + D3D11_RASTERIZER_DESC RasterizerDesc; + ZeroMemory(&RasterizerDesc, sizeof RasterizerDesc); + RasterizerDesc.CullMode = D3D11_CULL_NONE; + RasterizerDesc.FillMode = D3D11_FILL_SOLID; + RasterizerDesc.FrontCounterClockwise = true; + ID3D11RasterizerState* pRasterizerState = NULL; + g_pDevice->CreateRasterizerState(&RasterizerDesc, &pRasterizerState); + g_pDeviceContext->RSSetState(pRasterizerState); + + g_pDeviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); + g_pDeviceContext->Draw(3, 0); + + g_pSwapChain->Present(0, 0); + + + ID3D11Buffer *pNullBuffer = NULL; + UINT NullStride = 0; + UINT NullOffset = 0; + g_pDeviceContext->IASetVertexBuffers(0, 1, &pNullBuffer, &NullStride, &NullOffset); + pVertexBuffer->Release(); + + g_pDeviceContext->OMSetRenderTargets(0, NULL, NULL); + pRenderTargetView->Release(); + + g_pDeviceContext->IASetInputLayout(NULL); + pVertexLayout->Release(); + + g_pDeviceContext->VSSetShader(NULL, NULL, 0); + pVertexShader->Release(); + + g_pDeviceContext->PSSetShader(NULL, NULL, 0); + pPixelShader->Release(); + + g_pDeviceContext->RSSetState(NULL); + pRasterizerState->Release(); + + g_pSwapChain->Release(); + g_pSwapChain = NULL; + + g_pDevice->Release(); + g_pDevice = NULL; + + DestroyWindow(hWnd); + + return 0; +} + diff --git a/apps/d3d11/tri.ref.txt b/apps/d3d11/tri.ref.txt new file mode 100644 index 0000000..e69de29 -- 2.45.2 From 1865e971eb6f6ebbf43a0d21bc8486f2476d1e71 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Wed, 9 May 2012 09:25:19 +0100 Subject: [PATCH 11/16] Make OpenGL/GLUT/GLEW optional. --- CMakeLists.txt | 10 +++++----- apps/CMakeLists.txt | 2 +- cmake/FindGLEW.cmake | 8 ++++++++ 3 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 cmake/FindGLEW.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 67bbb3c..c6a8a59 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,8 +14,10 @@ endif () include (FindPkgConfig) +set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) + if (APITRACE_SOURCE_DIR) - set (CMAKE_MODULE_PATH ${APITRACE_SOURCE_DIR}/cmake) + set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${APITRACE_SOURCE_DIR}/cmake) find_package (DirectX) endif () @@ -29,11 +31,9 @@ endif (NOT CMAKE_BUILD_TYPE) include (CMakeParseArguments) -find_package (OpenGL REQUIRED) +find_package (OpenGL) find_package (GLUT) - -find_path (GLEW_INCLUDE_DIR GL/glew.h /usr/include/GL) -find_library (GLEW_glew_LIBRARY GLEW /usr/lib) +find_package (GLEW) if (NOT WIN32) pkg_check_modules (EGL egl) diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index 7218458..b622505 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -24,7 +24,7 @@ function (ADD_APP_TEST) ) endfunction () -if (OPENGL_FOUND) +if (OPENGL_FOUND AND GLEW_FOUND AND GLUT_FOUND) add_subdirectory (gl) endif () diff --git a/cmake/FindGLEW.cmake b/cmake/FindGLEW.cmake new file mode 100644 index 0000000..8fe9d98 --- /dev/null +++ b/cmake/FindGLEW.cmake @@ -0,0 +1,8 @@ +find_path (GLEW_INCLUDE_DIR GL/glew.h) +find_library (GLEW_glew_LIBRARY GLEW) + +if (GLEW_INCLUDE_DIR AND GLEW_glew_LIBRARY) + set (GLEW_FOUND 1) +endif () + +mark_as_advanced (GLEW_FOUND) -- 2.45.2 From 398f7b9536d5a7fbc4236088d59407d79830d428 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Wed, 9 May 2012 09:26:35 +0100 Subject: [PATCH 12/16] Put HLSL shaders into their own directory. --- apps/CMakeLists.txt | 4 ++++ apps/d3d10/CMakeLists.txt | 1 + apps/d3d11/CMakeLists.txt | 2 +- apps/hlsl/CMakeLists.txt | 13 +++++++++++++ apps/{d3d10 => hlsl}/tri.fx | 0 apps/{d3d10 => hlsl}/tri_ps.h | 0 apps/{d3d10 => hlsl}/tri_vs.h | 0 7 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 apps/hlsl/CMakeLists.txt rename apps/{d3d10 => hlsl}/tri.fx (100%) rename apps/{d3d10 => hlsl}/tri_ps.h (100%) rename apps/{d3d10 => hlsl}/tri_vs.h (100%) diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index b622505..6412f68 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -32,6 +32,10 @@ if (EGL_FOUND) add_subdirectory (egl) endif () +if (DirectX_FXC_EXECUTABLE) + add_subdirectory (hlsl) +endif () + if (DirectX_D3D11_FOUND) add_subdirectory (d3d11) endif () diff --git a/apps/d3d10/CMakeLists.txt b/apps/d3d10/CMakeLists.txt index 3664f5f..a9da968 100644 --- a/apps/d3d10/CMakeLists.txt +++ b/apps/d3d10/CMakeLists.txt @@ -1,4 +1,5 @@ include_directories ( + ${CMAKE_CURRENT_SOURCE_DIR}/../hlsl ${APITRACE_SOURCE_DIR}/dispatch ${DirectX_D3D10_INCLUDE_DIR} ) diff --git a/apps/d3d11/CMakeLists.txt b/apps/d3d11/CMakeLists.txt index 5517cd4..91c3c78 100644 --- a/apps/d3d11/CMakeLists.txt +++ b/apps/d3d11/CMakeLists.txt @@ -1,5 +1,5 @@ include_directories ( - ${CMAKE_CURRENT_SOURCE_DIR}/../d3d10 + ${CMAKE_CURRENT_SOURCE_DIR}/../hlsl ${APITRACE_SOURCE_DIR}/dispatch ${DirectX_D3D11_INCLUDE_DIR} ) diff --git a/apps/hlsl/CMakeLists.txt b/apps/hlsl/CMakeLists.txt new file mode 100644 index 0000000..2bf14fe --- /dev/null +++ b/apps/hlsl/CMakeLists.txt @@ -0,0 +1,13 @@ +add_custom_command ( + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/tri_vs.h + COMMAND ${DirectX_FXC_EXECUTABLE} /nologo /T vs_4_0 /E VS /Fh ${CMAKE_CURRENT_SOURCE_DIR}/tri_vs.h ${CMAKE_CURRENT_SOURCE_DIR}/tri.fx + DEPENDS tri.fx +) + +add_custom_command ( + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/tri_ps.h + COMMAND ${DirectX_FXC_EXECUTABLE} /nologo /T ps_4_0 /E PS /Fh ${CMAKE_CURRENT_SOURCE_DIR}/tri_ps.h ${CMAKE_CURRENT_SOURCE_DIR}/tri.fx + DEPENDS tri.fx +) + +add_custom_target (hlsl DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tri_vs.h ${CMAKE_CURRENT_SOURCE_DIR}/tri_ps.h) diff --git a/apps/d3d10/tri.fx b/apps/hlsl/tri.fx similarity index 100% rename from apps/d3d10/tri.fx rename to apps/hlsl/tri.fx diff --git a/apps/d3d10/tri_ps.h b/apps/hlsl/tri_ps.h similarity index 100% rename from apps/d3d10/tri_ps.h rename to apps/hlsl/tri_ps.h diff --git a/apps/d3d10/tri_vs.h b/apps/hlsl/tri_vs.h similarity index 100% rename from apps/d3d10/tri_vs.h rename to apps/hlsl/tri_vs.h -- 2.45.2 From eda15ce2928c7ea9560d078581b7321b37b763cc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Wed, 9 May 2012 10:28:25 +0100 Subject: [PATCH 13/16] d3d10.1 sample. --- app_driver.py | 1 + apps/CMakeLists.txt | 4 + apps/d3d10_1/CMakeLists.txt | 29 ++++ apps/d3d10_1/tri.cpp | 256 ++++++++++++++++++++++++++++++++++++ apps/d3d10_1/tri.ref.txt | 0 5 files changed, 290 insertions(+) create mode 100644 apps/d3d10_1/CMakeLists.txt create mode 100644 apps/d3d10_1/tri.cpp create mode 100644 apps/d3d10_1/tri.ref.txt diff --git a/app_driver.py b/app_driver.py index 9d3b48b..9d7a9f0 100755 --- a/app_driver.py +++ b/app_driver.py @@ -179,6 +179,7 @@ class AppDriver(Driver): 'd3d8': 'd3d8', 'd3d9': 'd3d9', 'd3d10': 'd3d10', + 'd3d10_1': 'd3d10_1', 'd3d11': 'd3d11', } diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index 6412f68..9b1e886 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -40,6 +40,10 @@ if (DirectX_D3D11_FOUND) add_subdirectory (d3d11) endif () +if (DirectX_D3D10_1_FOUND) + add_subdirectory (d3d10_1) +endif () + if (DirectX_D3D10_FOUND) add_subdirectory (d3d10) endif () diff --git a/apps/d3d10_1/CMakeLists.txt b/apps/d3d10_1/CMakeLists.txt new file mode 100644 index 0000000..b290117 --- /dev/null +++ b/apps/d3d10_1/CMakeLists.txt @@ -0,0 +1,29 @@ +include_directories ( + ${CMAKE_CURRENT_SOURCE_DIR}/../hlsl + ${APITRACE_SOURCE_DIR}/dispatch + ${DirectX_D3D10_1_INCLUDE_DIR} +) + +link_libraries ( + ${DirectX_D3D10_1_LIBRARY} +) + +set (api d3d10_1) + +set (targets + tri +) + +foreach (target ${targets}) + add_executable (${api}_${target} ${target}.cpp) + set_target_properties (${api}_${target} PROPERTIES OUTPUT_NAME ${target}) + + if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${target}.ref.txt) + add_app_test( + NAME ${api}_${target} + TARGET ${api}_${target} + REF ${target}.ref.txt + ) + endif () +endforeach (target) + diff --git a/apps/d3d10_1/tri.cpp b/apps/d3d10_1/tri.cpp new file mode 100644 index 0000000..3efa49b --- /dev/null +++ b/apps/d3d10_1/tri.cpp @@ -0,0 +1,256 @@ +/************************************************************************** + * + * Copyright 2012 Jose Fonseca + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * 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 THE + * AUTHORS OR COPYRIGHT HOLDERS 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 +#include + +#include +#include + +#include "compat.h" + +#include + +#include "tri_vs.h" +#include "tri_ps.h" + + +static IDXGISwapChain* g_pSwapChain = NULL; +static ID3D10Device1 * g_pDevice = NULL; + + +int main(int argc, char *argv[]){ + HRESULT hr; + + HINSTANCE hInstance = GetModuleHandle(NULL); + + WNDCLASSEX wc = { + sizeof(WNDCLASSEX), + CS_CLASSDC, + DefWindowProc, + 0, + 0, + hInstance, + NULL, + NULL, + NULL, + NULL, + "SimpleDX10", + NULL + }; + RegisterClassEx(&wc); + + const int WindowWidth = 250; + const int WindowHeight = 250; + BOOL Windowed = TRUE; + + DWORD dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW; + + RECT rect = {0, 0, WindowWidth, WindowHeight}; + AdjustWindowRect(&rect, dwStyle, FALSE); + + HWND hWnd = CreateWindow(wc.lpszClassName, + "Simple example using DirectX10", + dwStyle, + CW_USEDEFAULT, CW_USEDEFAULT, + rect.right - rect.left, + rect.bottom - rect.top, + NULL, + NULL, + hInstance, + NULL); + if (!hWnd) { + return 1; + } + + ShowWindow(hWnd, SW_SHOW); + + DXGI_SWAP_CHAIN_DESC SwapChainDesc; + ZeroMemory(&SwapChainDesc, sizeof SwapChainDesc); + SwapChainDesc.BufferDesc.Width = WindowWidth; + SwapChainDesc.BufferDesc.Height = WindowHeight; + SwapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;; + SwapChainDesc.BufferDesc.RefreshRate.Numerator = 60; + SwapChainDesc.BufferDesc.RefreshRate.Denominator = 1; + SwapChainDesc.SampleDesc.Quality = 0; + SwapChainDesc.SampleDesc.Count = 1; + SwapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + SwapChainDesc.BufferCount = 2; + SwapChainDesc.OutputWindow = hWnd; + SwapChainDesc.Windowed = true; + + hr = D3D10CreateDeviceAndSwapChain1(NULL, + D3D10_DRIVER_TYPE_HARDWARE, + NULL, + D3D10_CREATE_DEVICE_DEBUG, + D3D10_FEATURE_LEVEL_10_0, + D3D10_1_SDK_VERSION, + &SwapChainDesc, + &g_pSwapChain, + &g_pDevice); + if (FAILED(hr)) { + return 1; + } + + ID3D10RenderTargetView *pRenderTargetView = NULL; + ID3D10Texture2D* pBackBuffer; + hr = g_pSwapChain->GetBuffer(0, IID_ID3D10Texture2D, (void **)&pBackBuffer); + if (FAILED(hr)) { + return 1; + } + hr = g_pDevice->CreateRenderTargetView(pBackBuffer, NULL, &pRenderTargetView); + if (FAILED(hr)) { + return 1; + } + pBackBuffer->Release(); + + g_pDevice->OMSetRenderTargets(1, &pRenderTargetView, NULL); + + const float clearColor[4] = { 0.3f, 0.1f, 0.3f, 1.0f }; + g_pDevice->ClearRenderTargetView(pRenderTargetView, clearColor); + + ID3D10VertexShader * pVertexShader; + hr = g_pDevice->CreateVertexShader(g_VS, sizeof g_VS, &pVertexShader); + if (FAILED(hr)) { + return 1; + } + + struct Vertex { + float position[4]; + float color[4]; + }; + + static const D3D10_INPUT_ELEMENT_DESC InputElementDescs[] = { + { "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, offsetof(Vertex, position), D3D10_INPUT_PER_VERTEX_DATA, 0 }, + { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, offsetof(Vertex, color), D3D10_INPUT_PER_VERTEX_DATA, 0 } + }; + + ID3D10InputLayout *pVertexLayout = NULL; + hr = g_pDevice->CreateInputLayout(InputElementDescs, + 2, + g_VS, + sizeof g_VS, + &pVertexLayout); + if (FAILED(hr)) { + return 1; + } + + g_pDevice->IASetInputLayout(pVertexLayout); + + ID3D10PixelShader * pPixelShader; + hr = g_pDevice->CreatePixelShader(g_PS, sizeof g_PS, &pPixelShader); + if (FAILED(hr)) { + return 1; + } + + g_pDevice->VSSetShader(pVertexShader); + g_pDevice->PSSetShader(pPixelShader); + + static const Vertex vertices[] = { + { { -0.9f, -0.9f, 0.5f, 1.0f}, { 0.8f, 0.0f, 0.0f, 0.1f } }, + { { 0.9f, -0.9f, 0.5f, 1.0f}, { 0.0f, 0.9f, 0.0f, 0.1f } }, + { { 0.0f, 0.9f, 0.5f, 1.0f}, { 0.0f, 0.0f, 0.7f, 0.1f } }, + }; + + D3D10_BUFFER_DESC BufferDesc; + ZeroMemory(&BufferDesc, sizeof BufferDesc); + BufferDesc.Usage = D3D10_USAGE_DYNAMIC; + BufferDesc.ByteWidth = sizeof vertices; + BufferDesc.BindFlags = D3D10_BIND_VERTEX_BUFFER; + BufferDesc.CPUAccessFlags = D3D10_CPU_ACCESS_WRITE; + BufferDesc.MiscFlags = 0; + + ID3D10Buffer *pVertexBuffer; + hr = g_pDevice->CreateBuffer(&BufferDesc, NULL, &pVertexBuffer); + if (FAILED(hr)) { + return 1; + } + + void *pMap = NULL; + pVertexBuffer->Map(D3D10_MAP_WRITE_DISCARD, 0, &pMap); + memcpy(pMap, vertices, sizeof vertices); + pVertexBuffer->Unmap(); + + UINT Stride = sizeof(Vertex); + UINT Offset = 0; + g_pDevice->IASetVertexBuffers(0, 1, &pVertexBuffer, &Stride, &Offset); + + D3D10_VIEWPORT ViewPort; + ViewPort.TopLeftX = 0; + ViewPort.TopLeftY = 0; + ViewPort.Width = WindowWidth; + ViewPort.Height = WindowHeight; + ViewPort.MinDepth = 0.0f; + ViewPort.MaxDepth = 1.0f; + g_pDevice->RSSetViewports(1, &ViewPort); + + D3D10_RASTERIZER_DESC RasterizerDesc; + ZeroMemory(&RasterizerDesc, sizeof RasterizerDesc); + RasterizerDesc.CullMode = D3D10_CULL_NONE; + RasterizerDesc.FillMode = D3D10_FILL_SOLID; + RasterizerDesc.FrontCounterClockwise = true; + ID3D10RasterizerState* pRasterizerState = NULL; + g_pDevice->CreateRasterizerState(&RasterizerDesc, &pRasterizerState); + g_pDevice->RSSetState(pRasterizerState); + + g_pDevice->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); + g_pDevice->Draw(3, 0); + + g_pSwapChain->Present(0, 0); + + + ID3D10Buffer *pNullBuffer = NULL; + UINT NullStride = 0; + UINT NullOffset = 0; + g_pDevice->IASetVertexBuffers(0, 1, &pNullBuffer, &NullStride, &NullOffset); + pVertexBuffer->Release(); + + g_pDevice->OMSetRenderTargets(0, NULL, NULL); + pRenderTargetView->Release(); + + g_pDevice->IASetInputLayout(NULL); + pVertexLayout->Release(); + + g_pDevice->VSSetShader(NULL); + pVertexShader->Release(); + + g_pDevice->PSSetShader(NULL); + pPixelShader->Release(); + + g_pDevice->RSSetState(NULL); + pRasterizerState->Release(); + + g_pSwapChain->Release(); + g_pSwapChain = NULL; + + g_pDevice->Release(); + g_pDevice = NULL; + + DestroyWindow(hWnd); + + return 0; +} + diff --git a/apps/d3d10_1/tri.ref.txt b/apps/d3d10_1/tri.ref.txt new file mode 100644 index 0000000..e69de29 -- 2.45.2 From 7502b519d86575f6ffdd0c4552e54d1cd5808c99 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Wed, 9 May 2012 10:56:29 +0100 Subject: [PATCH 14/16] Attempt of a d3d11.1 test. --- app_driver.py | 1 + apps/CMakeLists.txt | 4 + apps/d3d11/tri.cpp | 3 + apps/d3d11_1/CMakeLists.txt | 29 ++++ apps/d3d11_1/tri.cpp | 288 ++++++++++++++++++++++++++++++++++++ apps/d3d11_1/tri.ref.txt | 0 6 files changed, 325 insertions(+) create mode 100644 apps/d3d11_1/CMakeLists.txt create mode 100644 apps/d3d11_1/tri.cpp create mode 100644 apps/d3d11_1/tri.ref.txt diff --git a/app_driver.py b/app_driver.py index 9d7a9f0..56d839c 100755 --- a/app_driver.py +++ b/app_driver.py @@ -181,6 +181,7 @@ class AppDriver(Driver): 'd3d10': 'd3d10', 'd3d10_1': 'd3d10_1', 'd3d11': 'd3d11', + 'd3d11_1': 'd3d11', } api_retrace_map = { diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index 9b1e886..2098b5d 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -36,6 +36,10 @@ if (DirectX_FXC_EXECUTABLE) add_subdirectory (hlsl) endif () +if (DirectX_D3D11_1_FOUND) + add_subdirectory (d3d11_1) +endif () + if (DirectX_D3D11_FOUND) add_subdirectory (d3d11) endif () diff --git a/apps/d3d11/tri.cpp b/apps/d3d11/tri.cpp index 1649bbf..1ccf20c 100644 --- a/apps/d3d11/tri.cpp +++ b/apps/d3d11/tri.cpp @@ -250,6 +250,9 @@ int main(int argc, char *argv[]){ g_pSwapChain->Release(); g_pSwapChain = NULL; + g_pDeviceContext->Release(); + g_pDeviceContext = NULL; + g_pDevice->Release(); g_pDevice = NULL; diff --git a/apps/d3d11_1/CMakeLists.txt b/apps/d3d11_1/CMakeLists.txt new file mode 100644 index 0000000..adfde3a --- /dev/null +++ b/apps/d3d11_1/CMakeLists.txt @@ -0,0 +1,29 @@ +include_directories ( + ${CMAKE_CURRENT_SOURCE_DIR}/../hlsl + ${APITRACE_SOURCE_DIR}/dispatch + ${DirectX_D3D11_1_INCLUDE_DIR} +) + +link_libraries ( + ${DirectX_D3D11_LIBRARY} +) + +set (api d3d11_1) + +set (targets + tri +) + +foreach (target ${targets}) + add_executable (${api}_${target} ${target}.cpp) + set_target_properties (${api}_${target} PROPERTIES OUTPUT_NAME ${target}) + + if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${target}.ref.txt) + add_app_test( + NAME ${api}_${target} + TARGET ${api}_${target} + REF ${target}.ref.txt + ) + endif () +endforeach (target) + diff --git a/apps/d3d11_1/tri.cpp b/apps/d3d11_1/tri.cpp new file mode 100644 index 0000000..d3c3bff --- /dev/null +++ b/apps/d3d11_1/tri.cpp @@ -0,0 +1,288 @@ +/************************************************************************** + * + * Copyright 2012 Jose Fonseca + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * 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 THE + * AUTHORS OR COPYRIGHT HOLDERS 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 +#include + +#include +#include + +#include "compat.h" + +#include + +#include "tri_vs.h" +#include "tri_ps.h" + + +static IDXGISwapChain* g_pSwapChain = NULL; +static ID3D11Device * g_pDevice = NULL; +static ID3D11DeviceContext * g_pDeviceContext = NULL; +static ID3D11Device1 * g_pDevice1 = NULL; +static ID3D11DeviceContext1 * g_pDeviceContext1 = NULL; + + +int main(int argc, char *argv[]){ + HRESULT hr; + + HINSTANCE hInstance = GetModuleHandle(NULL); + + WNDCLASSEX wc = { + sizeof(WNDCLASSEX), + CS_CLASSDC, + DefWindowProc, + 0, + 0, + hInstance, + NULL, + NULL, + NULL, + NULL, + "SimpleDX10", + NULL + }; + RegisterClassEx(&wc); + + const int WindowWidth = 250; + const int WindowHeight = 250; + BOOL Windowed = TRUE; + + DWORD dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW; + + RECT rect = {0, 0, WindowWidth, WindowHeight}; + AdjustWindowRect(&rect, dwStyle, FALSE); + + HWND hWnd = CreateWindow(wc.lpszClassName, + "Simple example using DirectX10", + dwStyle, + CW_USEDEFAULT, CW_USEDEFAULT, + rect.right - rect.left, + rect.bottom - rect.top, + NULL, + NULL, + hInstance, + NULL); + if (!hWnd) { + return 1; + } + + ShowWindow(hWnd, SW_SHOW); + + DXGI_SWAP_CHAIN_DESC SwapChainDesc; + ZeroMemory(&SwapChainDesc, sizeof SwapChainDesc); + SwapChainDesc.BufferDesc.Width = WindowWidth; + SwapChainDesc.BufferDesc.Height = WindowHeight; + SwapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;; + SwapChainDesc.BufferDesc.RefreshRate.Numerator = 60; + SwapChainDesc.BufferDesc.RefreshRate.Denominator = 1; + SwapChainDesc.SampleDesc.Quality = 0; + SwapChainDesc.SampleDesc.Count = 1; + SwapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + SwapChainDesc.BufferCount = 2; + SwapChainDesc.OutputWindow = hWnd; + SwapChainDesc.Windowed = true; + + D3D_FEATURE_LEVEL FeatureLevel = D3D_FEATURE_LEVEL_11_1; + + hr = D3D11CreateDeviceAndSwapChain(NULL, /* pAdapter */ + D3D_DRIVER_TYPE_HARDWARE, + NULL, /* Software */ + D3D11_CREATE_DEVICE_DEBUG, +#if 0 + &FeatureLevel, + 1, +#else + NULL, + 0, +#endif + D3D11_SDK_VERSION, + &SwapChainDesc, + &g_pSwapChain, + &g_pDevice, + NULL, /* pFeatureLevel */ + &g_pDeviceContext); /* ppImmediateContext */ + if (FAILED(hr)) { + return 1; + } + + hr = g_pDevice->QueryInterface(IID_ID3D11Device1, (void **)&g_pDevice1); + if (FAILED(hr)) { + return 1; + } + + hr = g_pDeviceContext->QueryInterface(IID_ID3D11DeviceContext1, (void **)&g_pDeviceContext1); + if (FAILED(hr)) { + return 1; + } + + ID3D11RenderTargetView *pRenderTargetView = NULL; + ID3D11Texture2D* pBackBuffer; + hr = g_pSwapChain->GetBuffer(0, IID_ID3D11Texture2D, (void **)&pBackBuffer); + if (FAILED(hr)) { + return 1; + } + hr = g_pDevice1->CreateRenderTargetView(pBackBuffer, NULL, &pRenderTargetView); + if (FAILED(hr)) { + return 1; + } + pBackBuffer->Release(); + + g_pDeviceContext1->OMSetRenderTargets(1, &pRenderTargetView, NULL); + + const float clearColor[4] = { 0.3f, 0.1f, 0.3f, 1.0f }; + g_pDeviceContext1->ClearRenderTargetView(pRenderTargetView, clearColor); + + ID3D11VertexShader * pVertexShader; + hr = g_pDevice1->CreateVertexShader(g_VS, sizeof g_VS, NULL, &pVertexShader); + if (FAILED(hr)) { + return 1; + } + + struct Vertex { + float position[4]; + float color[4]; + }; + + static const D3D11_INPUT_ELEMENT_DESC InputElementDescs[] = { + { "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, offsetof(Vertex, position), D3D11_INPUT_PER_VERTEX_DATA, 0 }, + { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, offsetof(Vertex, color), D3D11_INPUT_PER_VERTEX_DATA, 0 } + }; + + ID3D11InputLayout *pVertexLayout = NULL; + hr = g_pDevice1->CreateInputLayout(InputElementDescs, + 2, + g_VS, + sizeof g_VS, + &pVertexLayout); + if (FAILED(hr)) { + return 1; + } + + g_pDeviceContext1->IASetInputLayout(pVertexLayout); + + ID3D11PixelShader * pPixelShader; + hr = g_pDevice1->CreatePixelShader(g_PS, sizeof g_PS, NULL, &pPixelShader); + if (FAILED(hr)) { + return 1; + } + + g_pDeviceContext1->VSSetShader(pVertexShader, NULL, 0); + g_pDeviceContext1->PSSetShader(pPixelShader, NULL, 0); + + static const Vertex vertices[] = { + { { -0.9f, -0.9f, 0.5f, 1.0f}, { 0.8f, 0.0f, 0.0f, 0.1f } }, + { { 0.9f, -0.9f, 0.5f, 1.0f}, { 0.0f, 0.9f, 0.0f, 0.1f } }, + { { 0.0f, 0.9f, 0.5f, 1.0f}, { 0.0f, 0.0f, 0.7f, 0.1f } }, + }; + + D3D11_BUFFER_DESC BufferDesc; + ZeroMemory(&BufferDesc, sizeof BufferDesc); + BufferDesc.Usage = D3D11_USAGE_DYNAMIC; + BufferDesc.ByteWidth = sizeof vertices; + BufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; + BufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + BufferDesc.MiscFlags = 0; + + D3D11_SUBRESOURCE_DATA BufferData; + BufferData.pSysMem = vertices; + BufferData.SysMemPitch = 0; + BufferData.SysMemSlicePitch = 0; + + ID3D11Buffer *pVertexBuffer; + hr = g_pDevice1->CreateBuffer(&BufferDesc, &BufferData, &pVertexBuffer); + if (FAILED(hr)) { + return 1; + } + + UINT Stride = sizeof(Vertex); + UINT Offset = 0; + g_pDeviceContext1->IASetVertexBuffers(0, 1, &pVertexBuffer, &Stride, &Offset); + + D3D11_VIEWPORT ViewPort; + ViewPort.TopLeftX = 0; + ViewPort.TopLeftY = 0; + ViewPort.Width = WindowWidth; + ViewPort.Height = WindowHeight; + ViewPort.MinDepth = 0.0f; + ViewPort.MaxDepth = 1.0f; + g_pDeviceContext1->RSSetViewports(1, &ViewPort); + + D3D11_RASTERIZER_DESC RasterizerDesc; + ZeroMemory(&RasterizerDesc, sizeof RasterizerDesc); + RasterizerDesc.CullMode = D3D11_CULL_NONE; + RasterizerDesc.FillMode = D3D11_FILL_SOLID; + RasterizerDesc.FrontCounterClockwise = true; + ID3D11RasterizerState* pRasterizerState = NULL; + g_pDevice1->CreateRasterizerState(&RasterizerDesc, &pRasterizerState); + g_pDeviceContext1->RSSetState(pRasterizerState); + + g_pDeviceContext1->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); + g_pDeviceContext1->Draw(3, 0); + + g_pSwapChain->Present(0, 0); + + + ID3D11Buffer *pNullBuffer = NULL; + UINT NullStride = 0; + UINT NullOffset = 0; + g_pDeviceContext1->IASetVertexBuffers(0, 1, &pNullBuffer, &NullStride, &NullOffset); + pVertexBuffer->Release(); + + g_pDeviceContext1->OMSetRenderTargets(0, NULL, NULL); + pRenderTargetView->Release(); + + g_pDeviceContext1->IASetInputLayout(NULL); + pVertexLayout->Release(); + + g_pDeviceContext1->VSSetShader(NULL, NULL, 0); + pVertexShader->Release(); + + g_pDeviceContext1->PSSetShader(NULL, NULL, 0); + pPixelShader->Release(); + + g_pDeviceContext1->RSSetState(NULL); + pRasterizerState->Release(); + + g_pSwapChain->Release(); + g_pSwapChain = NULL; + + g_pDeviceContext1->Release(); + g_pDeviceContext1 = NULL; + + g_pDevice1->Release(); + g_pDevice1 = NULL; + + g_pDeviceContext->Release(); + g_pDeviceContext = NULL; + + g_pDevice->Release(); + g_pDevice = NULL; + + DestroyWindow(hWnd); + + return 0; +} + diff --git a/apps/d3d11_1/tri.ref.txt b/apps/d3d11_1/tri.ref.txt new file mode 100644 index 0000000..e69de29 -- 2.45.2 From 7aa463806c4e6616699c8f742cc8204b4d129b0a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Wed, 9 May 2012 11:06:12 +0100 Subject: [PATCH 15/16] Rename hlsl d3dcommon. --- apps/CMakeLists.txt | 2 +- apps/d3d10/CMakeLists.txt | 2 +- apps/d3d10_1/CMakeLists.txt | 2 +- apps/d3d11/CMakeLists.txt | 2 +- apps/d3d11_1/CMakeLists.txt | 2 +- apps/d3dcommon/.gitignore | 1 + apps/{hlsl => d3dcommon}/CMakeLists.txt | 0 apps/{hlsl => d3dcommon}/tri.fx | 0 apps/{hlsl => d3dcommon}/tri_ps.h | 0 apps/{hlsl => d3dcommon}/tri_vs.h | 0 10 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 apps/d3dcommon/.gitignore rename apps/{hlsl => d3dcommon}/CMakeLists.txt (100%) rename apps/{hlsl => d3dcommon}/tri.fx (100%) rename apps/{hlsl => d3dcommon}/tri_ps.h (100%) rename apps/{hlsl => d3dcommon}/tri_vs.h (100%) diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index 2098b5d..6f38fdd 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -33,7 +33,7 @@ if (EGL_FOUND) endif () if (DirectX_FXC_EXECUTABLE) - add_subdirectory (hlsl) + add_subdirectory (d3dcommon) endif () if (DirectX_D3D11_1_FOUND) diff --git a/apps/d3d10/CMakeLists.txt b/apps/d3d10/CMakeLists.txt index a9da968..0bdd13e 100644 --- a/apps/d3d10/CMakeLists.txt +++ b/apps/d3d10/CMakeLists.txt @@ -1,5 +1,5 @@ include_directories ( - ${CMAKE_CURRENT_SOURCE_DIR}/../hlsl + ${CMAKE_CURRENT_SOURCE_DIR}/../d3dcommon ${APITRACE_SOURCE_DIR}/dispatch ${DirectX_D3D10_INCLUDE_DIR} ) diff --git a/apps/d3d10_1/CMakeLists.txt b/apps/d3d10_1/CMakeLists.txt index b290117..c2205bb 100644 --- a/apps/d3d10_1/CMakeLists.txt +++ b/apps/d3d10_1/CMakeLists.txt @@ -1,5 +1,5 @@ include_directories ( - ${CMAKE_CURRENT_SOURCE_DIR}/../hlsl + ${CMAKE_CURRENT_SOURCE_DIR}/../d3dcommon ${APITRACE_SOURCE_DIR}/dispatch ${DirectX_D3D10_1_INCLUDE_DIR} ) diff --git a/apps/d3d11/CMakeLists.txt b/apps/d3d11/CMakeLists.txt index 91c3c78..69ae735 100644 --- a/apps/d3d11/CMakeLists.txt +++ b/apps/d3d11/CMakeLists.txt @@ -1,5 +1,5 @@ include_directories ( - ${CMAKE_CURRENT_SOURCE_DIR}/../hlsl + ${CMAKE_CURRENT_SOURCE_DIR}/../d3dcommon ${APITRACE_SOURCE_DIR}/dispatch ${DirectX_D3D11_INCLUDE_DIR} ) diff --git a/apps/d3d11_1/CMakeLists.txt b/apps/d3d11_1/CMakeLists.txt index adfde3a..d35a8bf 100644 --- a/apps/d3d11_1/CMakeLists.txt +++ b/apps/d3d11_1/CMakeLists.txt @@ -1,5 +1,5 @@ include_directories ( - ${CMAKE_CURRENT_SOURCE_DIR}/../hlsl + ${CMAKE_CURRENT_SOURCE_DIR}/../d3dcommon ${APITRACE_SOURCE_DIR}/dispatch ${DirectX_D3D11_1_INCLUDE_DIR} ) diff --git a/apps/d3dcommon/.gitignore b/apps/d3dcommon/.gitignore new file mode 100644 index 0000000..8f6f666 --- /dev/null +++ b/apps/d3dcommon/.gitignore @@ -0,0 +1 @@ +*.rule diff --git a/apps/hlsl/CMakeLists.txt b/apps/d3dcommon/CMakeLists.txt similarity index 100% rename from apps/hlsl/CMakeLists.txt rename to apps/d3dcommon/CMakeLists.txt diff --git a/apps/hlsl/tri.fx b/apps/d3dcommon/tri.fx similarity index 100% rename from apps/hlsl/tri.fx rename to apps/d3dcommon/tri.fx diff --git a/apps/hlsl/tri_ps.h b/apps/d3dcommon/tri_ps.h similarity index 100% rename from apps/hlsl/tri_ps.h rename to apps/d3dcommon/tri_ps.h diff --git a/apps/hlsl/tri_vs.h b/apps/d3dcommon/tri_vs.h similarity index 100% rename from apps/hlsl/tri_vs.h rename to apps/d3dcommon/tri_vs.h -- 2.45.2 From 570163bfc3c84b6b553610c888c1f75657ed6ca9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Wed, 9 May 2012 11:10:17 +0100 Subject: [PATCH 16/16] Allow to build d3d samples independently of apitrace source. --- CMakeLists.txt | 9 +- apps/d3d10/CMakeLists.txt | 1 - apps/d3d10_1/CMakeLists.txt | 1 - apps/d3d11/CMakeLists.txt | 1 - apps/d3d11_1/CMakeLists.txt | 1 - apps/d3dcommon/compat.h | 748 ++++++++++++++++++++++++++++++++++++ cmake/FindDirectX.cmake | 270 +++++++++++++ 7 files changed, 1021 insertions(+), 10 deletions(-) create mode 100644 apps/d3dcommon/compat.h create mode 100644 cmake/FindDirectX.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index c6a8a59..dc59753 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,11 +16,6 @@ include (FindPkgConfig) set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) -if (APITRACE_SOURCE_DIR) - set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${APITRACE_SOURCE_DIR}/cmake) - find_package (DirectX) -endif () - # Set default built type if (NOT CMAKE_BUILD_TYPE) set (CMAKE_BUILD_TYPE Debug @@ -35,7 +30,9 @@ find_package (OpenGL) find_package (GLUT) find_package (GLEW) -if (NOT WIN32) +if (WIN32) + find_package (DirectX) +else () pkg_check_modules (EGL egl) pkg_check_modules (GLESV1 glesv1_cm) pkg_check_modules (GLESV2 glesv2) diff --git a/apps/d3d10/CMakeLists.txt b/apps/d3d10/CMakeLists.txt index 0bdd13e..75d110b 100644 --- a/apps/d3d10/CMakeLists.txt +++ b/apps/d3d10/CMakeLists.txt @@ -1,6 +1,5 @@ include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/../d3dcommon - ${APITRACE_SOURCE_DIR}/dispatch ${DirectX_D3D10_INCLUDE_DIR} ) diff --git a/apps/d3d10_1/CMakeLists.txt b/apps/d3d10_1/CMakeLists.txt index c2205bb..2f4355c 100644 --- a/apps/d3d10_1/CMakeLists.txt +++ b/apps/d3d10_1/CMakeLists.txt @@ -1,6 +1,5 @@ include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/../d3dcommon - ${APITRACE_SOURCE_DIR}/dispatch ${DirectX_D3D10_1_INCLUDE_DIR} ) diff --git a/apps/d3d11/CMakeLists.txt b/apps/d3d11/CMakeLists.txt index 69ae735..5dc68d8 100644 --- a/apps/d3d11/CMakeLists.txt +++ b/apps/d3d11/CMakeLists.txt @@ -1,6 +1,5 @@ include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/../d3dcommon - ${APITRACE_SOURCE_DIR}/dispatch ${DirectX_D3D11_INCLUDE_DIR} ) diff --git a/apps/d3d11_1/CMakeLists.txt b/apps/d3d11_1/CMakeLists.txt index d35a8bf..b77ee60 100644 --- a/apps/d3d11_1/CMakeLists.txt +++ b/apps/d3d11_1/CMakeLists.txt @@ -1,6 +1,5 @@ include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/../d3dcommon - ${APITRACE_SOURCE_DIR}/dispatch ${DirectX_D3D11_1_INCLUDE_DIR} ) diff --git a/apps/d3dcommon/compat.h b/apps/d3dcommon/compat.h new file mode 100644 index 0000000..3fc9730 --- /dev/null +++ b/apps/d3dcommon/compat.h @@ -0,0 +1,748 @@ +/************************************************************************** + * + * Copyright 2008-2009 VMware, Inc. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * 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 THE + * AUTHORS OR COPYRIGHT HOLDERS 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. + * + **************************************************************************/ + +/* + * MinGW compatability macros to allow using recent's DXSDK headers. + */ + +#ifdef __MINGW32__ + + +/* + * Dummy definitions Standard Annotation Language (SAL) definitions + * + * These are typically defined in sal.h. + * + * http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/sal.h?view=markup + */ + +#define _Always_(annos) +#define _Analysis_noreturn_ +#define _At_(target, annos) +#define _At_buffer_(target, iter, bound, annos) +#define _COM_Outptr_ +#define _COM_Outptr_opt_ +#define _COM_Outptr_opt_result_maybenull_ +#define _COM_Outptr_result_maybenull_ +#define _Check_return_ +#define _Const_ +#define _Deref2_pre_readonly_ +#define _Deref_in_bound_ +#define _Deref_in_range_(lb,ub) +#define _Deref_inout_bound_ +#define _Deref_inout_z_ +#define _Deref_inout_z_bytecap_c_(size) +#define _Deref_inout_z_cap_c_(size) +#define _Deref_opt_out_ +#define _Deref_opt_out_opt_ +#define _Deref_opt_out_opt_z_ +#define _Deref_opt_out_z_ +#define _Deref_out_ +#define _Deref_out_bound_ +#define _Deref_out_opt_ +#define _Deref_out_opt_z_ +#define _Deref_out_range_(lb,ub) +#define _Deref_out_z_ +#define _Deref_out_z_bytecap_c_(size) +#define _Deref_out_z_cap_c_(size) +#define _Deref_post_bytecap_(size) +#define _Deref_post_bytecap_c_(size) +#define _Deref_post_bytecap_x_(size) +#define _Deref_post_bytecount_(size) +#define _Deref_post_bytecount_c_(size) +#define _Deref_post_bytecount_x_(size) +#define _Deref_post_cap_(size) +#define _Deref_post_cap_c_(size) +#define _Deref_post_cap_x_(size) +#define _Deref_post_count_(size) +#define _Deref_post_count_c_(size) +#define _Deref_post_count_x_(size) +#define _Deref_post_maybenull_ +#define _Deref_post_notnull_ +#define _Deref_post_null_ +#define _Deref_post_opt_bytecap_(size) +#define _Deref_post_opt_bytecap_c_(size) +#define _Deref_post_opt_bytecap_x_(size) +#define _Deref_post_opt_bytecount_(size) +#define _Deref_post_opt_bytecount_c_(size) +#define _Deref_post_opt_bytecount_x_(size) +#define _Deref_post_opt_cap_(size) +#define _Deref_post_opt_cap_c_(size) +#define _Deref_post_opt_cap_x_(size) +#define _Deref_post_opt_count_(size) +#define _Deref_post_opt_count_c_(size) +#define _Deref_post_opt_count_x_(size) +#define _Deref_post_opt_valid_ +#define _Deref_post_opt_valid_bytecap_(size) +#define _Deref_post_opt_valid_bytecap_c_(size) +#define _Deref_post_opt_valid_bytecap_x_(size) +#define _Deref_post_opt_valid_cap_(size) +#define _Deref_post_opt_valid_cap_c_(size) +#define _Deref_post_opt_valid_cap_x_(size) +#define _Deref_post_opt_z_ +#define _Deref_post_opt_z_bytecap_(size) +#define _Deref_post_opt_z_bytecap_c_(size) +#define _Deref_post_opt_z_bytecap_x_(size) +#define _Deref_post_opt_z_cap_(size) +#define _Deref_post_opt_z_cap_c_(size) +#define _Deref_post_opt_z_cap_x_(size) +#define _Deref_post_valid_ +#define _Deref_post_valid_bytecap_(size) +#define _Deref_post_valid_bytecap_c_(size) +#define _Deref_post_valid_bytecap_x_(size) +#define _Deref_post_valid_cap_(size) +#define _Deref_post_valid_cap_c_(size) +#define _Deref_post_valid_cap_x_(size) +#define _Deref_post_z_ +#define _Deref_post_z_bytecap_(size) +#define _Deref_post_z_bytecap_c_(size) +#define _Deref_post_z_bytecap_x_(size) +#define _Deref_post_z_cap_(size) +#define _Deref_post_z_cap_c_(size) +#define _Deref_post_z_cap_x_(size) +#define _Deref_pre_bytecap_(size) +#define _Deref_pre_bytecap_c_(size) +#define _Deref_pre_bytecap_x_(size) +#define _Deref_pre_bytecount_(size) +#define _Deref_pre_bytecount_c_(size) +#define _Deref_pre_bytecount_x_(size) +#define _Deref_pre_cap_(size) +#define _Deref_pre_cap_c_(size) +#define _Deref_pre_cap_x_(size) +#define _Deref_pre_count_(size) +#define _Deref_pre_count_c_(size) +#define _Deref_pre_count_x_(size) +#define _Deref_pre_invalid_ +#define _Deref_pre_maybenull_ +#define _Deref_pre_notnull_ +#define _Deref_pre_null_ +#define _Deref_pre_opt_bytecap_(size) +#define _Deref_pre_opt_bytecap_c_(size) +#define _Deref_pre_opt_bytecap_x_(size) +#define _Deref_pre_opt_bytecount_(size) +#define _Deref_pre_opt_bytecount_c_(size) +#define _Deref_pre_opt_bytecount_x_(size) +#define _Deref_pre_opt_cap_(size) +#define _Deref_pre_opt_cap_c_(size) +#define _Deref_pre_opt_cap_x_(size) +#define _Deref_pre_opt_count_(size) +#define _Deref_pre_opt_count_c_(size) +#define _Deref_pre_opt_count_x_(size) +#define _Deref_pre_opt_valid_ +#define _Deref_pre_opt_valid_bytecap_(size) +#define _Deref_pre_opt_valid_bytecap_c_(size) +#define _Deref_pre_opt_valid_bytecap_x_(size) +#define _Deref_pre_opt_valid_cap_(size) +#define _Deref_pre_opt_valid_cap_c_(size) +#define _Deref_pre_opt_valid_cap_x_(size) +#define _Deref_pre_opt_z_ +#define _Deref_pre_opt_z_bytecap_(size) +#define _Deref_pre_opt_z_bytecap_c_(size) +#define _Deref_pre_opt_z_bytecap_x_(size) +#define _Deref_pre_opt_z_cap_(size) +#define _Deref_pre_opt_z_cap_c_(size) +#define _Deref_pre_opt_z_cap_x_(size) +#define _Deref_pre_readonly_ +#define _Deref_pre_valid_ +#define _Deref_pre_valid_bytecap_(size) +#define _Deref_pre_valid_bytecap_c_(size) +#define _Deref_pre_valid_bytecap_x_(size) +#define _Deref_pre_valid_cap_(size) +#define _Deref_pre_valid_cap_c_(size) +#define _Deref_pre_valid_cap_x_(size) +#define _Deref_pre_writeonly_ +#define _Deref_pre_z_ +#define _Deref_pre_z_bytecap_(size) +#define _Deref_pre_z_bytecap_c_(size) +#define _Deref_pre_z_bytecap_x_(size) +#define _Deref_pre_z_cap_(size) +#define _Deref_pre_z_cap_c_(size) +#define _Deref_pre_z_cap_x_(size) +#define _Deref_prepost_bytecap_(size) +#define _Deref_prepost_bytecap_x_(size) +#define _Deref_prepost_bytecount_(size) +#define _Deref_prepost_bytecount_x_(size) +#define _Deref_prepost_cap_(size) +#define _Deref_prepost_cap_x_(size) +#define _Deref_prepost_count_(size) +#define _Deref_prepost_count_x_(size) +#define _Deref_prepost_opt_bytecap_(size) +#define _Deref_prepost_opt_bytecap_x_(size) +#define _Deref_prepost_opt_bytecount_(size) +#define _Deref_prepost_opt_bytecount_x_(size) +#define _Deref_prepost_opt_cap_(size) +#define _Deref_prepost_opt_cap_x_(size) +#define _Deref_prepost_opt_count_(size) +#define _Deref_prepost_opt_count_x_(size) +#define _Deref_prepost_opt_valid_ +#define _Deref_prepost_opt_valid_bytecap_(size) +#define _Deref_prepost_opt_valid_bytecap_x_(size) +#define _Deref_prepost_opt_valid_cap_(size) +#define _Deref_prepost_opt_valid_cap_x_(size) +#define _Deref_prepost_opt_z_ +#define _Deref_prepost_opt_z_bytecap_(size) +#define _Deref_prepost_opt_z_cap_(size) +#define _Deref_prepost_valid_ +#define _Deref_prepost_valid_bytecap_(size) +#define _Deref_prepost_valid_bytecap_x_(size) +#define _Deref_prepost_valid_cap_(size) +#define _Deref_prepost_valid_cap_x_(size) +#define _Deref_prepost_z_ +#define _Deref_prepost_z_bytecap_(size) +#define _Deref_prepost_z_cap_(size) +#define _Deref_ret_bound_ +#define _Deref_ret_opt_z_ +#define _Deref_ret_range_(lb,ub) +#define _Deref_ret_z_ +#define _Field_range_(min,max) +#define _Field_size_(size) +#define _Field_size_bytes_(size) +#define _Field_size_bytes_full_(size) +#define _Field_size_bytes_full_opt_(size) +#define _Field_size_bytes_opt_(size) +#define _Field_size_bytes_part_(size, count) +#define _Field_size_bytes_part_opt_(size, count) +#define _Field_size_full_(size) +#define _Field_size_full_opt_(size) +#define _Field_size_opt_(size) +#define _Field_size_part_(size, count) +#define _Field_size_part_opt_(size, count) +#define _Field_z_ +#define _Function_class_(x) +#define _Group_(annos) +#define _In_ +#define _In_bound_ +#define _In_bytecount_(size) +#define _In_bytecount_c_(size) +#define _In_bytecount_x_(size) +#define _In_count_(size) +#define _In_count_c_(size) +#define _In_count_x_(size) +#define _In_defensive_(annotes) +#define _In_opt_ +#define _In_opt_bytecount_(size) +#define _In_opt_bytecount_c_(size) +#define _In_opt_bytecount_x_(size) +#define _In_opt_count_(size) +#define _In_opt_count_c_(size) +#define _In_opt_count_x_(size) +#define _In_opt_ptrdiff_count_(size) +#define _In_opt_z_ +#define _In_opt_z_bytecount_(size) +#define _In_opt_z_bytecount_c_(size) +#define _In_opt_z_count_(size) +#define _In_opt_z_count_c_(size) +#define _In_ptrdiff_count_(size) +#define _In_range_(lb,ub) +#define _In_reads_(size) +#define _In_reads_bytes_(size) +#define _In_reads_bytes_opt_(size) +#define _In_reads_opt_(size) +#define _In_reads_opt_z_(size) +#define _In_reads_or_z_(size) +#define _In_reads_to_ptr_(ptr) +#define _In_reads_to_ptr_opt_(ptr) +#define _In_reads_to_ptr_opt_z_(ptr) +#define _In_reads_to_ptr_z_(ptr) +#define _In_reads_z_(size) +#define _In_z_ +#define _In_z_bytecount_(size) +#define _In_z_bytecount_c_(size) +#define _In_z_count_(size) +#define _In_z_count_c_(size) +#define _Inout_ +#define _Inout_bytecap_(size) +#define _Inout_bytecap_c_(size) +#define _Inout_bytecap_x_(size) +#define _Inout_bytecount_(size) +#define _Inout_bytecount_c_(size) +#define _Inout_bytecount_x_(size) +#define _Inout_cap_(size) +#define _Inout_cap_c_(size) +#define _Inout_cap_x_(size) +#define _Inout_count_(size) +#define _Inout_count_c_(size) +#define _Inout_count_x_(size) +#define _Inout_defensive_(annotes) +#define _Inout_opt_ +#define _Inout_opt_bytecap_(size) +#define _Inout_opt_bytecap_c_(size) +#define _Inout_opt_bytecap_x_(size) +#define _Inout_opt_bytecount_(size) +#define _Inout_opt_bytecount_c_(size) +#define _Inout_opt_bytecount_x_(size) +#define _Inout_opt_cap_(size) +#define _Inout_opt_cap_c_(size) +#define _Inout_opt_cap_x_(size) +#define _Inout_opt_count_(size) +#define _Inout_opt_count_c_(size) +#define _Inout_opt_count_x_(size) +#define _Inout_opt_ptrdiff_count_(size) +#define _Inout_opt_z_ +#define _Inout_opt_z_bytecap_(size) +#define _Inout_opt_z_bytecap_c_(size) +#define _Inout_opt_z_bytecap_x_(size) +#define _Inout_opt_z_bytecount_(size) +#define _Inout_opt_z_bytecount_c_(size) +#define _Inout_opt_z_cap_(size) +#define _Inout_opt_z_cap_c_(size) +#define _Inout_opt_z_cap_x_(size) +#define _Inout_opt_z_count_(size) +#define _Inout_opt_z_count_c_(size) +#define _Inout_ptrdiff_count_(size) +#define _Inout_updates_(size) +#define _Inout_updates_all_(size) +#define _Inout_updates_all_opt_(size) +#define _Inout_updates_bytes_(size) +#define _Inout_updates_bytes_all_(size) +#define _Inout_updates_bytes_all_opt_(size) +#define _Inout_updates_bytes_opt_(size) +#define _Inout_updates_bytes_to_(size,count) +#define _Inout_updates_bytes_to_opt_(size,count) +#define _Inout_updates_opt_(size) +#define _Inout_updates_opt_z_(size) +#define _Inout_updates_to_(size,count) +#define _Inout_updates_to_opt_(size,count) +#define _Inout_updates_z_(size) +#define _Inout_z_ +#define _Inout_z_bytecap_(size) +#define _Inout_z_bytecap_c_(size) +#define _Inout_z_bytecap_x_(size) +#define _Inout_z_bytecount_(size) +#define _Inout_z_bytecount_c_(size) +#define _Inout_z_cap_(size) +#define _Inout_z_cap_c_(size) +#define _Inout_z_cap_x_(size) +#define _Inout_z_count_(size) +#define _Inout_z_count_c_(size) +#define _Interlocked_operand_ +#define _Literal_ +#define _Maybe_raises_SEH_exception +#define _Maybe_raises_SEH_exception_ +#define _Maybenull_ +#define _Maybevalid_ +#define _Must_inspect_result_ +#define _Notliteral_ +#define _Notnull_ +#define _Notref_ +#define _Notvalid_ +#define _NullNull_terminated_ +#define _Null_ +#define _Null_terminated_ +#define _On_failure_(annos) +#define _Out_ +#define _Out_bound_ +#define _Out_bytecap_(size) +#define _Out_bytecap_c_(size) +#define _Out_bytecap_post_bytecount_(cap,count) +#define _Out_bytecap_x_(size) +#define _Out_bytecapcount_(capcount) +#define _Out_bytecapcount_x_(capcount) +#define _Out_cap_(size) +#define _Out_cap_c_(size) +#define _Out_cap_m_(mult,size) +#define _Out_cap_post_count_(cap,count) +#define _Out_cap_x_(size) +#define _Out_capcount_(capcount) +#define _Out_capcount_x_(capcount) +#define _Out_defensive_(annotes) +#define _Out_opt_ +#define _Out_opt_bytecap_(size) +#define _Out_opt_bytecap_c_(size) +#define _Out_opt_bytecap_post_bytecount_(cap,count) +#define _Out_opt_bytecap_x_(size) +#define _Out_opt_bytecapcount_(capcount) +#define _Out_opt_bytecapcount_x_(capcount) +#define _Out_opt_cap_(size) +#define _Out_opt_cap_c_(size) +#define _Out_opt_cap_m_(mult,size) +#define _Out_opt_cap_post_count_(cap,count) +#define _Out_opt_cap_x_(size) +#define _Out_opt_capcount_(capcount) +#define _Out_opt_capcount_x_(capcount) +#define _Out_opt_ptrdiff_cap_(size) +#define _Out_opt_z_bytecap_(size) +#define _Out_opt_z_bytecap_c_(size) +#define _Out_opt_z_bytecap_post_bytecount_(cap,count) +#define _Out_opt_z_bytecap_x_(size) +#define _Out_opt_z_bytecapcount_(capcount) +#define _Out_opt_z_cap_(size) +#define _Out_opt_z_cap_c_(size) +#define _Out_opt_z_cap_m_(mult,size) +#define _Out_opt_z_cap_post_count_(cap,count) +#define _Out_opt_z_cap_x_(size) +#define _Out_opt_z_capcount_(capcount) +#define _Out_ptrdiff_cap_(size) +#define _Out_range_(lb,ub) +#define _Out_writes_(size) +#define _Out_writes_all_(size) +#define _Out_writes_all_opt_(size) +#define _Out_writes_bytes_(size) +#define _Out_writes_bytes_all_(size) +#define _Out_writes_bytes_all_opt_(size) +#define _Out_writes_bytes_opt_(size) +#define _Out_writes_bytes_to_(size,count) +#define _Out_writes_bytes_to_opt_(size,count) +#define _Out_writes_opt_(size) +#define _Out_writes_opt_z_(size) +#define _Out_writes_to_(size,count) +#define _Out_writes_to_opt_(size,count) +#define _Out_writes_to_ptr_(ptr) +#define _Out_writes_to_ptr_opt_(ptr) +#define _Out_writes_to_ptr_opt_z_(ptr) +#define _Out_writes_to_ptr_z_(ptr) +#define _Out_writes_z_(size) +#define _Out_z_bytecap_(size) +#define _Out_z_bytecap_c_(size) +#define _Out_z_bytecap_post_bytecount_(cap,count) +#define _Out_z_bytecap_x_(size) +#define _Out_z_bytecapcount_(capcount) +#define _Out_z_cap_(size) +#define _Out_z_cap_c_(size) +#define _Out_z_cap_m_(mult,size) +#define _Out_z_cap_post_count_(cap,count) +#define _Out_z_cap_x_(size) +#define _Out_z_capcount_(capcount) +#define _Outptr_ +#define _Outptr_opt_ +#define _Outptr_opt_result_buffer_(size) +#define _Outptr_opt_result_buffer_all_(size) +#define _Outptr_opt_result_buffer_all_maybenull_(size) +#define _Outptr_opt_result_buffer_maybenull_(size) +#define _Outptr_opt_result_buffer_to_(size, count) +#define _Outptr_opt_result_buffer_to_maybenull_(size, count) +#define _Outptr_opt_result_bytebuffer_(size) +#define _Outptr_opt_result_bytebuffer_all_(size) +#define _Outptr_opt_result_bytebuffer_all_maybenull_(size) +#define _Outptr_opt_result_bytebuffer_maybenull_(size) +#define _Outptr_opt_result_bytebuffer_to_(size, count) +#define _Outptr_opt_result_bytebuffer_to_maybenull_(size, count) +#define _Outptr_opt_result_maybenull_ +#define _Outptr_opt_result_maybenull_z_ +#define _Outptr_opt_result_nullonfailure_ +#define _Outptr_opt_result_z_ +#define _Outptr_result_buffer_(size) +#define _Outptr_result_buffer_all_(size) +#define _Outptr_result_buffer_all_maybenull_(size) +#define _Outptr_result_buffer_maybenull_(size) +#define _Outptr_result_buffer_to_(size, count) +#define _Outptr_result_buffer_to_maybenull_(size, count) +#define _Outptr_result_bytebuffer_(size) +#define _Outptr_result_bytebuffer_all_(size) +#define _Outptr_result_bytebuffer_all_maybenull_(size) +#define _Outptr_result_bytebuffer_maybenull_(size) +#define _Outptr_result_bytebuffer_to_(size, count) +#define _Outptr_result_bytebuffer_to_maybenull_(size, count) +#define _Outptr_result_maybenull_ +#define _Outptr_result_maybenull_z_ +#define _Outptr_result_nullonfailure_ +#define _Outptr_result_z_ +#define _Outref_ +#define _Outref_result_buffer_(size) +#define _Outref_result_buffer_all_(size) +#define _Outref_result_buffer_all_maybenull_(size) +#define _Outref_result_buffer_maybenull_(size) +#define _Outref_result_buffer_to_(size, count) +#define _Outref_result_buffer_to_maybenull_(size, count) +#define _Outref_result_bytebuffer_(size) +#define _Outref_result_bytebuffer_all_(size) +#define _Outref_result_bytebuffer_all_maybenull_(size) +#define _Outref_result_bytebuffer_maybenull_(size) +#define _Outref_result_bytebuffer_to_(size, count) +#define _Outref_result_bytebuffer_to_maybenull_(size, count) +#define _Outref_result_maybenull_ +#define _Outref_result_nullonfailure_ +#define _Points_to_data_ +#define _Post_ +#define _Post_bytecap_(size) +#define _Post_bytecount_(size) +#define _Post_bytecount_c_(size) +#define _Post_bytecount_x_(size) +#define _Post_cap_(size) +#define _Post_count_(size) +#define _Post_count_c_(size) +#define _Post_count_x_(size) +#define _Post_defensive_ +#define _Post_equal_to_(expr) +#define _Post_invalid_ +#define _Post_maybenull_ +#define _Post_maybez_ +#define _Post_notnull_ +#define _Post_null_ +#define _Post_ptr_invalid_ +#define _Post_readable_byte_size_(size) +#define _Post_readable_size_(size) +#define _Post_satisfies_(cond) +#define _Post_valid_ +#define _Post_writable_byte_size_(size) +#define _Post_writable_size_(size) +#define _Post_z_ +#define _Post_z_bytecount_(size) +#define _Post_z_bytecount_c_(size) +#define _Post_z_bytecount_x_(size) +#define _Post_z_count_(size) +#define _Post_z_count_c_(size) +#define _Post_z_count_x_(size) +#define _Pre_ +#define _Pre_bytecap_(size) +#define _Pre_bytecap_c_(size) +#define _Pre_bytecap_x_(size) +#define _Pre_bytecount_(size) +#define _Pre_bytecount_c_(size) +#define _Pre_bytecount_x_(size) +#define _Pre_cap_(size) +#define _Pre_cap_c_(size) +#define _Pre_cap_c_one_ +#define _Pre_cap_for_(param) +#define _Pre_cap_m_(mult,size) +#define _Pre_cap_x_(size) +#define _Pre_count_(size) +#define _Pre_count_c_(size) +#define _Pre_count_x_(size) +#define _Pre_defensive_ +#define _Pre_equal_to_(expr) +#define _Pre_invalid_ +#define _Pre_maybenull_ +#define _Pre_notnull_ +#define _Pre_null_ +#define _Pre_opt_bytecap_(size) +#define _Pre_opt_bytecap_c_(size) +#define _Pre_opt_bytecap_x_(size) +#define _Pre_opt_bytecount_(size) +#define _Pre_opt_bytecount_c_(size) +#define _Pre_opt_bytecount_x_(size) +#define _Pre_opt_cap_(size) +#define _Pre_opt_cap_c_(size) +#define _Pre_opt_cap_c_one_ +#define _Pre_opt_cap_for_(param) +#define _Pre_opt_cap_m_(mult,size) +#define _Pre_opt_cap_x_(size) +#define _Pre_opt_count_(size) +#define _Pre_opt_count_c_(size) +#define _Pre_opt_count_x_(size) +#define _Pre_opt_ptrdiff_cap_(ptr) +#define _Pre_opt_ptrdiff_count_(ptr) +#define _Pre_opt_valid_ +#define _Pre_opt_valid_bytecap_(size) +#define _Pre_opt_valid_bytecap_c_(size) +#define _Pre_opt_valid_bytecap_x_(size) +#define _Pre_opt_valid_cap_(size) +#define _Pre_opt_valid_cap_c_(size) +#define _Pre_opt_valid_cap_x_(size) +#define _Pre_opt_z_ +#define _Pre_opt_z_bytecap_(size) +#define _Pre_opt_z_bytecap_c_(size) +#define _Pre_opt_z_bytecap_x_(size) +#define _Pre_opt_z_cap_(size) +#define _Pre_opt_z_cap_c_(size) +#define _Pre_opt_z_cap_x_(size) +#define _Pre_ptrdiff_cap_(ptr) +#define _Pre_ptrdiff_count_(ptr) +#define _Pre_readable_byte_size_(size) +#define _Pre_readable_size_(size) +#define _Pre_readonly_ +#define _Pre_satisfies_(cond) +#define _Pre_valid_ +#define _Pre_valid_bytecap_(size) +#define _Pre_valid_bytecap_c_(size) +#define _Pre_valid_bytecap_x_(size) +#define _Pre_valid_cap_(size) +#define _Pre_valid_cap_c_(size) +#define _Pre_valid_cap_x_(size) +#define _Pre_writable_byte_size_(size) +#define _Pre_writable_size_(size) +#define _Pre_writeonly_ +#define _Pre_z_ +#define _Pre_z_bytecap_(size) +#define _Pre_z_bytecap_c_(size) +#define _Pre_z_bytecap_x_(size) +#define _Pre_z_cap_(size) +#define _Pre_z_cap_c_(size) +#define _Pre_z_cap_x_(size) +#define _Prepost_bytecount_(size) +#define _Prepost_bytecount_c_(size) +#define _Prepost_bytecount_x_(size) +#define _Prepost_count_(size) +#define _Prepost_count_c_(size) +#define _Prepost_count_x_(size) +#define _Prepost_opt_bytecount_(size) +#define _Prepost_opt_bytecount_c_(size) +#define _Prepost_opt_bytecount_x_(size) +#define _Prepost_opt_count_(size) +#define _Prepost_opt_count_c_(size) +#define _Prepost_opt_count_x_(size) +#define _Prepost_opt_valid_ +#define _Prepost_opt_z_ +#define _Prepost_valid_ +#define _Prepost_z_ +#define _Printf_format_string_ +#define _Raises_SEH_exception_ +#define _Readable_bytes_(size) +#define _Readable_elements_(size) +#define _Reserved_ +#define _Result_nullonfailure_ +#define _Result_zeroonfailure_ +#define _Ret_ +#define _Ret_bound_ +#define _Ret_bytecap_(size) +#define _Ret_bytecap_c_(size) +#define _Ret_bytecap_x_(size) +#define _Ret_bytecount_(size) +#define _Ret_bytecount_c_(size) +#define _Ret_bytecount_x_(size) +#define _Ret_cap_(size) +#define _Ret_cap_c_(size) +#define _Ret_cap_x_(size) +#define _Ret_count_(size) +#define _Ret_count_c_(size) +#define _Ret_count_x_(size) +#define _Ret_maybenull_ +#define _Ret_maybenull_z_ +#define _Ret_notnull_ +#define _Ret_null_ +#define _Ret_opt_ +#define _Ret_opt_bytecap_(size) +#define _Ret_opt_bytecap_c_(size) +#define _Ret_opt_bytecap_x_(size) +#define _Ret_opt_bytecount_(size) +#define _Ret_opt_bytecount_c_(size) +#define _Ret_opt_bytecount_x_(size) +#define _Ret_opt_cap_(size) +#define _Ret_opt_cap_c_(size) +#define _Ret_opt_cap_x_(size) +#define _Ret_opt_count_(size) +#define _Ret_opt_count_c_(size) +#define _Ret_opt_count_x_(size) +#define _Ret_opt_valid_ +#define _Ret_opt_z_ +#define _Ret_opt_z_bytecap_(size) +#define _Ret_opt_z_bytecount_(size) +#define _Ret_opt_z_cap_(size) +#define _Ret_opt_z_count_(size) +#define _Ret_range_(lb,ub) +#define _Ret_valid_ +#define _Ret_writes_(size) +#define _Ret_writes_bytes_(size) +#define _Ret_writes_bytes_maybenull_(size) +#define _Ret_writes_bytes_to_(size,count) +#define _Ret_writes_bytes_to_maybenull_(size,count) +#define _Ret_writes_maybenull_(size) +#define _Ret_writes_maybenull_z_(size) +#define _Ret_writes_to_(size,count) +#define _Ret_writes_to_maybenull_(size,count) +#define _Ret_writes_z_(size) +#define _Ret_z_ +#define _Ret_z_bytecap_(size) +#define _Ret_z_bytecount_(size) +#define _Ret_z_cap_(size) +#define _Ret_z_count_(size) +#define _Return_type_success_(expr) +#define _Scanf_format_string_ +#define _Scanf_s_format_string_ +#define _Struct_size_bytes_(size) +#define _Success_(expr) +#define _Unchanged_(e) +#define _Use_decl_annotations_ +#define _Valid_ +#define _When_(expr, annos) +#define _Writable_bytes_(size) +#define _Writable_elements_(size) +#define __inner_callback +#define __inner_exceptthat +#define __inner_typefix(ctype) + + +/* + * Dummy header annotations. + * + * These are typically defined in specstrings.h. + * + * Unfortunately these defines tend to clash with libstdc++ internal symbols. A solution is to ensure + * that all needed libstdc++ headers are included before this one. + * + * See also: + * - http://msdn.microsoft.com/en-us/library/aa383701.aspx + * - http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/specstrings.h?view=markup + */ + +#define __deref_out +#define __deref_out_bcount(x) +#define __deref_out_opt +#define __ecount(x) +#define __field_bcount(x) +#define __field_ecount(x) +#define __field_ecount_full(x) +#define __field_ecount_opt(x) +#define __in +#define __in_bcount(x) +#define __in_bcount_opt(x) +#define __in_ecount(x) +#define __in_ecount_opt(x) +#define __in_opt +#define __in_range(x,y) +#define __in_z +#define __in_z_opt +#define __inout +#define __inout_opt +#define __maybenull +#define __notnull +#define __nullterminated +#define __out +#define __out_bcount(x) +#define __out_bcount_full_opt(x) +#define __out_bcount_opt(x) +#define __out_ecount(x) +#define __out_ecount_opt(x) +#define __out_ecount_part_opt(x,y) +#define __out_ecount_part_z_opt(x,y) +#define __out_ecount_z(x) +#define __out_opt +#define __out_z +#define __range(x,y) +#define __success(x) + + +#ifndef __inline +#define __inline static __inline__ +#endif + +#ifndef DECLSPEC_DEPRECATED +#define DECLSPEC_DEPRECATED +#endif + +#ifndef DECLSPEC_NOVTABLE +#define DECLSPEC_NOVTABLE +#endif + +#ifndef __MINGW64_VERSION_MAJOR +#define INT8 signed char +#define UINT8 unsigned char +#define INT16 signed short +#define UINT16 unsigned short +#endif + + +#endif /* __MINGW32__ */ + diff --git a/cmake/FindDirectX.cmake b/cmake/FindDirectX.cmake new file mode 100644 index 0000000..cbbe4f1 --- /dev/null +++ b/cmake/FindDirectX.cmake @@ -0,0 +1,270 @@ +# - try to find DirectX include dirs and libraries + + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + + + if (CMAKE_CL_64) + set (DirectX_ARCHITECTURE x64) + else () + set (DirectX_ARCHITECTURE x86) + endif () + + + # DirectX SDK + find_path (DirectX_ROOT_DIR + Include/d3d9.h + PATHS + "$ENV{DXSDK_DIR}" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (June 2010)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (June 2010)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (February 2010)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (February 2010)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (March 2009)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (March 2009)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (August 2008)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (August 2008)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (June 2008)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (June 2008)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (March 2008)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (March 2008)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (November 2007)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (November 2007)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (August 2007)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (August 2007)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK" + DOC "DirectX SDK root directory" + ) + if (DirectX_ROOT_DIR) + set (DirectX_INC_SEARCH_PATH "${DirectX_ROOT_DIR}/Include") + set (DirectX_LIB_SEARCH_PATH "${DirectX_ROOT_DIR}/Lib/${DirectX_ARCHITECTURE}") + set (DirectX_BIN_SEARCH_PATH "${DirectX_ROOT_DIR}/Utilities/bin/x86") + endif () + + + # With VS 2011 and Windows 8 SDK, the DirectX SDK is included as part of + # the Windows SDK. + # + # See also: + # - http://msdn.microsoft.com/en-us/library/windows/desktop/ee663275.aspx + # TODO: Allow using DirectX SDK with VS 2011 + if (DEFINED MSVC_VERSION AND NOT ${MSVC_VERSION} LESS 1700) + find_path (WIN8_SDK_ROOT_DIR + Include/um/windows.h + PATHS + "$ENV{ProgramFiles}/Windows Kits/8.0" + "$ENV{ProgramFiles(x86)}/Windows Kits/8.0" + DOC "Windows 8 SDK root directory" + ) + + if (WIN8_SDK_ROOT_DIR) + set (DirectX_INC_SEARCH_PATH "${WIN8_SDK_ROOT_DIR}/Include/um" "${WIN8_SDK_ROOT_DIR}/Include/shared") + set (DirectX_LIB_SEARCH_PATH "${WIN8_SDK_ROOT_DIR}/Lib/Win8/um/${DirectX_ARCHITECTURE}") + set (DirectX_BIN_SEARCH_PATH "${WIN8_SDK_ROOT_DIR}/bin/x86") + endif () + endif () + + + find_path (DirectX_D3D_INCLUDE_DIR d3d.h + PATHS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where d3d.h resides") + + find_path (DirectX_D3DX_INCLUDE_DIR d3dx.h + PATHS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where d3dx.h resides") + + find_library (DirectX_DDRAW_LIBRARY ddraw + PATHS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where ddraw resides") + + find_library (DirectX_D3DX_LIBRARY d3dx + PATHS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where d3dx resides") + + if (DirectX_D3D_INCLUDE_DIR AND DirectX_DDRAW_LIBRARY) + set (DirectX_D3D_FOUND 1) + if (DirectX_D3DX_INCLUDE_DIR AND DirectX_D3DX_LIBRARY) + set (DirectX_D3DX_FOUND 1) + endif () + endif () + + + find_path (DirectX_D3D8_INCLUDE_DIR d3d8.h + PATHS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where d3d8.h resides") + + find_path (DirectX_D3DX8_INCLUDE_DIR d3dx8.h + PATHS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where d3dx8.h resides") + + find_library (DirectX_D3D8_LIBRARY d3d8 + PATHS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where d3d8 resides") + + find_library (DirectX_D3DX8_LIBRARY d3dx8 + PATHS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where d3dx8 resides") + + if (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3D8_LIBRARY) + set (DirectX_D3D8_FOUND 1) + if (DirectX_D3DX8_INCLUDE_DIR AND DirectX_D3DX8_LIBRARY) + set (DirectX_D3DX8_FOUND 1) + endif () + endif () + + + find_path (DirectX_D3D9_INCLUDE_DIR d3d9.h + PATHS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where d3d9.h resides") + + find_path (DirectX_D3DX9_INCLUDE_DIR d3dx9.h + PATHS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where d3dx9.h resides") + + find_library (DirectX_D3D9_LIBRARY d3d9 + PATHS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where d3d9 resides") + + find_library (DirectX_D3DX9_LIBRARY d3dx9 + PATHS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where d3dx9 resides") + + if (DirectX_D3D9_INCLUDE_DIR AND DirectX_D3D9_LIBRARY) + set (DirectX_D3D9_FOUND 1) + if (DirectX_D3DX9_INCLUDE_DIR AND DirectX_D3DX9_LIBRARY) + set (DirectX_D3DX9_FOUND 1) + endif () + endif () + + + find_path (DirectX_D3D10_INCLUDE_DIR d3d10.h + PATHS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where d3d10.h resides") + + find_path (DirectX_D3DX10_INCLUDE_DIR d3dx10.h + PATHS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where d3dx10.h resides") + + find_library (DirectX_D3D10_LIBRARY d3d10 + PATHS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where d3d10 resides") + + find_library (DirectX_D3DX10_LIBRARY d3dx10 + PATHS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where d3dx10 resides") + + if (DirectX_D3D10_INCLUDE_DIR AND DirectX_D3D10_LIBRARY) + set (DirectX_D3D10_FOUND 1) + if (DirectX_D3DX10_INCLUDE_DIR AND DirectX_D3DX10_LIBRARY) + set (DirectX_D3DX10_FOUND 1) + endif () + endif () + + + find_path (DirectX_D3D10_1_INCLUDE_DIR d3d10_1.h + PATHS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where d3d10_1.h resides") + + find_library (DirectX_D3D10_1_LIBRARY d3d10_1 + PATHS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where d3d10_1 resides") + + if (DirectX_D3D10_1_INCLUDE_DIR AND DirectX_D3D10_1_LIBRARY) + set (DirectX_D3D10_1_FOUND 1) + endif () + + + find_path (DirectX_D3D11_INCLUDE_DIR d3d11.h + PATHS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where d3d11.h resides") + + find_path (DirectX_D3DX11_INCLUDE_DIR d3dx11.h + PATHS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where d3dx11.h resides") + + find_library (DirectX_D3D11_LIBRARY d3d11 + PATHS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where d3d11 resides") + + find_library (DirectX_D3DX11_LIBRARY d3dx11 + PATHS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where d3dx11 resides") + + if (DirectX_D3D11_INCLUDE_DIR AND DirectX_D3D11_LIBRARY) + set (DirectX_D3D11_FOUND 1) + if (DirectX_D3DX11_INCLUDE_DIR AND DirectX_D3DX11_LIBRARY) + set (DirectX_D3DX11_FOUND 1) + endif () + endif () + + + find_path (DirectX_D3D11_1_INCLUDE_DIR d3d11_1.h + PATHS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where d3d11_1.h resides") + + if (DirectX_D3D11_1_INCLUDE_DIR AND DirectX_D3D11_LIBRARY) + set (DirectX_D3D11_1_FOUND 1) + endif () + + + find_program (DirectX_FXC_EXECUTABLE fxc + PATHS ${DirectX_BIN_SEARCH_PATH} + DOC "Path to fxc.exe executable.") + + + mark_as_advanced ( + DirectX_D3D_INCLUDE_DIR + DirectX_D3D_INCLUDE_DIR + DirectX_DDRAW_LIBRARY + DirectX_DDRAW_LIBRARY + DirectX_D3DX_INCLUDE_DIR + DirectX_D3DX_INCLUDE_DIR + DirectX_D3DX_LIBRARY + DirectX_D3DX_LIBRARY + DirectX_D3D8_INCLUDE_DIR + DirectX_D3D8_INCLUDE_DIR + DirectX_D3D8_LIBRARY + DirectX_D3D8_LIBRARY + DirectX_D3DX8_INCLUDE_DIR + DirectX_D3DX8_INCLUDE_DIR + DirectX_D3DX8_LIBRARY + DirectX_D3DX8_LIBRARY + DirectX_D3D9_INCLUDE_DIR + DirectX_D3D9_LIBRARY + DirectX_D3DX9_INCLUDE_DIR + DirectX_D3DX9_LIBRARY + DirectX_D3D10_INCLUDE_DIR + DirectX_D3D10_LIBRARY + DirectX_D3DX10_INCLUDE_DIR + DirectX_D3DX10_LIBRARY + DirectX_D3D10_1_INCLUDE_DIR + DirectX_D3D10_1_LIBRARY + DirectX_D3D11_INCLUDE_DIR + DirectX_D3D11_LIBRARY + DirectX_D3DX11_INCLUDE_DIR + DirectX_D3DX11_LIBRARY + DirectX_D3D11_1_INCLUDE_DIR + ) + + +endif () + + +mark_as_advanced ( + DirectX_D3D_FOUND + DirectX_D3DX_FOUND + DirectX_D3D8_FOUND + DirectX_D3DX8_FOUND + DirectX_D3D9_FOUND + DirectX_D3DX9_FOUND + DirectX_D3D10_FOUND + DirectX_D3DX10_FOUND + DirectX_D3D10_1_FOUND + DirectX_D3D11_FOUND + DirectX_D3DX11_FOUND + DirectX_D3D11_1_FOUND +) + + +# vim:set sw=4 ts=4 noet: -- 2.45.2