mesa.git
15 years agog3dvl: Map/unmap incoming block texture once per frame.
Younes Manton [Mon, 24 Nov 2008 22:31:25 +0000 (17:31 -0500)]
g3dvl: Map/unmap incoming block texture once per frame.

(Technically once per flush, but we flush once per frame.)

15 years agog3dvl: Use texture instead of surface for backbuffer.
Younes Manton [Sun, 23 Nov 2008 19:06:20 +0000 (14:06 -0500)]
g3dvl: Use texture instead of surface for backbuffer.

15 years agog3dvl: Move MC shaders to a seperate file, #included in the original.
Younes Manton [Sun, 23 Nov 2008 18:28:01 +0000 (13:28 -0500)]
g3dvl: Move MC shaders to a seperate file, #included in the original.

15 years agosoftpipe: minor tweaks, clean-ups
Brian [Sun, 30 Nov 2008 00:56:41 +0000 (17:56 -0700)]
softpipe: minor tweaks, clean-ups

15 years agosoftpipe: compute nearest/linear texcoords four at a time.
Brian [Fri, 28 Nov 2008 18:32:32 +0000 (11:32 -0700)]
softpipe: compute nearest/linear texcoords four at a time.

A small step toward SIMD-izing the code.

15 years agogallium: minor texture-related clean-ups, comments, etc
Brian [Fri, 28 Nov 2008 17:28:44 +0000 (10:28 -0700)]
gallium: minor texture-related clean-ups, comments, etc

15 years agoNouveau: minor winsys API fix
Pekka Paalanen [Sun, 30 Nov 2008 18:54:02 +0000 (20:54 +0200)]
Nouveau: minor winsys API fix

Signed-off-by: Pekka Paalanen <pq@iki.fi>
15 years agoNouveau: nv{10,20} set_primitive API fix
Pekka Paalanen [Sun, 30 Nov 2008 18:40:55 +0000 (20:40 +0200)]
Nouveau: nv{10,20} set_primitive API fix

Also changes nvgl_primitive() to return zero, i.e. error, on unknown
primitive.

Signed-off-by: Pekka Paalanen <pq@iki.fi>
15 years agoNouveau: nv20 build fix: forgotten include
Pekka Paalanen [Sun, 30 Nov 2008 18:35:29 +0000 (20:35 +0200)]
Nouveau: nv20 build fix: forgotten include

Signed-off-by: Pekka Paalanen <pq@iki.fi>
15 years agoNouveau: fix minor API change in surface_copy
Pekka Paalanen [Sun, 30 Nov 2008 18:32:14 +0000 (20:32 +0200)]
Nouveau: fix minor API change in surface_copy

Signed-off-by: Pekka Paalanen <pq@iki.fi>
15 years agoNouveau: update nouveau_class.h
Pekka Paalanen [Sun, 30 Nov 2008 18:04:28 +0000 (20:04 +0200)]
Nouveau: update nouveau_class.h

Fresh from renouveau.

Signed-off-by: Pekka Paalanen <pq@iki.fi>
15 years agoNouveau: nv20 (nv10) immediate vertex submission
Pekka Paalanen [Sat, 29 Nov 2008 19:21:12 +0000 (21:21 +0200)]
Nouveau: nv20 (nv10) immediate vertex submission

This is nv10 commands, but is in nv20 source files.

Signed-off-by: Pekka Paalanen <pq@iki.fi>
15 years agoNouveau: properly redo nv20_vertex_layout.
Pekka Paalanen [Sat, 29 Nov 2008 21:02:06 +0000 (23:02 +0200)]
Nouveau: properly redo nv20_vertex_layout.

This is still for NV10 hardware.

Signed-off-by: Pekka Paalanen <pq@iki.fi>
15 years agoMerge commit 'origin/master' into gallium-0.2
Alan Hourihane [Fri, 28 Nov 2008 16:19:10 +0000 (16:19 +0000)]
Merge commit 'origin/master' into gallium-0.2

15 years agoMerge commit 'origin/gallium-0.1' into gallium-0.2
Alan Hourihane [Fri, 28 Nov 2008 16:18:36 +0000 (16:18 +0000)]
Merge commit 'origin/gallium-0.1' into gallium-0.2

Conflicts:

src/gallium/auxiliary/tgsi/tgsi_sse2.c

15 years agomesa: remove an assertion (see bug 18734)
Brian Paul [Thu, 27 Nov 2008 18:01:30 +0000 (11:01 -0700)]
mesa: remove an assertion (see bug 18734)

15 years agoRevert "glx: xcbified visual and FBConfig choosing"
RALOVICH, Kristóf [Thu, 27 Nov 2008 11:53:43 +0000 (12:53 +0100)]
Revert "glx: xcbified visual and FBConfig choosing"

This reverts commit 62688f11355cfa865d420755aa159875b425cc9b.

15 years agoRevert "glx: revert using nonexsisten XCB version of glXGetFBConfigsSGIX"
RALOVICH, Kristóf [Thu, 27 Nov 2008 11:53:19 +0000 (12:53 +0100)]
Revert "glx: revert using nonexsisten XCB version of glXGetFBConfigsSGIX"

This reverts commit 53698765019e50172be25a4ff48c83d54f0e7981.

15 years agotgsi: Reenable OPCODE_ARR.
Michal Krol [Wed, 26 Nov 2008 21:29:49 +0000 (22:29 +0100)]
tgsi: Reenable OPCODE_ARR.

15 years agoglx: revert using nonexsisten XCB version of glXGetFBConfigsSGIX
RALOVICH, Kristóf [Sat, 8 Nov 2008 17:18:26 +0000 (18:18 +0100)]
glx: revert using nonexsisten XCB version of glXGetFBConfigsSGIX

This uses a GLX VendorPrivate request. VendorPrivates are real GLX API
calls but use the same protocol request. XCB does not currently
support specific VendorPrivetes directly. See eg.:
http://lists.freedesktop.org/archives/xcb/2008-November/004036.html
for more information.

15 years agoglx: remove XCB debug leftover
RALOVICH, Kristóf [Sat, 8 Nov 2008 16:58:55 +0000 (17:58 +0100)]
glx: remove XCB debug leftover

15 years agoglx: xcbified glXSwapBuffers
RALOVICH, Kristóf [Tue, 4 Nov 2008 16:30:21 +0000 (17:30 +0100)]
glx: xcbified glXSwapBuffers

15 years agoglx: xcbified visual and FBConfig choosing
RALOVICH, Kristóf [Tue, 4 Nov 2008 16:17:18 +0000 (17:17 +0100)]
glx: xcbified visual and FBConfig choosing

15 years agoglx: xcbified __glXClientInfo
RALOVICH, Kristóf [Tue, 4 Nov 2008 11:41:55 +0000 (12:41 +0100)]
glx: xcbified __glXClientInfo

15 years agoconfigure.ac: advertise XCB
RALOVICH, Kristóf [Tue, 4 Nov 2008 10:53:32 +0000 (11:53 +0100)]
configure.ac: advertise XCB

15 years agoglx: no graphics context during initialization
RALOVICH, Kristóf [Tue, 4 Nov 2008 10:31:53 +0000 (11:31 +0100)]
glx: no graphics context during initialization

15 years agoglx: xcbified __glXIsDirect
RALOVICH, Kristóf [Tue, 4 Nov 2008 09:59:39 +0000 (10:59 +0100)]
glx: xcbified __glXIsDirect

15 years agoglx: missing static on local function
RALOVICH, Kristóf [Tue, 4 Nov 2008 09:43:06 +0000 (10:43 +0100)]
glx: missing static on local function

15 years agoglx: use __glXGetString
RALOVICH, Kristóf [Mon, 3 Nov 2008 17:32:35 +0000 (18:32 +0100)]
glx: use __glXGetString

15 years agoglx: use __glXQueryServerString
RALOVICH, Kristóf [Mon, 3 Nov 2008 17:32:20 +0000 (18:32 +0100)]
glx: use __glXQueryServerString

15 years agoglx: implement __glXGetString, hide __glXGetStringFromServer
RALOVICH, Kristóf [Mon, 3 Nov 2008 17:31:22 +0000 (18:31 +0100)]
glx: implement __glXGetString, hide __glXGetStringFromServer

15 years agoglx: implement QueryVersion using XCB
RALOVICH, Kristóf [Sat, 18 Oct 2008 15:00:13 +0000 (17:00 +0200)]
glx: implement QueryVersion using XCB

15 years agoglx: implement __glXQueryServerString using XCB
RALOVICH, Kristóf [Sat, 18 Oct 2008 14:53:08 +0000 (16:53 +0200)]
glx: implement __glXQueryServerString using XCB

15 years agowindows: fix visual object memleak
Thomas Henn [Wed, 26 Nov 2008 16:51:29 +0000 (09:51 -0700)]
windows: fix visual object memleak

15 years agowindows: fix _mesa_unreference_framebuffer() to pass ** type.
Thomas Henn [Wed, 26 Nov 2008 16:49:32 +0000 (09:49 -0700)]
windows: fix _mesa_unreference_framebuffer() to pass ** type.

15 years agomesa: add missing type check for function calls
Brian Paul [Wed, 26 Nov 2008 16:35:26 +0000 (09:35 -0700)]
mesa: add missing type check for function calls

15 years agomesa: add missing size check for assignment optimization
Brian Paul [Wed, 26 Nov 2008 16:35:08 +0000 (09:35 -0700)]
mesa: add missing size check for assignment optimization

15 years agotgsi: Fix build.
Michal Krol [Wed, 26 Nov 2008 16:20:07 +0000 (17:20 +0100)]
tgsi: Fix build.

15 years agotgsi: Implement OPCODE_ROUND for SSE2 backend.
Michal Krol [Wed, 26 Nov 2008 11:56:23 +0000 (12:56 +0100)]
tgsi: Implement OPCODE_ROUND for SSE2 backend.

15 years agotgsi: Implement OPCODE_SSG/SGN.
Michal Krol [Wed, 26 Nov 2008 12:54:28 +0000 (13:54 +0100)]
tgsi: Implement OPCODE_SSG/SGN.

15 years agomesa: remove debug code
Brian Paul [Wed, 26 Nov 2008 16:02:37 +0000 (09:02 -0700)]
mesa: remove debug code

15 years agodemos: press SPACE to toggle fbo_firecube animation
Brian Paul [Wed, 26 Nov 2008 16:00:44 +0000 (09:00 -0700)]
demos: press SPACE to toggle fbo_firecube animation

15 years agogallium: disable TGSI_OPCODE_ARR case until emit_rnd() is redone.
Brian Paul [Wed, 26 Nov 2008 14:41:19 +0000 (07:41 -0700)]
gallium: disable TGSI_OPCODE_ARR case until emit_rnd() is redone.

15 years agoRevert "tgsi: Implement OPCODE_ROUND for SSE2 backend."
Brian Paul [Wed, 26 Nov 2008 14:38:31 +0000 (07:38 -0700)]
Revert "tgsi: Implement OPCODE_ROUND for SSE2 backend."

This reverts commit 685fd2c035e284db2447ede0f6da278adaa70a0d.

Does not compile since emit_rnd() is trying to pass 4 params to
emit_func_call_dst() which takes 3 params.

15 years agomesa: add some missing switch cases for generating state var strings
Brian Paul [Wed, 26 Nov 2008 14:21:12 +0000 (07:21 -0700)]
mesa: add some missing switch cases for generating state var strings

15 years agofix possible memory leak in bezierPatchMeshMake
Daniel Zimmermann [Wed, 26 Nov 2008 10:48:53 +0000 (11:48 +0100)]
fix possible memory leak in bezierPatchMeshMake

15 years agogallium: fix glBitmap color bug
Brian Paul [Wed, 26 Nov 2008 14:06:26 +0000 (07:06 -0700)]
gallium: fix glBitmap color bug

By time we get around to rendering the cached bitmap, the current color may
have changed.  Need to make sure we load the constant slot with the cached
color.

15 years agogallium: replace 2 with PIPE_SHADER_TYPES
Brian Paul [Wed, 26 Nov 2008 14:06:14 +0000 (07:06 -0700)]
gallium: replace 2 with PIPE_SHADER_TYPES

15 years agotgsi: Implement OPCODE_SSG/SGN.
Michal Krol [Wed, 26 Nov 2008 12:54:28 +0000 (13:54 +0100)]
tgsi: Implement OPCODE_SSG/SGN.

15 years agotgsi: Implement OPCODE_ARR.
Michal Krol [Wed, 26 Nov 2008 12:17:25 +0000 (13:17 +0100)]
tgsi: Implement OPCODE_ARR.

15 years agotgsi: Implement OPCODE_ROUND for SSE2 backend.
Michal Krol [Wed, 26 Nov 2008 11:56:23 +0000 (12:56 +0100)]
tgsi: Implement OPCODE_ROUND for SSE2 backend.

15 years agotgsi: Implement OPCODE_ARR.
Michal Krol [Wed, 26 Nov 2008 12:17:25 +0000 (13:17 +0100)]
tgsi: Implement OPCODE_ARR.

15 years agotgsi: Implement OPCODE_ROUND for SSE2 backend.
Michal Krol [Wed, 26 Nov 2008 11:56:23 +0000 (12:56 +0100)]
tgsi: Implement OPCODE_ROUND for SSE2 backend.

15 years agogallium: added centroid/invarient fields to declarations
Brian Paul [Tue, 25 Nov 2008 16:02:27 +0000 (09:02 -0700)]
gallium: added centroid/invarient fields to declarations

15 years agosoftpipe: Fix function prototype.
Michal Krol [Tue, 25 Nov 2008 12:01:06 +0000 (13:01 +0100)]
softpipe: Fix function prototype.

15 years agoMerge commit 'origin/master' into gallium-0.2
Alan Hourihane [Tue, 25 Nov 2008 09:28:36 +0000 (09:28 +0000)]
Merge commit 'origin/master' into gallium-0.2

15 years agoMerge commit 'origin/gallium-0.1' into gallium-0.2
Alan Hourihane [Tue, 25 Nov 2008 09:28:30 +0000 (09:28 +0000)]
Merge commit 'origin/gallium-0.1' into gallium-0.2

Conflicts:

scons/gallium.py
src/gallium/auxiliary/pipebuffer/pb_buffer.h

15 years agopipebuffer: Fix buffer overflow.
José Fonseca [Tue, 25 Nov 2008 05:01:40 +0000 (14:01 +0900)]
pipebuffer: Fix buffer overflow.

15 years agogallium: fix inverted raster pos when drawing into FBO
Brian Paul [Tue, 25 Nov 2008 01:37:18 +0000 (18:37 -0700)]
gallium: fix inverted raster pos when drawing into FBO

15 years agomesa: added support for GLSL 1.20 array.length() method
Brian Paul [Tue, 25 Nov 2008 00:18:56 +0000 (17:18 -0700)]
mesa: added support for GLSL 1.20 array.length() method

This is the only method supported in GLSL 1.20 so we take a few short-cuts.

15 years agomesa: support for GLSL 1.20 array types
Brian Paul [Mon, 24 Nov 2008 22:28:21 +0000 (15:28 -0700)]
mesa: support for GLSL 1.20 array types

This allows syntax like "float[8] foo, bar;"

15 years agomesa: pass shader centroid/invariant info through to the TGSI shader
Brian Paul [Mon, 24 Nov 2008 21:36:00 +0000 (14:36 -0700)]
mesa: pass shader centroid/invariant info through to the TGSI shader

15 years agoremove some redundant rules from prev merge
Brian Paul [Mon, 24 Nov 2008 21:31:41 +0000 (14:31 -0700)]
remove some redundant rules from prev merge

15 years agoMerge commit 'origin/master' into gallium-0.2
Brian Paul [Mon, 24 Nov 2008 21:08:58 +0000 (14:08 -0700)]
Merge commit 'origin/master' into gallium-0.2

Conflicts:

progs/glsl/Makefile

15 years agotgsi: doxygen comments
Brian Paul [Mon, 24 Nov 2008 17:05:29 +0000 (10:05 -0700)]
tgsi: doxygen comments

15 years agotgsi: add tgsi_declaration fields for centroid sampling, invariant optimization
Brian Paul [Mon, 24 Nov 2008 17:02:44 +0000 (10:02 -0700)]
tgsi: add tgsi_declaration fields for centroid sampling, invariant optimization

15 years agomesa: copy centroid/invariance/precision info in parse_init_declarator()
Brian Paul [Mon, 24 Nov 2008 16:28:25 +0000 (09:28 -0700)]
mesa: copy centroid/invariance/precision info in parse_init_declarator()

15 years agomesa: check that varying variable qualifiers agree
Brian Paul [Mon, 24 Nov 2008 16:25:05 +0000 (09:25 -0700)]
mesa: check that varying variable qualifiers agree

15 years agomesa: copy precision/variant/centroid info in slang_fully_specified_type_copy()
Brian Paul [Mon, 24 Nov 2008 16:13:14 +0000 (09:13 -0700)]
mesa: copy precision/variant/centroid info in slang_fully_specified_type_copy()

15 years agomesa: set flags for varying vars
Brian Paul [Mon, 24 Nov 2008 16:05:49 +0000 (09:05 -0700)]
mesa: set flags for varying vars

15 years agomesa: rename program parameter flags to match other Mesa conventions
Brian Paul [Mon, 24 Nov 2008 16:04:52 +0000 (09:04 -0700)]
mesa: rename program parameter flags to match other Mesa conventions

15 years agomesa: copy Flags in _mesa_clone_parameter_list()
Brian Paul [Mon, 24 Nov 2008 16:04:11 +0000 (09:04 -0700)]
mesa: copy Flags in _mesa_clone_parameter_list()

15 years agomesa: dump/debug varying vars list
Brian Paul [Mon, 24 Nov 2008 16:03:47 +0000 (09:03 -0700)]
mesa: dump/debug varying vars list

15 years agomesa: added PROG_PARAM_ bits for invariant, flat/linear interpolation
Brian Paul [Mon, 24 Nov 2008 15:43:38 +0000 (08:43 -0700)]
mesa: added PROG_PARAM_ bits for invariant, flat/linear interpolation

Plus, update the print/debug code.

15 years agomesa: add Flags field to gl_program_parameter
Brian Paul [Mon, 24 Nov 2008 15:33:49 +0000 (08:33 -0700)]
mesa: add Flags field to gl_program_parameter

Only one flag defined so far: PROG_PARAM_CENTROID_BIT

15 years agodocs: update webmaster email addr
Brian Paul [Mon, 24 Nov 2008 15:14:28 +0000 (08:14 -0700)]
docs: update webmaster email addr

15 years agogallium: massage sp_vbuf_draw() and sp_vbuf_draw_arrays() to look more alike
Brian Paul [Tue, 11 Nov 2008 15:16:51 +0000 (08:16 -0700)]
gallium: massage sp_vbuf_draw() and sp_vbuf_draw_arrays() to look more alike

Also, update some comments.

15 years agomesa: issue error, don't crash, when calling a prototyped, but undefined function
Brian Paul [Sat, 22 Nov 2008 00:22:16 +0000 (17:22 -0700)]
mesa: issue error, don't crash, when calling a prototyped, but undefined function

Bug #18659.

15 years agomesa: better variable name: s/aux/store/
Brian Paul [Fri, 21 Nov 2008 21:24:28 +0000 (14:24 -0700)]
mesa: better variable name: s/aux/store/

15 years agoadded progs/demos/fragcoord.c - tests gl_FragCoord attribute in fragment shader
Brian Paul [Fri, 21 Nov 2008 17:03:19 +0000 (10:03 -0700)]
added progs/demos/fragcoord.c - tests gl_FragCoord attribute in fragment shader

Fragment's red/greenb/blue is a function gl_FragCoord.xyz

15 years agoi965: Add support for accelerated CopyTexSubImage.
Eric Anholt [Fri, 21 Nov 2008 09:09:47 +0000 (17:09 +0800)]
i965: Add support for accelerated CopyTexSubImage.

There were hacks in EmitCopyBlit before to adjust offsets so that y=0 after
the offsets had been adjusted for a negative pitch.  It appears that those
hacks were due to an unclear and surprising aspect of the hardware: inverting
the pitch results in the blit into the specified rectangle being inverted,
without the user needing to adjust y and base offset.

Tested with piglit copytexsubimage test on 915GM and GM965.  Should fix
serious performance issues with ETQW and other applications.

15 years agointel: Don't glBitmap fallback with scissoring enabled.
Eric Anholt [Fri, 21 Nov 2008 04:05:21 +0000 (12:05 +0800)]
intel: Don't glBitmap fallback with scissoring enabled.

The blit bitmap code already handles scissoring.  This is a 15-100% speedup on
blender benchmark.blend thanks to avoiding fallbacks. Bug #17951.

15 years agoi915: Don't overwrite i915's Viewport function from generic code.
Eric Anholt [Fri, 14 Nov 2008 02:32:44 +0000 (18:32 -0800)]
i915: Don't overwrite i915's Viewport function from generic code.

Instead, have i965 and i915 both call the generic function from their Viewport.

15 years agomesa: add gl_program::Input/OutputFlags[] array
Brian Paul [Mon, 24 Nov 2008 20:04:04 +0000 (13:04 -0700)]
mesa: add gl_program::Input/OutputFlags[] array

These arrays will indicate per-input or per-output options for vertex/fragment
programs such as centroid-sampling and invariance.

15 years agoglx: Add missing include for XCB, fixing crash on 64-bit.
Bernd Buschinski [Mon, 24 Nov 2008 19:39:07 +0000 (11:39 -0800)]
glx: Add missing include for XCB, fixing crash on 64-bit.

Bug #18689

15 years agoprogs: Add ignores
Jakob Bornecrantz [Mon, 24 Nov 2008 19:05:47 +0000 (20:05 +0100)]
progs: Add ignores

15 years agoutil: Add generic tile and detile functions
Jakob Bornecrantz [Mon, 24 Nov 2008 19:01:48 +0000 (20:01 +0100)]
util: Add generic tile and detile functions

15 years agowindows: replace free() with _mesa_unreference_framebuffer()
Brian Paul [Mon, 24 Nov 2008 18:10:58 +0000 (11:10 -0700)]
windows: replace free() with _mesa_unreference_framebuffer()

Fixes invalid memory reference bug when exiting.

15 years agomesa: copy centroid/invariance/precision info in parse_init_declarator()
Brian Paul [Mon, 24 Nov 2008 16:28:25 +0000 (09:28 -0700)]
mesa: copy centroid/invariance/precision info in parse_init_declarator()

15 years agomesa: check that varying variable qualifiers agree
Brian Paul [Mon, 24 Nov 2008 16:25:05 +0000 (09:25 -0700)]
mesa: check that varying variable qualifiers agree

15 years agomesa: copy precision/variant/centroid info in slang_fully_specified_type_copy()
Brian Paul [Mon, 24 Nov 2008 16:13:14 +0000 (09:13 -0700)]
mesa: copy precision/variant/centroid info in slang_fully_specified_type_copy()

15 years agomesa: set flags for varying vars
Brian Paul [Mon, 24 Nov 2008 16:05:49 +0000 (09:05 -0700)]
mesa: set flags for varying vars

15 years agomesa: rename program parameter flags to match other Mesa conventions
Brian Paul [Mon, 24 Nov 2008 16:04:52 +0000 (09:04 -0700)]
mesa: rename program parameter flags to match other Mesa conventions

15 years agomesa: copy Flags in _mesa_clone_parameter_list()
Brian Paul [Mon, 24 Nov 2008 16:04:11 +0000 (09:04 -0700)]
mesa: copy Flags in _mesa_clone_parameter_list()

15 years agomesa: dump/debug varying vars list
Brian Paul [Mon, 24 Nov 2008 16:03:47 +0000 (09:03 -0700)]
mesa: dump/debug varying vars list

15 years agomesa: added PROG_PARAM_ bits for invariant, flat/linear interpolation
Brian Paul [Mon, 24 Nov 2008 15:43:38 +0000 (08:43 -0700)]
mesa: added PROG_PARAM_ bits for invariant, flat/linear interpolation

Plus, update the print/debug code.

15 years agomesa: add Flags field to gl_program_parameter
Brian Paul [Mon, 24 Nov 2008 15:33:49 +0000 (08:33 -0700)]
mesa: add Flags field to gl_program_parameter

Only one flag defined so far: PROG_PARAM_CENTROID_BIT

15 years agodocs: update webmaster email addr
Brian Paul [Mon, 24 Nov 2008 15:14:28 +0000 (08:14 -0700)]
docs: update webmaster email addr

15 years agopipebuffer: Ondemand buffer manager.
José Fonseca [Mon, 24 Nov 2008 14:17:49 +0000 (23:17 +0900)]
pipebuffer: Ondemand buffer manager.

A variation of malloc buffers which get transferred to real graphics memory
when there is an attempt to validate them.

15 years agopipebuffer: Implement proper buffer validation.
José Fonseca [Mon, 24 Nov 2008 04:59:06 +0000 (13:59 +0900)]
pipebuffer: Implement proper buffer validation.