Roderick Colenbrander : wined3d: Fix ARB_imaging abuse.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed May 24 04:00:31 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 9c018fd877a0bc28810c598d47b010dc0a728fe2
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=9c018fd877a0bc28810c598d47b010dc0a728fe2
Author: Roderick Colenbrander <thunderbird2k at gmx.net>
Date: Sun May 21 15:05:41 2006 +0200
wined3d: Fix ARB_imaging abuse.
---
dlls/wined3d/device.c | 27 +++++++++++---
dlls/wined3d/directx.c | 3 ++
include/wine/wined3d_gl.h | 84 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 107 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index cfc9435..4d5b6b6 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -294,8 +294,12 @@ #undef APPLY_STATE
*/
D3DCOLORTOGLFLOAT4(This->stateBlock->renderState[WINED3DRS_TEXTUREFACTOR], col);
/* Set the default alpha blend color */
- glBlendColor(col[0], col[1], col[2], col[3]);
- checkGLcall("glBlendColor");
+ if (GL_SUPPORT(ARB_IMAGING)) {
+ GL_EXTCALL(glBlendColor(col[0], col[1], col[2], col[3]));
+ checkGLcall("glBlendColor");
+ } else {
+ WARN("Unsupported in local OpenGL implementation: glBlendColor\n");
+ }
D3DCOLORTOGLFLOAT4(This->stateBlock->renderState[WINED3DRS_TEXTUREFACTOR], col);
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, &col[0]);
@@ -3347,9 +3351,14 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRen
default:
FIXME("Unrecognized/Unhandled D3DBLENDOP value %ld\n", Value);
}
- TRACE("glBlendEquation(%x)\n", glParm);
- glBlendEquation(glParm);
- checkGLcall("glBlendEquation");
+
+ if(GL_SUPPORT(ARB_IMAGING)) {
+ TRACE("glBlendEquation(%x)\n", glParm);
+ GL_EXTCALL(glBlendEquation(glParm));
+ checkGLcall("glBlendEquation");
+ } else {
+ WARN("Unsupported in local OpenGL implementation: glBlendEquation\n");
+ }
}
break;
@@ -3362,8 +3371,12 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRen
float col[4];
D3DCOLORTOGLFLOAT4(Value, col);
/* Set the default alpha blend color */
- glBlendColor(col[0], col[1], col[2], col[3]);
- checkGLcall("glBlendColor");
+ if (GL_SUPPORT(ARB_IMAGING)) {
+ GL_EXTCALL(glBlendColor(col[0], col[1], col[2], col[3]));
+ checkGLcall("glBlendColor");
+ } else {
+ WARN("Unsupported in local OpenGL implementation: glBlendColor\n");
+ }
/* And now the default texture color as well */
for (i = 0; i < GL_LIMITS(textures); i++) {
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 62af4a6..c27e75c 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -489,6 +489,9 @@ #undef USE_GL_FUNC
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &gl_max);
TRACE_(d3d_caps)(" FOUND: ARB Pixel Shader support - GL_MAX_TEXTURE_IMAGE_UNITS_ARB=%u\n", gl_max);
gl_info->max_samplers = min(MAX_SAMPLERS, gl_max);
+ } else if (strcmp(ThisExtn, "GL_ARB_imaging") == 0) {
+ TRACE_(d3d_caps)(" FOUND: ARB imaging support\n");
+ gl_info->supported[ARB_IMAGING] = TRUE;
} else if (strcmp(ThisExtn, "GL_ARB_shading_language_100") == 0) {
TRACE_(d3d_caps)(" FOUND: GL Shading Language v100 support\n");
gl_info->supported[ARB_SHADING_LANGUAGE_100] = TRUE;
diff --git a/include/wine/wined3d_gl.h b/include/wine/wined3d_gl.h
index 48e540c..c054f1a 100644
--- a/include/wine/wined3d_gl.h
+++ b/include/wine/wined3d_gl.h
@@ -51,6 +51,86 @@ #define APIENTRY
* #defines and functions pointer
****************************************************/
+/* GL_ARB_imaging */
+#ifndef GL_ARB_imaging
+#define GL_CONSTANT_COLOR 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
+#define GL_CONSTANT_ALPHA 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
+#define GL_BLEND_COLOR 0x8005
+#define GL_FUNC_ADD 0x8006
+#define GL_MIN 0x8007
+#define GL_MAX 0x8008
+#define GL_BLEND_EQUATION 0x8009
+#define GL_FUNC_SUBTRACT 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT 0x800B
+#define GL_CONVOLUTION_1D 0x8010
+#define GL_CONVOLUTION_2D 0x8011
+#define GL_SEPARABLE_2D 0x8012
+#define GL_CONVOLUTION_BORDER_MODE 0x8013
+#define GL_CONVOLUTION_FILTER_SCALE 0x8014
+#define GL_CONVOLUTION_FILTER_BIAS 0x8015
+#define GL_REDUCE 0x8016
+#define GL_CONVOLUTION_FORMAT 0x8017
+#define GL_CONVOLUTION_WIDTH 0x8018
+#define GL_CONVOLUTION_HEIGHT 0x8019
+#define GL_MAX_CONVOLUTION_WIDTH 0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
+#define GL_HISTOGRAM 0x8024
+#define GL_PROXY_HISTOGRAM 0x8025
+#define GL_HISTOGRAM_WIDTH 0x8026
+#define GL_HISTOGRAM_FORMAT 0x8027
+#define GL_HISTOGRAM_RED_SIZE 0x8028
+#define GL_HISTOGRAM_GREEN_SIZE 0x8029
+#define GL_HISTOGRAM_BLUE_SIZE 0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
+#define GL_HISTOGRAM_SINK 0x802D
+#define GL_MINMAX 0x802E
+#define GL_MINMAX_FORMAT 0x802F
+#define GL_MINMAX_SINK 0x8030
+#define GL_TABLE_TOO_LARGE 0x8031
+#define GL_COLOR_MATRIX 0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
+#define GL_COLOR_TABLE 0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
+#define GL_PROXY_COLOR_TABLE 0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
+#define GL_COLOR_TABLE_SCALE 0x80D6
+#define GL_COLOR_TABLE_BIAS 0x80D7
+#define GL_COLOR_TABLE_FORMAT 0x80D8
+#define GL_COLOR_TABLE_WIDTH 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
+#define GL_CONSTANT_BORDER 0x8151
+#define GL_REPLICATE_BORDER 0x8153
+#define GL_CONVOLUTION_BORDER_COLOR 0x8154
+#endif
+typedef void (APIENTRY *PGLFNBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+typedef void (APIENTRY *PGLFNBLENDEQUATIONPROC) (GLenum mode);
/* GL_ARB_point_parameters */
#ifndef GL_ARB_point_parameters
#define GL_ARB_point_parameters 1
@@ -1186,6 +1266,7 @@ #define MAKEDWORD_VERSION(maj, min) ((m
typedef enum _GL_SupportedExt {
/* ARB */
ARB_FRAGMENT_PROGRAM,
+ ARB_IMAGING,
ARB_MULTISAMPLE,
ARB_MULTITEXTURE,
ARB_OCCLUSION_QUERY,
@@ -1247,6 +1328,9 @@ typedef enum _GL_SupportedExt {
****************************************************/
#define GL_EXT_FUNCS_GEN \
/** ARB Extensions **/ \
+ /* GL_ARB_imaging */ \
+ USE_GL_FUNC(PGLFNBLENDCOLORPROC, glBlendColor); \
+ USE_GL_FUNC(PGLFNBLENDEQUATIONPROC, glBlendEquation); \
/* GL_ARB_point_parameters */ \
USE_GL_FUNC(PGLFNGLPOINTPARAMETERFARBPROC, glPointParameterfARB); \
USE_GL_FUNC(PGLFNGLPOINTPARAMETERFVARBPROC, glPointParameterfvARB); \
More information about the wine-cvs
mailing list