aboutsummaryrefslogtreecommitdiffstats
path: root/make/gl-common.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'make/gl-common.cfg')
-rw-r--r--make/gl-common.cfg47
1 files changed, 30 insertions, 17 deletions
diff --git a/make/gl-common.cfg b/make/gl-common.cfg
index 01afbd8b1..d2b473527 100644
--- a/make/gl-common.cfg
+++ b/make/gl-common.cfg
@@ -359,25 +359,38 @@ RangeCheck glVertexAttribPointer 5 1
RangeCheck glVertexAttribPointerARB 5 1
RangeCheck glWeightPointerARB 3 1
+# Give ourselves the texture width and height for range checking inside glGetTexImage
+JavaPrologue glGetTexImage int width = 0, height = 0, depth = 1;
+JavaPrologue glGetTexImage int[] tmp = new int[1];
+JavaPrologue glGetTexImage glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, tmp, 0);
+JavaPrologue glGetTexImage width = tmp[0];
+JavaPrologue glGetTexImage glGetTexLevelParameteriv(target, level, GL_TEXTURE_HEIGHT, tmp, 0);
+JavaPrologue glGetTexImage height = tmp[0];
+JavaPrologue glGetTexImage if (target == GL_TEXTURE_3D) {
+JavaPrologue glGetTexImage glGetTexLevelParameteriv(target, level, GL_TEXTURE_DEPTH, tmp, 0);
+JavaPrologue glGetTexImage depth = tmp[0];
+JavaPrologue glGetTexImage }
+
# Range check directives for various image-related routines
-RangeCheckBytes glColorTable 5 imageSizeInBytes({3}, {4}, {2} , 1 , 1)
-RangeCheckBytes glColorTableEXT 5 imageSizeInBytes({3}, {4}, {2} , 1 , 1)
-RangeCheckBytes glConvolutionFilter1D 5 imageSizeInBytes({3}, {4}, {2} , 1 , 1)
-RangeCheckBytes glConvolutionFilter2D 6 imageSizeInBytes({4}, {5}, {2} , {3} , 1)
-RangeCheckBytes glDrawPixels 4 imageSizeInBytes({2}, {3}, {0} , {1} , 1)
-RangeCheckBytes glReadPixels 6 imageSizeInBytes({4}, {5}, {2} , {3} , 1)
-RangeCheckBytes glTexImage1D 7 imageSizeInBytes({5}, {6}, {3} , 1 , 1)
-RangeCheckBytes glTexImage2D 8 imageSizeInBytes({6}, {7}, {3} , {4} , 1)
-RangeCheckBytes glTexImage3D 9 imageSizeInBytes({7}, {8}, {3} , {4} , {5})
-RangeCheckBytes glTexSubImage1D 6 imageSizeInBytes({4}, {5}, {3} , 1 , 1)
-RangeCheckBytes glTexSubImage2D 8 imageSizeInBytes({6}, {7}, {4} , {5} , 1)
-RangeCheckBytes glTexSubImage3D 10 imageSizeInBytes({8}, {9}, {5} , {6} , {7})
+RangeCheckBytes glColorTable 5 imageSizeInBytes({3}, {4}, {2} , 1 , 1 , 1, false)
+RangeCheckBytes glColorTableEXT 5 imageSizeInBytes({3}, {4}, {2} , 1 , 1 , 1, false)
+RangeCheckBytes glConvolutionFilter1D 5 imageSizeInBytes({3}, {4}, {2} , 1 , 1 , 1, false)
+RangeCheckBytes glConvolutionFilter2D 6 imageSizeInBytes({4}, {5}, {2} , {3} , 1 , 2, false)
+RangeCheckBytes glDrawPixels 4 imageSizeInBytes({2}, {3}, {0} , {1} , 1 , 2, false)
+RangeCheckBytes glReadPixels 6 imageSizeInBytes({4}, {5}, {2} , {3} , 1 , 2, true)
+RangeCheckBytes glTexImage1D 7 imageSizeInBytes({5}, {6}, {3} , 1 , 1 , 1, false)
+RangeCheckBytes glTexImage2D 8 imageSizeInBytes({6}, {7}, {3} , {4} , 1 , 2, false)
+RangeCheckBytes glTexImage3D 9 imageSizeInBytes({7}, {8}, {3} , {4} , {5} , 3, false)
+RangeCheckBytes glTexSubImage1D 6 imageSizeInBytes({4}, {5}, {3} , 1 , 1 , 1, false)
+RangeCheckBytes glTexSubImage2D 8 imageSizeInBytes({6}, {7}, {4} , {5} , 1 , 2, false)
+RangeCheckBytes glTexSubImage3D 10 imageSizeInBytes({8}, {9}, {5} , {6} , {7} , 3, false)
+# This may produce wrong answers for 1D textures
+RangeCheckBytes glGetTexImage 4 imageSizeInBytes({2}, {3}, width , height , depth, ((depth > 1) ? 3 : 2), true)
# Note we don't support glTexImage4DSGIS / glTexSubImage4DSGIS
-
-# Not simple to produce good range checks for these as we would need
-# to query the pipeline to see the size of the returned data before
-# fetching it
-# RangeCheckBytes glGetTexImage
+# FIXME: add the following unpack operations:
+# glBitmap, glPolygonStipple
+# and the following pack operations:
+# glGetColorTable, glGetConvolutionFilter, glGetSeparableFilter, glGetHistogram, glGetMinmax
# Range checks for server-side object creation and deletion methods
RangeCheck glGenBuffers 1 {0}