GLES2Dbg: noop - camelCase function names
Change-Id: Ifff2157fc9acd6d51b652a157a086dd0f81a67ae Signed-off-by: David Li <davidxli@google.com>
This commit is contained in:
@@ -58,7 +58,7 @@ import java.nio.ByteBuffer;
|
|||||||
|
|
||||||
public class MessageFormatter {
|
public class MessageFormatter {
|
||||||
|
|
||||||
static String FormatFloats(int count, final ByteBuffer data) {
|
static String formatFloats(int count, final ByteBuffer data) {
|
||||||
if (data.remaining() == 0)
|
if (data.remaining() == 0)
|
||||||
return "{}";
|
return "{}";
|
||||||
data.order(SampleView.targetByteOrder);
|
data.order(SampleView.targetByteOrder);
|
||||||
@@ -71,7 +71,7 @@ public class MessageFormatter {
|
|||||||
return ret + "}";
|
return ret + "}";
|
||||||
}
|
}
|
||||||
|
|
||||||
static String FormatInts(int count, final ByteBuffer data) {
|
static String formatInts(int count, final ByteBuffer data) {
|
||||||
if (data.remaining() == 0)
|
if (data.remaining() == 0)
|
||||||
return "{}";
|
return "{}";
|
||||||
data.order(SampleView.targetByteOrder);
|
data.order(SampleView.targetByteOrder);
|
||||||
@@ -84,7 +84,7 @@ public class MessageFormatter {
|
|||||||
return ret + "}";
|
return ret + "}";
|
||||||
}
|
}
|
||||||
|
|
||||||
static String FormatUints(int count, final ByteBuffer data) {
|
static String formatUInts(int count, final ByteBuffer data) {
|
||||||
if (data.remaining() == 0)
|
if (data.remaining() == 0)
|
||||||
return "{}";
|
return "{}";
|
||||||
data.order(SampleView.targetByteOrder);
|
data.order(SampleView.targetByteOrder);
|
||||||
@@ -98,7 +98,7 @@ public class MessageFormatter {
|
|||||||
return ret + "}";
|
return ret + "}";
|
||||||
}
|
}
|
||||||
|
|
||||||
static String FormatMatrix(int columns, int count, final ByteBuffer data) {
|
static String formatMatrix(int columns, int count, final ByteBuffer data) {
|
||||||
if (data.remaining() == 0)
|
if (data.remaining() == 0)
|
||||||
return "{}";
|
return "{}";
|
||||||
data.order(SampleView.targetByteOrder);
|
data.order(SampleView.targetByteOrder);
|
||||||
@@ -113,7 +113,7 @@ public class MessageFormatter {
|
|||||||
return ret + "}";
|
return ret + "}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String Format(final DebuggerMessage.Message msg,
|
public static String format(final DebuggerMessage.Message msg,
|
||||||
final boolean code) {
|
final boolean code) {
|
||||||
String str;
|
String str;
|
||||||
switch (msg.getFunction()) {
|
switch (msg.getFunction()) {
|
||||||
@@ -183,11 +183,11 @@ public class MessageFormatter {
|
|||||||
count = int(annotation)
|
count = int(annotation)
|
||||||
dataFormatter = ""
|
dataFormatter = ""
|
||||||
if paramType == "GLfloat":
|
if paramType == "GLfloat":
|
||||||
dataFormatter = "FormatFloats"
|
dataFormatter = "formatFloats"
|
||||||
elif paramType == "GLint":
|
elif paramType == "GLint":
|
||||||
dataFormatter = "FormatInts"
|
dataFormatter = "formatInts"
|
||||||
elif paramType == "GLuint":
|
elif paramType == "GLuint":
|
||||||
dataFormatter = "FormatUints"
|
dataFormatter = "formatUInts"
|
||||||
elif annotation == "GLstring":
|
elif annotation == "GLstring":
|
||||||
assert paramType == "GLchar"
|
assert paramType == "GLchar"
|
||||||
elif paramType.find("void") >= 0:
|
elif paramType.find("void") >= 0:
|
||||||
@@ -200,7 +200,7 @@ public class MessageFormatter {
|
|||||||
assert countArg != ""
|
assert countArg != ""
|
||||||
assert paramType == "GLfloat"
|
assert paramType == "GLfloat"
|
||||||
formatArgs += '\
|
formatArgs += '\
|
||||||
, (code ? "(GLfloat [])" : "") + FormatMatrix(%d, %d * msg.getArg%d(), msg.getData().asReadOnlyByteBuffer())' % (
|
, (code ? "(GLfloat [])" : "") + formatMatrix(%d, %d * msg.getArg%d(), msg.getData().asReadOnlyByteBuffer())' % (
|
||||||
columns, count, paramNames.index(countArg))
|
columns, count, paramNames.index(countArg))
|
||||||
elif annotation == "GLstring":
|
elif annotation == "GLstring":
|
||||||
formatArgs += '\
|
formatArgs += '\
|
||||||
@@ -262,7 +262,7 @@ package GLESv2Debugger;
|
|||||||
|
|
||||||
public class MessageFormatterCustom {
|
public class MessageFormatterCustom {
|
||||||
|
|
||||||
public static String Format(final DebuggerMessage.Message msg) {
|
public static String format(final DebuggerMessage.Message msg) {
|
||||||
String str;
|
String str;
|
||||||
switch (msg.getFunction()) {"""
|
switch (msg.getFunction()) {"""
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public abstract class MessageParser {
|
|||||||
|
|
||||||
String args;
|
String args;
|
||||||
|
|
||||||
String[] GetList()
|
String[] getList()
|
||||||
{
|
{
|
||||||
assert args.charAt(0) == '{';
|
assert args.charAt(0) == '{';
|
||||||
String arg = args;
|
String arg = args;
|
||||||
@@ -79,41 +79,41 @@ public abstract class MessageParser {
|
|||||||
return arg.split(",");
|
return arg.split(",");
|
||||||
}
|
}
|
||||||
|
|
||||||
ByteString ParseFloats(int count) {
|
ByteString parseFloats(int count) {
|
||||||
ByteBuffer buffer = ByteBuffer.allocate(count * 4);
|
ByteBuffer buffer = ByteBuffer.allocate(count * 4);
|
||||||
buffer.order(SampleView.targetByteOrder);
|
buffer.order(SampleView.targetByteOrder);
|
||||||
String [] arg = GetList();
|
String [] arg = getList();
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
buffer.putFloat(Float.parseFloat(arg[i].trim()));
|
buffer.putFloat(Float.parseFloat(arg[i].trim()));
|
||||||
buffer.rewind();
|
buffer.rewind();
|
||||||
return ByteString.copyFrom(buffer);
|
return ByteString.copyFrom(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
ByteString ParseInts(int count) {
|
ByteString parseInts(int count) {
|
||||||
ByteBuffer buffer = ByteBuffer.allocate(count * 4);
|
ByteBuffer buffer = ByteBuffer.allocate(count * 4);
|
||||||
buffer.order(SampleView.targetByteOrder);
|
buffer.order(SampleView.targetByteOrder);
|
||||||
String [] arg = GetList();
|
String [] arg = getList();
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
buffer.putInt(Integer.parseInt(arg[i].trim()));
|
buffer.putInt(Integer.parseInt(arg[i].trim()));
|
||||||
buffer.rewind();
|
buffer.rewind();
|
||||||
return ByteString.copyFrom(buffer);
|
return ByteString.copyFrom(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
ByteString ParseUInts(int count) {
|
ByteString parseUInts(int count) {
|
||||||
ByteBuffer buffer = ByteBuffer.allocate(count * 4);
|
ByteBuffer buffer = ByteBuffer.allocate(count * 4);
|
||||||
buffer.order(SampleView.targetByteOrder);
|
buffer.order(SampleView.targetByteOrder);
|
||||||
String [] arg = GetList();
|
String [] arg = getList();
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
buffer.putInt((int)(Long.parseLong(arg[i].trim()) & 0xffffffff));
|
buffer.putInt((int)(Long.parseLong(arg[i].trim()) & 0xffffffff));
|
||||||
buffer.rewind();
|
buffer.rewind();
|
||||||
return ByteString.copyFrom(buffer);
|
return ByteString.copyFrom(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
ByteString ParseMatrix(int columns, int count) {
|
ByteString parseMatrix(int columns, int count) {
|
||||||
return ParseFloats(columns * count);
|
return parseFloats(columns * count);
|
||||||
}
|
}
|
||||||
|
|
||||||
ByteString ParseString() {
|
ByteString parseString() {
|
||||||
// TODO: escape sequence and proper string literal
|
// TODO: escape sequence and proper string literal
|
||||||
String arg = args.substring(args.indexOf('"') + 1, args.lastIndexOf('"'));
|
String arg = args.substring(args.indexOf('"') + 1, args.lastIndexOf('"'));
|
||||||
args = args.substring(args.lastIndexOf('"'));
|
args = args.substring(args.lastIndexOf('"'));
|
||||||
@@ -125,7 +125,7 @@ public abstract class MessageParser {
|
|||||||
return ByteString.copyFromUtf8(arg);
|
return ByteString.copyFromUtf8(arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
String GetArgument()
|
String getArgument()
|
||||||
{
|
{
|
||||||
int comma = args.indexOf(",");
|
int comma = args.indexOf(",");
|
||||||
String arg = null;
|
String arg = null;
|
||||||
@@ -144,9 +144,9 @@ public abstract class MessageParser {
|
|||||||
return arg;
|
return arg;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ParseArgument()
|
int parseArgument()
|
||||||
{
|
{
|
||||||
String arg = GetArgument();
|
String arg = getArgument();
|
||||||
if (arg.startsWith("GL_"))
|
if (arg.startsWith("GL_"))
|
||||||
return GLEnum.valueOf(arg).value;
|
return GLEnum.valueOf(arg).value;
|
||||||
else if (arg.toLowerCase().startsWith("0x"))
|
else if (arg.toLowerCase().startsWith("0x"))
|
||||||
@@ -155,13 +155,13 @@ public abstract class MessageParser {
|
|||||||
return Integer.parseInt(arg);
|
return Integer.parseInt(arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ParseFloat()
|
int parseFloat()
|
||||||
{
|
{
|
||||||
String arg = GetArgument();
|
String arg = getArgument();
|
||||||
return Float.floatToRawIntBits(Float.parseFloat(arg));
|
return Float.floatToRawIntBits(Float.parseFloat(arg));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Parse(final Message.Builder builder, String string) {
|
public void parse(final Message.Builder builder, String string) {
|
||||||
int lparen = string.indexOf("("), rparen = string.lastIndexOf(")");
|
int lparen = string.indexOf("("), rparen = string.lastIndexOf(")");
|
||||||
String s = string.substring(0, lparen).trim();
|
String s = string.substring(0, lparen).trim();
|
||||||
args = string.substring(lparen + 1, rparen);
|
args = string.substring(lparen + 1, rparen);
|
||||||
@@ -225,11 +225,11 @@ public abstract class MessageParser {
|
|||||||
count = int(annotation)
|
count = int(annotation)
|
||||||
|
|
||||||
if paramType == "GLfloat":
|
if paramType == "GLfloat":
|
||||||
argumentParser = "ParseFloats"
|
argumentParser = "parseFloats"
|
||||||
elif paramType == "GLint":
|
elif paramType == "GLint":
|
||||||
argumentParser = "ParseInts"
|
argumentParser = "parseInts"
|
||||||
elif paramType == "GLuint":
|
elif paramType == "GLuint":
|
||||||
argumentParser = "ParseUInts"
|
argumentParser = "parseUInts"
|
||||||
elif annotation == "GLstring":
|
elif annotation == "GLstring":
|
||||||
assert paramType == 'GLchar'
|
assert paramType == 'GLchar'
|
||||||
elif paramType.find("void") >= 0:
|
elif paramType.find("void") >= 0:
|
||||||
@@ -242,10 +242,10 @@ public abstract class MessageParser {
|
|||||||
assert columns * columns == count
|
assert columns * columns == count
|
||||||
assert countArg != ""
|
assert countArg != ""
|
||||||
assert paramType == "GLfloat"
|
assert paramType == "GLfloat"
|
||||||
dataSetter = "builder.setData(ParseMatrix(%d, %d * builder.getArg%d()));" % (
|
dataSetter = "builder.setData(parseMatrix(%d, %d * builder.getArg%d()));" % (
|
||||||
columns, count, paramNames.index(countArg))
|
columns, count, paramNames.index(countArg))
|
||||||
elif annotation == "GLstring":
|
elif annotation == "GLstring":
|
||||||
dataSetter = "builder.setData(ParseString());"
|
dataSetter = "builder.setData(parseString());"
|
||||||
elif paramType.find("void") >= 0:
|
elif paramType.find("void") >= 0:
|
||||||
dataSetter = "// TODO"
|
dataSetter = "// TODO"
|
||||||
abstract = True
|
abstract = True
|
||||||
@@ -259,7 +259,7 @@ public abstract class MessageParser {
|
|||||||
else:
|
else:
|
||||||
if paramType == "GLfloat" or paramType == "GLclampf":
|
if paramType == "GLfloat" or paramType == "GLclampf":
|
||||||
argumentSetters += "\
|
argumentSetters += "\
|
||||||
builder.setArg%d(ParseFloat()); // %s %s\n" % (
|
builder.setArg%d(parseFloat()); // %s %s\n" % (
|
||||||
paramIndex, paramType, paramName)
|
paramIndex, paramType, paramName)
|
||||||
elif paramType.find("*") >= 0:
|
elif paramType.find("*") >= 0:
|
||||||
argumentSetters += "\
|
argumentSetters += "\
|
||||||
@@ -267,7 +267,7 @@ public abstract class MessageParser {
|
|||||||
abstract = True
|
abstract = True
|
||||||
else:
|
else:
|
||||||
argumentSetters += "\
|
argumentSetters += "\
|
||||||
builder.setArg%d(ParseArgument()); // %s %s\n" % (
|
builder.setArg%d(parseArgument()); // %s %s\n" % (
|
||||||
paramIndex, paramType, paramName)
|
paramIndex, paramType, paramName)
|
||||||
paramNames.append(paramName)
|
paramNames.append(paramName)
|
||||||
paramIndex += 1
|
paramIndex += 1
|
||||||
@@ -276,14 +276,14 @@ public abstract class MessageParser {
|
|||||||
output.write("%s" % argumentSetters)
|
output.write("%s" % argumentSetters)
|
||||||
else:
|
else:
|
||||||
output.write("\
|
output.write("\
|
||||||
Parse_%s(builder);\n" % functionName)
|
parse_%s(builder);\n" % functionName)
|
||||||
abstractParsers += "\
|
abstractParsers += "\
|
||||||
abstract void Parse_%s(Message.Builder builder);\n" % functionName
|
abstract void parse_%s(Message.Builder builder);\n" % functionName
|
||||||
print """\
|
print """\
|
||||||
@Override
|
@Override
|
||||||
void Parse_%s(Message.Builder builder) {
|
void parse_%s(Message.Builder builder) {
|
||||||
%s }
|
%s }
|
||||||
""" % (functionName, argumentSetters) # print skeleton code for MessageParserE
|
""" % (functionName, argumentSetters) # print skeleton code for MessageParserEx
|
||||||
|
|
||||||
output.write("\
|
output.write("\
|
||||||
break;\n")
|
break;\n")
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ public class BreakpointOption extends ScrolledComposite implements SelectionList
|
|||||||
this.layout();
|
this.layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetBreakpoint(Function function, boolean enabled) {
|
void setBreakpoint(Function function, boolean enabled) {
|
||||||
Message.Builder builder = Message.newBuilder();
|
Message.Builder builder = Message.newBuilder();
|
||||||
builder.setContextId(0); // FIXME: proper context id
|
builder.setContextId(0); // FIXME: proper context id
|
||||||
builder.setType(Type.Response);
|
builder.setType(Type.Response);
|
||||||
@@ -83,14 +83,14 @@ public class BreakpointOption extends ScrolledComposite implements SelectionList
|
|||||||
builder.setProp(Prop.ExpectResponse);
|
builder.setProp(Prop.ExpectResponse);
|
||||||
builder.setArg0(function.getNumber());
|
builder.setArg0(function.getNumber());
|
||||||
builder.setArg1(enabled ? 1 : 0);
|
builder.setArg1(enabled ? 1 : 0);
|
||||||
sampleView.messageQueue.AddCommand(builder.build());
|
sampleView.messageQueue.addCommand(builder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void widgetSelected(SelectionEvent e) {
|
public void widgetSelected(SelectionEvent e) {
|
||||||
Button btn = (Button) e.widget;
|
Button btn = (Button) e.widget;
|
||||||
Group group = (Group) btn.getParent();
|
Group group = (Group) btn.getParent();
|
||||||
SetBreakpoint(Function.valueOf(group.getText()), btn.getSelection());
|
setBreakpoint(Function.valueOf(group.getText()), btn.getSelection());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -99,12 +99,12 @@ public class BreakpointOption extends ScrolledComposite implements SelectionList
|
|||||||
|
|
||||||
private Function lastFunction = Function.NEG;
|
private Function lastFunction = Function.NEG;
|
||||||
|
|
||||||
public boolean ProcessMessage(final MessageQueue queue, final Message msg) throws IOException {
|
public boolean processMessage(final MessageQueue queue, final Message msg) throws IOException {
|
||||||
// use DefaultProcessMessage just to register the GL call
|
// use DefaultProcessMessage just to register the GL call
|
||||||
// but do not send response
|
// but do not send response
|
||||||
final int contextId = msg.getContextId();
|
final int contextId = msg.getContextId();
|
||||||
if (msg.getType() == Type.BeforeCall || msg.getType() == Type.AfterCall)
|
if (msg.getType() == Type.BeforeCall || msg.getType() == Type.AfterCall)
|
||||||
queue.DefaultProcessMessage(msg, true, false);
|
queue.defaultProcessMessage(msg, true, false);
|
||||||
final Message.Builder builder = Message.newBuilder();
|
final Message.Builder builder = Message.newBuilder();
|
||||||
builder.setContextId(contextId);
|
builder.setContextId(contextId);
|
||||||
builder.setType(Type.Response);
|
builder.setType(Type.Response);
|
||||||
@@ -114,7 +114,7 @@ public class BreakpointOption extends ScrolledComposite implements SelectionList
|
|||||||
shell.getDisplay().syncExec(new Runnable() {
|
shell.getDisplay().syncExec(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
String call = MessageFormatter.Format(msg, false);
|
String call = MessageFormatter.format(msg, false);
|
||||||
call = call.substring(0, call.indexOf("(")) + ' ' +
|
call = call.substring(0, call.indexOf("(")) + ' ' +
|
||||||
msg.getFunction() + call.substring(call.indexOf("("));
|
msg.getFunction() + call.substring(call.indexOf("("));
|
||||||
if (msg.hasData() && msg.getFunction() == Function.glShaderSource)
|
if (msg.hasData() && msg.getFunction() == Function.glShaderSource)
|
||||||
@@ -151,8 +151,8 @@ public class BreakpointOption extends ScrolledComposite implements SelectionList
|
|||||||
{
|
{
|
||||||
builder.setFunction(Function.SKIP);
|
builder.setFunction(Function.SKIP);
|
||||||
// AfterCall is skipped, so push BeforeCall to complete
|
// AfterCall is skipped, so push BeforeCall to complete
|
||||||
if (queue.GetPartialMessage(contextId) != null)
|
if (queue.getPartialMessage(contextId) != null)
|
||||||
queue.CompletePartialMessage(contextId);
|
queue.completePartialMessage(contextId);
|
||||||
}
|
}
|
||||||
else if (s.startsWith("c"))
|
else if (s.startsWith("c"))
|
||||||
builder.setFunction(Function.CONTINUE);
|
builder.setFunction(Function.CONTINUE);
|
||||||
@@ -160,23 +160,23 @@ public class BreakpointOption extends ScrolledComposite implements SelectionList
|
|||||||
{
|
{
|
||||||
Button btn = buttonsBreak.get(msg.getFunction());
|
Button btn = buttonsBreak.get(msg.getFunction());
|
||||||
btn.setSelection(false);
|
btn.setSelection(false);
|
||||||
SetBreakpoint(msg.getFunction(), false);
|
setBreakpoint(msg.getFunction(), false);
|
||||||
builder.setExpectResponse(false);
|
builder.setExpectResponse(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageParserEx.instance.Parse(builder, inputDialog.getValue());
|
MessageParserEx.instance.parse(builder, inputDialog.getValue());
|
||||||
lastFunction = builder.getFunction();
|
lastFunction = builder.getFunction();
|
||||||
builder.setExpectResponse(true);
|
builder.setExpectResponse(true);
|
||||||
// AfterCall is skipped, so push BeforeCall to complete
|
// AfterCall is skipped, so push BeforeCall to complete
|
||||||
if (queue.GetPartialMessage(contextId) != null)
|
if (queue.getPartialMessage(contextId) != null)
|
||||||
queue.CompletePartialMessage(contextId);
|
queue.completePartialMessage(contextId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// else defaults to continue BeforeCall and skip AfterCall
|
// else defaults to continue BeforeCall and skip AfterCall
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
queue.SendMessage(builder.build());
|
queue.sendMessage(builder.build());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,25 +40,25 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
framebufferNames, programNames, textureNames, shaderNames, renderbufferNames;
|
framebufferNames, programNames, textureNames, shaderNames, renderbufferNames;
|
||||||
|
|
||||||
/** return true if msg was a texture upload */
|
/** return true if msg was a texture upload */
|
||||||
private boolean CodeGenTextureUpload(final Message msg, final boolean replaceCopy) {
|
private boolean codeGenTextureUpload(final Message msg, final boolean replaceCopy) {
|
||||||
String s = null;
|
String s = null;
|
||||||
switch (msg.getFunction()) {
|
switch (msg.getFunction()) {
|
||||||
case glCompressedTexImage2D:
|
case glCompressedTexImage2D:
|
||||||
s = MessageFormatter.Format(msg, true).replace("arg7", "texData");
|
s = MessageFormatter.format(msg, true).replace("arg7", "texData");
|
||||||
break;
|
break;
|
||||||
case glCompressedTexSubImage2D:
|
case glCompressedTexSubImage2D:
|
||||||
case glTexImage2D:
|
case glTexImage2D:
|
||||||
case glTexSubImage2D:
|
case glTexSubImage2D:
|
||||||
s = MessageFormatter.Format(msg, true).replace("arg8", "texData");
|
s = MessageFormatter.format(msg, true).replace("arg8", "texData");
|
||||||
break;
|
break;
|
||||||
case glCopyTexImage2D:
|
case glCopyTexImage2D:
|
||||||
if (!replaceCopy) {
|
if (!replaceCopy) {
|
||||||
code.write(MessageFormatter.Format(msg, true));
|
code.write(MessageFormatter.format(msg, true));
|
||||||
code.write(";CHKERR;\n");
|
code.write(";CHKERR;\n");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
assert msg.getArg2() == msg.getPixelFormat(); // TODO
|
assert msg.getArg2() == msg.getPixelFormat(); // TODO
|
||||||
s = "//" + MessageFormatter.Format(msg, true) + "\n";
|
s = "//" + MessageFormatter.format(msg, true) + "\n";
|
||||||
s += String.format("glTexImage2D(%s, %d, %s, %d, %d, %d, %s, %s, texData);CHKERR;",
|
s += String.format("glTexImage2D(%s, %d, %s, %d, %d, %d, %s, %s, texData);CHKERR;",
|
||||||
GLEnum.valueOf(msg.getArg0()), msg.getArg1(),
|
GLEnum.valueOf(msg.getArg0()), msg.getArg1(),
|
||||||
GLEnum.valueOf(msg.getArg2()), msg.getArg5(), msg.getArg6(),
|
GLEnum.valueOf(msg.getArg2()), msg.getArg5(), msg.getArg6(),
|
||||||
@@ -67,12 +67,12 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
break;
|
break;
|
||||||
case glCopyTexSubImage2D:
|
case glCopyTexSubImage2D:
|
||||||
if (!replaceCopy) {
|
if (!replaceCopy) {
|
||||||
code.write(MessageFormatter.Format(msg, true));
|
code.write(MessageFormatter.format(msg, true));
|
||||||
code.write(";CHKERR;\n");
|
code.write(";CHKERR;\n");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// FIXME: check the texture format & type, and convert
|
// FIXME: check the texture format & type, and convert
|
||||||
s = "//" + MessageFormatter.Format(msg, true) + "\n";
|
s = "//" + MessageFormatter.format(msg, true) + "\n";
|
||||||
s += String.format(
|
s += String.format(
|
||||||
"glTexSubImage2D(%s, %d, %d, %d, %d, %d, %s, %s, texData);CHKERR;",
|
"glTexSubImage2D(%s, %d, %d, %d, %d, %d, %s, %s, texData);CHKERR;",
|
||||||
GLEnum.valueOf(msg.getArg0()), msg.getArg1(), msg.getArg2(),
|
GLEnum.valueOf(msg.getArg0()), msg.getArg1(), msg.getArg2(),
|
||||||
@@ -84,7 +84,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (msg.hasData()) {
|
if (msg.hasData()) {
|
||||||
final byte[] data = MessageProcessor.LZFDecompressChunks(msg.getData());
|
final byte[] data = MessageProcessor.lzfDecompressChunks(msg.getData());
|
||||||
try {
|
try {
|
||||||
code.write("{\n");
|
code.write("{\n");
|
||||||
code.format(" void * texData = malloc(%d);CHKERR;\n", data.length);
|
code.format(" void * texData = malloc(%d);CHKERR;\n", data.length);
|
||||||
@@ -107,7 +107,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenServerState(final GLServerState serverState) {
|
private void codeGenServerState(final GLServerState serverState) {
|
||||||
code.write("// CodeGenServerState\n");
|
code.write("// CodeGenServerState\n");
|
||||||
for (int i = 0; i < serverState.enableDisables.size(); i++) {
|
for (int i = 0; i < serverState.enableDisables.size(); i++) {
|
||||||
final GLEnum key = GLEnum.valueOf(serverState.enableDisables.keyAt(i));
|
final GLEnum key = GLEnum.valueOf(serverState.enableDisables.keyAt(i));
|
||||||
@@ -123,14 +123,14 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
code.format("// %s is default\n", key);
|
code.format("// %s is default\n", key);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
final String s = MessageFormatter.Format(msg, true);
|
final String s = MessageFormatter.format(msg, true);
|
||||||
code.write(s);
|
code.write(s);
|
||||||
code.write(";\n");
|
code.write(";\n");
|
||||||
}
|
}
|
||||||
// TODO: stencil and integers
|
// TODO: stencil and integers
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenServerShader(final GLServerShader serverShader) {
|
private void codeGenServerShader(final GLServerShader serverShader) {
|
||||||
code.write("// CodeGenServerShader\n");
|
code.write("// CodeGenServerShader\n");
|
||||||
for (int i = 0; i < serverShader.shaders.size(); i++) {
|
for (int i = 0; i < serverShader.shaders.size(); i++) {
|
||||||
final int name = serverShader.shaders.keyAt(i);
|
final int name = serverShader.shaders.keyAt(i);
|
||||||
@@ -172,7 +172,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenServerTexture(final GLServerTexture serverTexture, final boolean replaceCopy) {
|
private void codeGenServerTexture(final GLServerTexture serverTexture, final boolean replaceCopy) {
|
||||||
code.write("// CodeGenServerTexture\n");
|
code.write("// CodeGenServerTexture\n");
|
||||||
for (int i = 0; i < serverTexture.textures.size(); i++) {
|
for (int i = 0; i < serverTexture.textures.size(); i++) {
|
||||||
final int name = serverTexture.textures.keyAt(i);
|
final int name = serverTexture.textures.keyAt(i);
|
||||||
@@ -192,11 +192,11 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
tex.name);
|
tex.name);
|
||||||
code.write(s);
|
code.write(s);
|
||||||
for (final Message msg : tex.contentChanges) {
|
for (final Message msg : tex.contentChanges) {
|
||||||
if (CodeGenTextureUpload(msg, replaceCopy))
|
if (codeGenTextureUpload(msg, replaceCopy))
|
||||||
continue;
|
continue;
|
||||||
switch (msg.getFunction()) {
|
switch (msg.getFunction()) {
|
||||||
case glGenerateMipmap:
|
case glGenerateMipmap:
|
||||||
s = MessageFormatter.Format(msg, true);
|
s = MessageFormatter.format(msg, true);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert false;
|
assert false;
|
||||||
@@ -237,7 +237,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
serverTexture.texCube.name);
|
serverTexture.texCube.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenBufferData(final ByteBuffer buffer, final String call) {
|
private void codeGenBufferData(final ByteBuffer buffer, final String call) {
|
||||||
ByteBuffer bfr = buffer;
|
ByteBuffer bfr = buffer;
|
||||||
if (buffer.isReadOnly()) {
|
if (buffer.isReadOnly()) {
|
||||||
bfr = ByteBuffer.allocate(buffer.capacity());
|
bfr = ByteBuffer.allocate(buffer.capacity());
|
||||||
@@ -263,7 +263,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenServerVertex(final GLServerVertex v) {
|
private void codeGenServerVertex(final GLServerVertex v) {
|
||||||
code.write("// CodeGenServerVertex\n");
|
code.write("// CodeGenServerVertex\n");
|
||||||
for (int i = 0; i < v.buffers.size(); i++) {
|
for (int i = 0; i < v.buffers.size(); i++) {
|
||||||
final int name = v.buffers.keyAt(i);
|
final int name = v.buffers.keyAt(i);
|
||||||
@@ -283,7 +283,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
if (buffer.data != null) {
|
if (buffer.data != null) {
|
||||||
String s = String.format("glBufferData(%s, %d, bufferData, %s)", buffer.target,
|
String s = String.format("glBufferData(%s, %d, bufferData, %s)", buffer.target,
|
||||||
buffer.data.capacity(), buffer.usage);
|
buffer.data.capacity(), buffer.usage);
|
||||||
CodeGenBufferData(buffer.data, s);
|
codeGenBufferData(buffer.data, s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -314,7 +314,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
code.write("glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);CHKERR;\n");
|
code.write("glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);CHKERR;\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenGenNames(final Message msg) {
|
private void codeGenGenNames(final Message msg) {
|
||||||
final ByteBuffer names = msg.getData().asReadOnlyByteBuffer();
|
final ByteBuffer names = msg.getData().asReadOnlyByteBuffer();
|
||||||
names.order(SampleView.targetByteOrder);
|
names.order(SampleView.targetByteOrder);
|
||||||
SparseIntArray namesArray = null;
|
SparseIntArray namesArray = null;
|
||||||
@@ -352,7 +352,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenDeleteNames(final Message msg) {
|
private void codeGenDeleteNames(final Message msg) {
|
||||||
final ByteBuffer names = msg.getData().asReadOnlyByteBuffer();
|
final ByteBuffer names = msg.getData().asReadOnlyByteBuffer();
|
||||||
names.order(SampleView.targetByteOrder);
|
names.order(SampleView.targetByteOrder);
|
||||||
SparseIntArray namesArray = null;
|
SparseIntArray namesArray = null;
|
||||||
@@ -386,7 +386,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenBindNames(final Message msg) {
|
private void codeGenBindNames(final Message msg) {
|
||||||
String id = null;
|
String id = null;
|
||||||
SparseIntArray namesArray = null;
|
SparseIntArray namesArray = null;
|
||||||
final int name = msg.getArg1();
|
final int name = msg.getArg1();
|
||||||
@@ -417,11 +417,11 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
} else if (namesArray.get(name) != name)
|
} else if (namesArray.get(name) != name)
|
||||||
code.format("%s = %d;\n", id, name); // name was deleted
|
code.format("%s = %d;\n", id, name); // name was deleted
|
||||||
namesArray.put(name, name);
|
namesArray.put(name, name);
|
||||||
code.write(MessageFormatter.Format(msg, true));
|
code.write(MessageFormatter.format(msg, true));
|
||||||
code.write(";CHKERR;\n");
|
code.write(";CHKERR;\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenDrawArrays(final GLServerVertex v, final MessageData msgData)
|
private void codeGenDrawArrays(final GLServerVertex v, final MessageData msgData)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
final int maxAttrib = msgData.msg.getArg7();
|
final int maxAttrib = msgData.msg.getArg7();
|
||||||
if (maxAttrib < 1) {
|
if (maxAttrib < 1) {
|
||||||
@@ -478,7 +478,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
code.write("};\n");
|
code.write("};\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenDrawElements(final GLServerVertex v, final MessageData msgData)
|
private void codeGenDrawElements(final GLServerVertex v, final MessageData msgData)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
final int maxAttrib = msgData.msg.getArg7();
|
final int maxAttrib = msgData.msg.getArg7();
|
||||||
if (maxAttrib < 1) {
|
if (maxAttrib < 1) {
|
||||||
@@ -506,7 +506,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
final byte[] element = new byte[attribDataStride];
|
final byte[] element = new byte[attribDataStride];
|
||||||
final ByteBuffer data = msgData.msg.getData().asReadOnlyByteBuffer();
|
final ByteBuffer data = msgData.msg.getData().asReadOnlyByteBuffer();
|
||||||
data.order(SampleView.targetByteOrder);
|
data.order(SampleView.targetByteOrder);
|
||||||
final ByteBuffer indexData = ByteBuffer.allocate(count * GLServerVertex.TypeSize(type));
|
final ByteBuffer indexData = ByteBuffer.allocate(count * GLServerVertex.typeSize(type));
|
||||||
indexData.order(SampleView.targetByteOrder);
|
indexData.order(SampleView.targetByteOrder);
|
||||||
final ByteBuffer attribData = ByteBuffer.allocate(count * attribDataStride);
|
final ByteBuffer attribData = ByteBuffer.allocate(count * attribDataStride);
|
||||||
attribData.order(SampleView.targetByteOrder);
|
attribData.order(SampleView.targetByteOrder);
|
||||||
@@ -596,7 +596,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
code.write("};\n");
|
code.write("};\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenDraw(final GLServerVertex v, final MessageData msgData)
|
private void codeGenDraw(final GLServerVertex v, final MessageData msgData)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
final int maxAttrib = msgData.msg.getArg7();
|
final int maxAttrib = msgData.msg.getArg7();
|
||||||
if (maxAttrib < 1) {
|
if (maxAttrib < 1) {
|
||||||
@@ -638,10 +638,10 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
code.write("};\n");
|
code.write("};\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenFunction(final Context ctx, final MessageData msgData)
|
private void codeGenFunction(final Context ctx, final MessageData msgData)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
final Message msg = msgData.msg;
|
final Message msg = msgData.msg;
|
||||||
String call = MessageFormatter.Format(msg, true);
|
String call = MessageFormatter.format(msg, true);
|
||||||
switch (msg.getFunction()) {
|
switch (msg.getFunction()) {
|
||||||
case glActiveTexture:
|
case glActiveTexture:
|
||||||
case glAttachShader:
|
case glAttachShader:
|
||||||
@@ -651,7 +651,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
case glBindFramebuffer:
|
case glBindFramebuffer:
|
||||||
case glBindRenderbuffer:
|
case glBindRenderbuffer:
|
||||||
case glBindTexture:
|
case glBindTexture:
|
||||||
CodeGenBindNames(msg);
|
codeGenBindNames(msg);
|
||||||
return;
|
return;
|
||||||
case glBlendColor:
|
case glBlendColor:
|
||||||
case glBlendEquation:
|
case glBlendEquation:
|
||||||
@@ -660,12 +660,12 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
case glBlendFuncSeparate:
|
case glBlendFuncSeparate:
|
||||||
break;
|
break;
|
||||||
case glBufferData:
|
case glBufferData:
|
||||||
call = MessageFormatter.Format(msg, true).replace("arg2", "bufferData");
|
call = MessageFormatter.format(msg, true).replace("arg2", "bufferData");
|
||||||
CodeGenBufferData(msg.getData().asReadOnlyByteBuffer(), call);
|
codeGenBufferData(msg.getData().asReadOnlyByteBuffer(), call);
|
||||||
return;
|
return;
|
||||||
case glBufferSubData:
|
case glBufferSubData:
|
||||||
call = MessageFormatter.Format(msg, true).replace("arg3", "bufferData");
|
call = MessageFormatter.format(msg, true).replace("arg3", "bufferData");
|
||||||
CodeGenBufferData(msg.getData().asReadOnlyByteBuffer(), call);
|
codeGenBufferData(msg.getData().asReadOnlyByteBuffer(), call);
|
||||||
return;
|
return;
|
||||||
case glCheckFramebufferStatus:
|
case glCheckFramebufferStatus:
|
||||||
case glClear:
|
case glClear:
|
||||||
@@ -679,7 +679,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
case glCompressedTexSubImage2D:
|
case glCompressedTexSubImage2D:
|
||||||
case glCopyTexImage2D:
|
case glCopyTexImage2D:
|
||||||
case glCopyTexSubImage2D:
|
case glCopyTexSubImage2D:
|
||||||
CodeGenTextureUpload(msg, false);
|
codeGenTextureUpload(msg, false);
|
||||||
return;
|
return;
|
||||||
case glCreateProgram:
|
case glCreateProgram:
|
||||||
namesHeader.format("extern GLuint program_%d;\n", msg.getRet());
|
namesHeader.format("extern GLuint program_%d;\n", msg.getRet());
|
||||||
@@ -699,13 +699,13 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
programNames.put(msg.getArg0(), 0);
|
programNames.put(msg.getArg0(), 0);
|
||||||
break;
|
break;
|
||||||
case glDeleteRenderbuffers:
|
case glDeleteRenderbuffers:
|
||||||
CodeGenDeleteNames(msg);
|
codeGenDeleteNames(msg);
|
||||||
return;
|
return;
|
||||||
case glDeleteShader:
|
case glDeleteShader:
|
||||||
shaderNames.put(msg.getArg0(), 0);
|
shaderNames.put(msg.getArg0(), 0);
|
||||||
return;
|
return;
|
||||||
case glDeleteTextures:
|
case glDeleteTextures:
|
||||||
CodeGenDeleteNames(msg);
|
codeGenDeleteNames(msg);
|
||||||
return;
|
return;
|
||||||
case glDepthFunc:
|
case glDepthFunc:
|
||||||
case glDepthMask:
|
case glDepthMask:
|
||||||
@@ -716,11 +716,11 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
break;
|
break;
|
||||||
case glDrawArrays:
|
case glDrawArrays:
|
||||||
// CodeGenDraw(ctx.serverVertex, msgData);
|
// CodeGenDraw(ctx.serverVertex, msgData);
|
||||||
CodeGenDrawArrays(ctx.serverVertex, msgData);
|
codeGenDrawArrays(ctx.serverVertex, msgData);
|
||||||
return;
|
return;
|
||||||
case glDrawElements:
|
case glDrawElements:
|
||||||
// CodeGenDraw(ctx.serverVertex, msgData);
|
// CodeGenDraw(ctx.serverVertex, msgData);
|
||||||
CodeGenDrawElements(ctx.serverVertex, msgData);
|
codeGenDrawElements(ctx.serverVertex, msgData);
|
||||||
return;
|
return;
|
||||||
case glEnable:
|
case glEnable:
|
||||||
case glEnableVertexAttribArray:
|
case glEnableVertexAttribArray:
|
||||||
@@ -731,14 +731,14 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
case glFrontFace:
|
case glFrontFace:
|
||||||
break;
|
break;
|
||||||
case glGenBuffers:
|
case glGenBuffers:
|
||||||
CodeGenGenNames(msg);
|
codeGenGenNames(msg);
|
||||||
return;
|
return;
|
||||||
case glGenerateMipmap:
|
case glGenerateMipmap:
|
||||||
break;
|
break;
|
||||||
case glGenFramebuffers:
|
case glGenFramebuffers:
|
||||||
case glGenRenderbuffers:
|
case glGenRenderbuffers:
|
||||||
case glGenTextures:
|
case glGenTextures:
|
||||||
CodeGenGenNames(msg);
|
codeGenGenNames(msg);
|
||||||
return;
|
return;
|
||||||
case glGetActiveAttrib:
|
case glGetActiveAttrib:
|
||||||
case glGetActiveUniform:
|
case glGetActiveUniform:
|
||||||
@@ -814,7 +814,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
case glStencilOpSeparate:
|
case glStencilOpSeparate:
|
||||||
break;
|
break;
|
||||||
case glTexImage2D:
|
case glTexImage2D:
|
||||||
CodeGenTextureUpload(msg, false);
|
codeGenTextureUpload(msg, false);
|
||||||
return;
|
return;
|
||||||
case glTexParameterf:
|
case glTexParameterf:
|
||||||
break;
|
break;
|
||||||
@@ -825,7 +825,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
case glTexParameteriv:
|
case glTexParameteriv:
|
||||||
return; // TODO
|
return; // TODO
|
||||||
case glTexSubImage2D:
|
case glTexSubImage2D:
|
||||||
CodeGenTextureUpload(msg, false);
|
codeGenTextureUpload(msg, false);
|
||||||
return;
|
return;
|
||||||
case glUniform1f:
|
case glUniform1f:
|
||||||
case glUniform1fv:
|
case glUniform1fv:
|
||||||
@@ -880,7 +880,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
code.write(call + ";CHKERR;\n");
|
code.write(call + ";CHKERR;\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenSetup(final Context ctx) {
|
private void codeGenSetup(final Context ctx) {
|
||||||
try {
|
try {
|
||||||
codeFile = new FileWriter("frame_setup.cpp", false);
|
codeFile = new FileWriter("frame_setup.cpp", false);
|
||||||
code = new PrintWriter(codeFile);
|
code = new PrintWriter(codeFile);
|
||||||
@@ -1060,10 +1060,10 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
code.write("#include \"frame_names.h\"\n");
|
code.write("#include \"frame_names.h\"\n");
|
||||||
code.write("void FrameSetup(){\n");
|
code.write("void FrameSetup(){\n");
|
||||||
|
|
||||||
CodeGenServerState(ctx.serverState);
|
codeGenServerState(ctx.serverState);
|
||||||
CodeGenServerShader(ctx.serverShader);
|
codeGenServerShader(ctx.serverShader);
|
||||||
CodeGenServerTexture(ctx.serverTexture, true);
|
codeGenServerTexture(ctx.serverTexture, true);
|
||||||
CodeGenServerVertex(ctx.serverVertex);
|
codeGenServerVertex(ctx.serverVertex);
|
||||||
|
|
||||||
code.write("}\n");
|
code.write("}\n");
|
||||||
|
|
||||||
@@ -1080,7 +1080,7 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CodeGenCleanup() {
|
private void codeGenCleanup() {
|
||||||
make.write(" frame_setup.cpp \\\n");
|
make.write(" frame_setup.cpp \\\n");
|
||||||
make.write(" frame_names.cpp \\\n");
|
make.write(" frame_names.cpp \\\n");
|
||||||
make.write("#\n");
|
make.write("#\n");
|
||||||
@@ -1134,8 +1134,8 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
public void run(IProgressMonitor monitor) throws InvocationTargetException,
|
public void run(IProgressMonitor monitor) throws InvocationTargetException,
|
||||||
InterruptedException {
|
InterruptedException {
|
||||||
progress.beginTask("CodeGenFrames", count + 2);
|
progress.beginTask("CodeGenFrames", count + 2);
|
||||||
Context ctx = dbgCtx.GetFrame(0).startContext.clone();
|
Context ctx = dbgCtx.getFrame(0).startContext.clone();
|
||||||
CodeGenSetup(ctx);
|
codeGenSetup(ctx);
|
||||||
progress.worked(1);
|
progress.worked(1);
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
try {
|
try {
|
||||||
@@ -1149,14 +1149,14 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
|
|
||||||
code.write("#include \"frame_names.h\"\n");
|
code.write("#include \"frame_names.h\"\n");
|
||||||
code.format("void Frame%d(){\n", i);
|
code.format("void Frame%d(){\n", i);
|
||||||
final Frame frame = dbgCtx.GetFrame(i);
|
final Frame frame = dbgCtx.getFrame(i);
|
||||||
for (int j = 0; j < frame.Size(); j++) {
|
for (int j = 0; j < frame.size(); j++) {
|
||||||
final MessageData msgData = frame.Get(j);
|
final MessageData msgData = frame.get(j);
|
||||||
code.format("/* frame function %d: %s %s*/\n", j, msgData.msg.getFunction(),
|
code.format("/* frame function %d: %s %s*/\n", j, msgData.msg.getFunction(),
|
||||||
MessageFormatter.Format(msgData.msg, false));
|
MessageFormatter.format(msgData.msg, false));
|
||||||
ctx.ProcessMessage(msgData.msg);
|
ctx.processMessage(msgData.msg);
|
||||||
try {
|
try {
|
||||||
CodeGenFunction(ctx, msgData);
|
codeGenFunction(ctx, msgData);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
assert false;
|
assert false;
|
||||||
@@ -1180,11 +1180,11 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
}
|
}
|
||||||
namesSource.write("};\n");
|
namesSource.write("};\n");
|
||||||
namesSource.format("const unsigned int FrameCount = %d;\n", count);
|
namesSource.format("const unsigned int FrameCount = %d;\n", count);
|
||||||
CodeGenCleanup();
|
codeGenCleanup();
|
||||||
progress.worked(1);
|
progress.worked(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeGenFrames(final DebugContext dbgCtx, int count, final Shell shell) {
|
void codeGenFrames(final DebugContext dbgCtx, int count, final Shell shell) {
|
||||||
this.dbgCtx = dbgCtx;
|
this.dbgCtx = dbgCtx;
|
||||||
this.count = count;
|
this.count = count;
|
||||||
ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
|
ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
|
||||||
@@ -1202,9 +1202,9 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
progress = null;
|
progress = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeGenFrame(final Frame frame) {
|
void codeGenFrame(final Frame frame) {
|
||||||
Context ctx = frame.startContext.clone();
|
Context ctx = frame.startContext.clone();
|
||||||
CodeGenSetup(ctx);
|
codeGenSetup(ctx);
|
||||||
try {
|
try {
|
||||||
codeFile = new FileWriter("frame0.cpp", false);
|
codeFile = new FileWriter("frame0.cpp", false);
|
||||||
code = new PrintWriter(codeFile);
|
code = new PrintWriter(codeFile);
|
||||||
@@ -1215,13 +1215,13 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
make.format(" frame0.cpp \\\n");
|
make.format(" frame0.cpp \\\n");
|
||||||
code.write("#include \"frame_names.h\"\n");
|
code.write("#include \"frame_names.h\"\n");
|
||||||
code.format("void Frame0(){\n");
|
code.format("void Frame0(){\n");
|
||||||
for (int i = 0; i < frame.Size(); i++) {
|
for (int i = 0; i < frame.size(); i++) {
|
||||||
final MessageData msgData = frame.Get(i);
|
final MessageData msgData = frame.get(i);
|
||||||
code.format("/* frame function %d: %s %s*/\n", i, msgData.msg.getFunction(),
|
code.format("/* frame function %d: %s %s*/\n", i, msgData.msg.getFunction(),
|
||||||
MessageFormatter.Format(msgData.msg, false));
|
MessageFormatter.format(msgData.msg, false));
|
||||||
ctx.ProcessMessage(msgData.msg);
|
ctx.processMessage(msgData.msg);
|
||||||
try {
|
try {
|
||||||
CodeGenFunction(ctx, msgData);
|
codeGenFunction(ctx, msgData);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
assert false;
|
assert false;
|
||||||
@@ -1232,6 +1232,6 @@ public class CodeGen implements IRunnableWithProgress {
|
|||||||
namesHeader.write("extern void (* Frames[1])();\n");
|
namesHeader.write("extern void (* Frames[1])();\n");
|
||||||
namesSource.write("void (* Frames[1])() = {Frame0};\n");
|
namesSource.write("void (* Frames[1])() = {Frame0};\n");
|
||||||
namesSource.write("const unsigned int FrameCount = 1;\n");
|
namesSource.write("const unsigned int FrameCount = 1;\n");
|
||||||
CodeGenCleanup();
|
codeGenCleanup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,45 +56,45 @@ class Frame {
|
|||||||
this.filePosition = filePosition;
|
this.filePosition = filePosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Add(final MessageData msgData) {
|
void add(final MessageData msgData) {
|
||||||
calls.add(msgData);
|
calls.add(msgData);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IncreaseCallsCount() {
|
void increaseCallsCount() {
|
||||||
callsCount++;
|
callsCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
Context ComputeContext(final MessageData call) {
|
Context computeContext(final MessageData call) {
|
||||||
Context ctx = startContext.clone();
|
Context ctx = startContext.clone();
|
||||||
for (int i = 0; i < calls.size(); i++)
|
for (int i = 0; i < calls.size(); i++)
|
||||||
if (call == calls.get(i))
|
if (call == calls.get(i))
|
||||||
return ctx;
|
return ctx;
|
||||||
else
|
else
|
||||||
ctx.ProcessMessage(calls.get(i).msg);
|
ctx.processMessage(calls.get(i).msg);
|
||||||
assert false;
|
assert false;
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Size() {
|
int size() {
|
||||||
return callsCount;
|
return callsCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageData Get(final int i) {
|
MessageData get(final int i) {
|
||||||
return calls.get(i);
|
return calls.get(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<MessageData> Get() {
|
ArrayList<MessageData> get() {
|
||||||
return calls;
|
return calls;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unload() {
|
void unload() {
|
||||||
if (calls == null)
|
if (calls == null)
|
||||||
return;
|
return;
|
||||||
calls.clear();
|
calls.clear();
|
||||||
calls = null;
|
calls = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(final RandomAccessFile file) {
|
void load(final RandomAccessFile file) {
|
||||||
if (calls != null && calls.size() == callsCount)
|
if (calls != null && calls.size() == callsCount)
|
||||||
return;
|
return;
|
||||||
try {
|
try {
|
||||||
@@ -109,7 +109,7 @@ class Frame {
|
|||||||
final byte[] data = new byte[len];
|
final byte[] data = new byte[len];
|
||||||
file.read(data);
|
file.read(data);
|
||||||
Message msg = Message.parseFrom(data);
|
Message msg = Message.parseFrom(data);
|
||||||
ctx.ProcessMessage(msg);
|
ctx.processMessage(msg);
|
||||||
final MessageData msgData = new MessageData(Display.getCurrent(), msg, ctx);
|
final MessageData msgData = new MessageData(Display.getCurrent(), msg, ctx);
|
||||||
calls.add(msgData);
|
calls.add(msgData);
|
||||||
}
|
}
|
||||||
@@ -153,20 +153,20 @@ class DebugContext {
|
|||||||
* Caches new Message, and formats into MessageData for current frame; this
|
* Caches new Message, and formats into MessageData for current frame; this
|
||||||
* function is called exactly once for each new Message
|
* function is called exactly once for each new Message
|
||||||
*/
|
*/
|
||||||
void ProcessMessage(final Message newMsg) {
|
void processMessage(final Message newMsg) {
|
||||||
Message msg = newMsg;
|
Message msg = newMsg;
|
||||||
currentContext.ProcessMessage(newMsg);
|
currentContext.processMessage(newMsg);
|
||||||
if (msg.hasDataType() && msg.getDataType() == DataType.ReferencedImage) {
|
if (msg.hasDataType() && msg.getDataType() == DataType.ReferencedImage) {
|
||||||
final byte[] referenced = MessageProcessor.LZFDecompressChunks(msg.getData());
|
final byte[] referenced = MessageProcessor.lzfDecompressChunks(msg.getData());
|
||||||
currentContext.readPixelRef = MessageProcessor.DecodeReferencedImage(
|
currentContext.readPixelRef = MessageProcessor.decodeReferencedImage(
|
||||||
currentContext.readPixelRef, referenced);
|
currentContext.readPixelRef, referenced);
|
||||||
final byte[] decoded = MessageProcessor.LZFCompressChunks(
|
final byte[] decoded = MessageProcessor.lzfCompressChunks(
|
||||||
currentContext.readPixelRef, referenced.length);
|
currentContext.readPixelRef, referenced.length);
|
||||||
msg = newMsg.toBuilder().setDataType(DataType.NonreferencedImage)
|
msg = newMsg.toBuilder().setDataType(DataType.NonreferencedImage)
|
||||||
.setData(ByteString.copyFrom(decoded)).build();
|
.setData(ByteString.copyFrom(decoded)).build();
|
||||||
}
|
}
|
||||||
synchronized (file) {
|
synchronized (file) {
|
||||||
lastFrame.IncreaseCallsCount();
|
lastFrame.increaseCallsCount();
|
||||||
final byte[] data = msg.toByteArray();
|
final byte[] data = msg.toByteArray();
|
||||||
final ByteBuffer len = ByteBuffer.allocate(4);
|
final ByteBuffer len = ByteBuffer.allocate(4);
|
||||||
len.order(SampleView.targetByteOrder);
|
len.order(SampleView.targetByteOrder);
|
||||||
@@ -184,14 +184,14 @@ class DebugContext {
|
|||||||
}
|
}
|
||||||
if (loadedFrame == lastFrame) {
|
if (loadedFrame == lastFrame) {
|
||||||
final MessageData msgData = new MessageData(Display.getCurrent(), msg, currentContext);
|
final MessageData msgData = new MessageData(Display.getCurrent(), msg, currentContext);
|
||||||
lastFrame.Add(msgData);
|
lastFrame.add(msgData);
|
||||||
uiUpdate = true;
|
uiUpdate = true;
|
||||||
}
|
}
|
||||||
if (msg.getFunction() != Function.eglSwapBuffers)
|
if (msg.getFunction() != Function.eglSwapBuffers)
|
||||||
return;
|
return;
|
||||||
synchronized (frames) {
|
synchronized (frames) {
|
||||||
if (loadedFrame != lastFrame)
|
if (loadedFrame != lastFrame)
|
||||||
lastFrame.Unload();
|
lastFrame.unload();
|
||||||
try {
|
try {
|
||||||
frames.add(lastFrame = new Frame(currentContext, file.getFilePointer()));
|
frames.add(lastFrame = new Frame(currentContext, file.getFilePointer()));
|
||||||
// file.getChannel().force(false);
|
// file.getChannel().force(false);
|
||||||
@@ -204,22 +204,22 @@ class DebugContext {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Frame GetFrame(int index) {
|
Frame getFrame(int index) {
|
||||||
synchronized (frames) {
|
synchronized (frames) {
|
||||||
Frame newFrame = frames.get(index);
|
Frame newFrame = frames.get(index);
|
||||||
if (loadedFrame != null && loadedFrame != lastFrame && newFrame != loadedFrame) {
|
if (loadedFrame != null && loadedFrame != lastFrame && newFrame != loadedFrame) {
|
||||||
loadedFrame.Unload();
|
loadedFrame.unload();
|
||||||
uiUpdate = true;
|
uiUpdate = true;
|
||||||
}
|
}
|
||||||
loadedFrame = newFrame;
|
loadedFrame = newFrame;
|
||||||
synchronized (file) {
|
synchronized (file) {
|
||||||
loadedFrame.Load(file);
|
loadedFrame.load(file);
|
||||||
}
|
}
|
||||||
return loadedFrame;
|
return loadedFrame;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int FrameCount() {
|
int frameCount() {
|
||||||
synchronized (frames) {
|
synchronized (frames) {
|
||||||
return frames.size();
|
return frames.size();
|
||||||
}
|
}
|
||||||
@@ -264,14 +264,14 @@ public class Context implements Cloneable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** mainly updating states */
|
/** mainly updating states */
|
||||||
public void ProcessMessage(Message msg) {
|
public void processMessage(Message msg) {
|
||||||
if (serverVertex.Process(msg))
|
if (serverVertex.process(msg))
|
||||||
return;
|
return;
|
||||||
if (serverShader.ProcessMessage(msg))
|
if (serverShader.processMessage(msg))
|
||||||
return;
|
return;
|
||||||
if (serverState.ProcessMessage(msg))
|
if (serverState.processMessage(msg))
|
||||||
return;
|
return;
|
||||||
if (serverTexture.ProcessMessage(msg))
|
if (serverTexture.processMessage(msg))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -299,7 +299,7 @@ class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
|
|||||||
if (entry.obj != null) {
|
if (entry.obj != null) {
|
||||||
objStr = entry.obj.toString();
|
objStr = entry.obj.toString();
|
||||||
if (entry.obj instanceof Message)
|
if (entry.obj instanceof Message)
|
||||||
objStr = MessageFormatter.Format((Message) entry.obj, false);
|
objStr = MessageFormatter.format((Message) entry.obj, false);
|
||||||
}
|
}
|
||||||
return entry.name + " = " + objStr;
|
return entry.name + " = " + objStr;
|
||||||
}
|
}
|
||||||
@@ -320,7 +320,7 @@ class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
|
|||||||
case glCopyTexImage2D:
|
case glCopyTexImage2D:
|
||||||
case glCopyTexSubImage2D:
|
case glCopyTexSubImage2D:
|
||||||
return entry.image = new MessageData(Display.getCurrent(), msg, null)
|
return entry.image = new MessageData(Display.getCurrent(), msg, null)
|
||||||
.GetImage();
|
.getImage();
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -384,7 +384,7 @@ class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
|
|||||||
final Message val = context.serverState.integers.valueAt(i);
|
final Message val = context.serverState.integers.valueAt(i);
|
||||||
if (val != null)
|
if (val != null)
|
||||||
children.add(GLEnum.valueOf(key).name() + " : " +
|
children.add(GLEnum.valueOf(key).name() + " : " +
|
||||||
MessageFormatter.Format(val, false));
|
MessageFormatter.format(val, false));
|
||||||
else
|
else
|
||||||
children.add(GLEnum.valueOf(key).name() + " : default");
|
children.add(GLEnum.valueOf(key).name() + " : default");
|
||||||
}
|
}
|
||||||
@@ -396,7 +396,7 @@ class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
|
|||||||
children.add(Function.valueOf(key).name() + " : default");
|
children.add(Function.valueOf(key).name() + " : default");
|
||||||
else
|
else
|
||||||
children.add(Function.valueOf(key).name() + " : "
|
children.add(Function.valueOf(key).name() + " : "
|
||||||
+ MessageFormatter.Format(msg, false));
|
+ MessageFormatter.format(msg, false));
|
||||||
}
|
}
|
||||||
} else if (entry.obj instanceof SparseArray) {
|
} else if (entry.obj instanceof SparseArray) {
|
||||||
SparseArray<?> sa = (SparseArray<?>) entry.obj;
|
SparseArray<?> sa = (SparseArray<?>) entry.obj;
|
||||||
@@ -460,7 +460,7 @@ class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
|
|||||||
return Array.getLength(obj) > 0;
|
return Array.getLength(obj) > 0;
|
||||||
else if (obj instanceof Message)
|
else if (obj instanceof Message)
|
||||||
return false;
|
return false;
|
||||||
else if (IsPrimitive(obj))
|
else if (isPrimitive(obj))
|
||||||
return false;
|
return false;
|
||||||
else if (obj.getClass().equals(String.class))
|
else if (obj.getClass().equals(String.class))
|
||||||
return false;
|
return false;
|
||||||
@@ -471,7 +471,7 @@ class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
|
|||||||
return obj.getClass().getFields().length > 0;
|
return obj.getClass().getFields().length > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean IsPrimitive(final Object obj) {
|
static boolean isPrimitive(final Object obj) {
|
||||||
final Class<? extends Object> c = obj.getClass();
|
final Class<? extends Object> c = obj.getClass();
|
||||||
if (c.isPrimitive())
|
if (c.isPrimitive())
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ public class GLServerShader implements Cloneable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** returns true if processed */
|
/** returns true if processed */
|
||||||
public boolean ProcessMessage(final Message msg) {
|
public boolean processMessage(final Message msg) {
|
||||||
boolean oldUiUpdate = uiUpdate;
|
boolean oldUiUpdate = uiUpdate;
|
||||||
uiUpdate = true;
|
uiUpdate = true;
|
||||||
switch (msg.getFunction()) {
|
switch (msg.getFunction()) {
|
||||||
@@ -145,7 +145,7 @@ public class GLServerShader implements Cloneable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GLShader GetShader(int name) {
|
GLShader getShader(int name) {
|
||||||
if (name == 0)
|
if (name == 0)
|
||||||
return null;
|
return null;
|
||||||
for (Context ctx : context.shares) {
|
for (Context ctx : context.shares) {
|
||||||
@@ -157,7 +157,7 @@ public class GLServerShader implements Cloneable {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLProgram GetProgram(int name) {
|
GLProgram getProgram(int name) {
|
||||||
if (name == 0)
|
if (name == 0)
|
||||||
return null;
|
return null;
|
||||||
for (Context ctx : context.shares) {
|
for (Context ctx : context.shares) {
|
||||||
@@ -171,9 +171,9 @@ public class GLServerShader implements Cloneable {
|
|||||||
|
|
||||||
// void API_ENTRY(glAttachShader)(GLuint program, GLuint shader)
|
// void API_ENTRY(glAttachShader)(GLuint program, GLuint shader)
|
||||||
void glAttachShader(final Message msg) {
|
void glAttachShader(final Message msg) {
|
||||||
GLProgram program = GetProgram(msg.getArg0());
|
GLProgram program = getProgram(msg.getArg0());
|
||||||
assert program != null;
|
assert program != null;
|
||||||
GLShader shader = GetShader(msg.getArg1());
|
GLShader shader = getShader(msg.getArg1());
|
||||||
assert program != null;
|
assert program != null;
|
||||||
if (GLEnum.GL_VERTEX_SHADER == shader.type)
|
if (GLEnum.GL_VERTEX_SHADER == shader.type)
|
||||||
program.vert = shader.name;
|
program.vert = shader.name;
|
||||||
@@ -197,13 +197,13 @@ public class GLServerShader implements Cloneable {
|
|||||||
void glDeleteProgram(final Message msg) {
|
void glDeleteProgram(final Message msg) {
|
||||||
if (msg.getArg0() == 0)
|
if (msg.getArg0() == 0)
|
||||||
return;
|
return;
|
||||||
GLProgram program = GetProgram(msg.getArg0());
|
GLProgram program = getProgram(msg.getArg0());
|
||||||
program.delete = true;
|
program.delete = true;
|
||||||
for (Context ctx : context.shares)
|
for (Context ctx : context.shares)
|
||||||
if (ctx.serverShader.current == program)
|
if (ctx.serverShader.current == program)
|
||||||
return;
|
return;
|
||||||
glDetachShader(program, GetShader(program.vert));
|
glDetachShader(program, getShader(program.vert));
|
||||||
glDetachShader(program, GetShader(program.frag));
|
glDetachShader(program, getShader(program.frag));
|
||||||
programs.remove(program.name);
|
programs.remove(program.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,7 +211,7 @@ public class GLServerShader implements Cloneable {
|
|||||||
void glDeleteShader(final Message msg) {
|
void glDeleteShader(final Message msg) {
|
||||||
if (msg.getArg0() == 0)
|
if (msg.getArg0() == 0)
|
||||||
return;
|
return;
|
||||||
GLShader shader = GetShader(msg.getArg0());
|
GLShader shader = getShader(msg.getArg0());
|
||||||
shader.delete = true;
|
shader.delete = true;
|
||||||
if (shader.programs.size() == 0)
|
if (shader.programs.size() == 0)
|
||||||
shaders.remove(shader.name);
|
shaders.remove(shader.name);
|
||||||
@@ -219,7 +219,7 @@ public class GLServerShader implements Cloneable {
|
|||||||
|
|
||||||
// void API_ENTRY(glDetachShader)(GLuint program, GLuint shader)
|
// void API_ENTRY(glDetachShader)(GLuint program, GLuint shader)
|
||||||
void glDetachShader(final Message msg) {
|
void glDetachShader(final Message msg) {
|
||||||
glDetachShader(GetProgram(msg.getArg0()), GetShader(msg.getArg1()));
|
glDetachShader(getProgram(msg.getArg0()), getShader(msg.getArg1()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void glDetachShader(final GLProgram program, final GLShader shader) {
|
void glDetachShader(final GLProgram program, final GLShader shader) {
|
||||||
@@ -241,14 +241,14 @@ public class GLServerShader implements Cloneable {
|
|||||||
void glShaderSource(final Message msg) {
|
void glShaderSource(final Message msg) {
|
||||||
if (!msg.hasData())
|
if (!msg.hasData())
|
||||||
return; // TODO: distinguish between generated calls
|
return; // TODO: distinguish between generated calls
|
||||||
GLShader shader = GetShader(msg.getArg0());
|
GLShader shader = getShader(msg.getArg0());
|
||||||
shader.source = shader.originalSource = msg.getData().toStringUtf8();
|
shader.source = shader.originalSource = msg.getData().toStringUtf8();
|
||||||
}
|
}
|
||||||
|
|
||||||
// void API_ENTRY(glUseProgram)(GLuint program)
|
// void API_ENTRY(glUseProgram)(GLuint program)
|
||||||
void glUseProgram(final Message msg) {
|
void glUseProgram(final Message msg) {
|
||||||
GLProgram oldCurrent = current;
|
GLProgram oldCurrent = current;
|
||||||
current = GetProgram(msg.getArg0());
|
current = getProgram(msg.getArg0());
|
||||||
if (null != oldCurrent && oldCurrent.delete && oldCurrent != current) {
|
if (null != oldCurrent && oldCurrent.delete && oldCurrent != current) {
|
||||||
for (Context ctx : context.shares)
|
for (Context ctx : context.shares)
|
||||||
if (ctx.serverShader.current == oldCurrent)
|
if (ctx.serverShader.current == oldCurrent)
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ public class GLServerState implements Cloneable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** returns true if processed */
|
/** returns true if processed */
|
||||||
public boolean ProcessMessage(final Message msg) {
|
public boolean processMessage(final Message msg) {
|
||||||
switch (msg.getFunction()) {
|
switch (msg.getFunction()) {
|
||||||
case glBlendColor:
|
case glBlendColor:
|
||||||
case glBlendEquation:
|
case glBlendEquation:
|
||||||
@@ -105,14 +105,14 @@ public class GLServerState implements Cloneable {
|
|||||||
case glDepthMask:
|
case glDepthMask:
|
||||||
case glDepthFunc:
|
case glDepthFunc:
|
||||||
case glDepthRangef:
|
case glDepthRangef:
|
||||||
return Setter(msg);
|
return setter(msg);
|
||||||
case glDisable:
|
case glDisable:
|
||||||
return EnableDisable(false, msg);
|
return enableDisable(false, msg);
|
||||||
case glEnable:
|
case glEnable:
|
||||||
return EnableDisable(true, msg);
|
return enableDisable(true, msg);
|
||||||
case glFrontFace:
|
case glFrontFace:
|
||||||
case glLineWidth:
|
case glLineWidth:
|
||||||
return Setter(msg);
|
return setter(msg);
|
||||||
case glPixelStorei:
|
case glPixelStorei:
|
||||||
if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_PACK_ALIGNMENT)
|
if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_PACK_ALIGNMENT)
|
||||||
integers.put(msg.getArg0(), msg);
|
integers.put(msg.getArg0(), msg);
|
||||||
@@ -124,7 +124,7 @@ public class GLServerState implements Cloneable {
|
|||||||
case glPolygonOffset:
|
case glPolygonOffset:
|
||||||
case glSampleCoverage:
|
case glSampleCoverage:
|
||||||
case glScissor:
|
case glScissor:
|
||||||
return Setter(msg);
|
return setter(msg);
|
||||||
case glStencilFunc: {
|
case glStencilFunc: {
|
||||||
Message.Builder builder = msg.toBuilder();
|
Message.Builder builder = msg.toBuilder();
|
||||||
builder.setArg2(msg.getArg1());
|
builder.setArg2(msg.getArg1());
|
||||||
@@ -136,7 +136,7 @@ public class GLServerState implements Cloneable {
|
|||||||
return glStencilFuncSeparate(msg);
|
return glStencilFuncSeparate(msg);
|
||||||
case glStencilMask:
|
case glStencilMask:
|
||||||
case glStencilMaskSeparate:
|
case glStencilMaskSeparate:
|
||||||
return Setter(msg);
|
return setter(msg);
|
||||||
case glStencilOp: {
|
case glStencilOp: {
|
||||||
Message.Builder builder = msg.toBuilder();
|
Message.Builder builder = msg.toBuilder();
|
||||||
builder.setArg3(msg.getArg2());
|
builder.setArg3(msg.getArg2());
|
||||||
@@ -148,13 +148,13 @@ public class GLServerState implements Cloneable {
|
|||||||
case glStencilOpSeparate:
|
case glStencilOpSeparate:
|
||||||
return glStencilOpSeparate(msg);
|
return glStencilOpSeparate(msg);
|
||||||
case glViewport:
|
case glViewport:
|
||||||
return Setter(msg);
|
return setter(msg);
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean Setter(final Message msg) {
|
boolean setter(final Message msg) {
|
||||||
switch (msg.getFunction()) {
|
switch (msg.getFunction()) {
|
||||||
case glBlendFunc:
|
case glBlendFunc:
|
||||||
lastSetter.put(Function.glBlendFuncSeparate.getNumber(), msg);
|
lastSetter.put(Function.glBlendFuncSeparate.getNumber(), msg);
|
||||||
@@ -172,11 +172,11 @@ public class GLServerState implements Cloneable {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean EnableDisable(boolean enable, final Message msg) {
|
boolean enableDisable(boolean enable, final Message msg) {
|
||||||
int index = enableDisables.indexOfKey(msg.getArg0());
|
int index = enableDisables.indexOfKey(msg.getArg0());
|
||||||
if (index < 0) {
|
if (index < 0) {
|
||||||
System.out.print("invalid glDisable/Enable: ");
|
System.out.print("invalid glDisable/Enable: ");
|
||||||
System.out.println(MessageFormatter.Format(msg, false));
|
System.out.println(MessageFormatter.format(msg, false));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if ((enableDisables.valueAt(index) != 0) == enable)
|
if ((enableDisables.valueAt(index) != 0) == enable)
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class GLTexture implements Cloneable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean ProcessMessage(final Message msg) {
|
boolean processMessage(final Message msg) {
|
||||||
switch (msg.getFunction()) {
|
switch (msg.getFunction()) {
|
||||||
case glCompressedTexImage2D:
|
case glCompressedTexImage2D:
|
||||||
case glCopyTexImage2D:
|
case glCopyTexImage2D:
|
||||||
@@ -121,13 +121,13 @@ public class GLServerTexture implements Cloneable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean ProcessMessage(final Message msg) {
|
public boolean processMessage(final Message msg) {
|
||||||
switch (msg.getFunction()) {
|
switch (msg.getFunction()) {
|
||||||
case glActiveTexture:
|
case glActiveTexture:
|
||||||
activeTexture = GLEnum.valueOf(msg.getArg0());
|
activeTexture = GLEnum.valueOf(msg.getArg0());
|
||||||
return true;
|
return true;
|
||||||
case glBindTexture:
|
case glBindTexture:
|
||||||
return BindTexture(msg.getArg0(), msg.getArg1());
|
return bindTexture(msg.getArg0(), msg.getArg1());
|
||||||
case glCompressedTexImage2D:
|
case glCompressedTexImage2D:
|
||||||
case glCompressedTexSubImage2D:
|
case glCompressedTexSubImage2D:
|
||||||
case glCopyTexImage2D:
|
case glCopyTexImage2D:
|
||||||
@@ -137,7 +137,7 @@ public class GLServerTexture implements Cloneable {
|
|||||||
switch (GLEnum.valueOf(msg.getArg0())) {
|
switch (GLEnum.valueOf(msg.getArg0())) {
|
||||||
case GL_TEXTURE_2D:
|
case GL_TEXTURE_2D:
|
||||||
if (tex2D != null)
|
if (tex2D != null)
|
||||||
return tex2D.ProcessMessage(msg);
|
return tex2D.processMessage(msg);
|
||||||
return true;
|
return true;
|
||||||
case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
|
case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
|
||||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
|
case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
|
||||||
@@ -146,7 +146,7 @@ public class GLServerTexture implements Cloneable {
|
|||||||
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
|
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
|
||||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
|
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
|
||||||
if (texCube != null)
|
if (texCube != null)
|
||||||
return texCube.ProcessMessage(msg);
|
return texCube.processMessage(msg);
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return true;
|
return true;
|
||||||
@@ -157,9 +157,9 @@ public class GLServerTexture implements Cloneable {
|
|||||||
for (int i = 0; i < msg.getArg0(); i++) {
|
for (int i = 0; i < msg.getArg0(); i++) {
|
||||||
final int name = names.getInt();
|
final int name = names.getInt();
|
||||||
if (tex2D != null && tex2D.name == name)
|
if (tex2D != null && tex2D.name == name)
|
||||||
BindTexture(GLEnum.GL_TEXTURE_2D.value, 0);
|
bindTexture(GLEnum.GL_TEXTURE_2D.value, 0);
|
||||||
if (texCube != null && texCube.name == name)
|
if (texCube != null && texCube.name == name)
|
||||||
BindTexture(GLEnum.GL_TEXTURE_CUBE_MAP.value, 0);
|
bindTexture(GLEnum.GL_TEXTURE_CUBE_MAP.value, 0);
|
||||||
if (name != 0)
|
if (name != 0)
|
||||||
textures.remove(name);
|
textures.remove(name);
|
||||||
}
|
}
|
||||||
@@ -167,22 +167,22 @@ public class GLServerTexture implements Cloneable {
|
|||||||
}
|
}
|
||||||
case glGenerateMipmap:
|
case glGenerateMipmap:
|
||||||
if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_TEXTURE_2D && tex2D != null)
|
if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_TEXTURE_2D && tex2D != null)
|
||||||
return tex2D.ProcessMessage(msg);
|
return tex2D.processMessage(msg);
|
||||||
else if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_TEXTURE_CUBE_MAP
|
else if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_TEXTURE_CUBE_MAP
|
||||||
&& texCube != null)
|
&& texCube != null)
|
||||||
return texCube.ProcessMessage(msg);
|
return texCube.processMessage(msg);
|
||||||
return true;
|
return true;
|
||||||
case glTexParameteri:
|
case glTexParameteri:
|
||||||
return TexParameter(msg.getArg0(), msg.getArg1(), msg.getArg2());
|
return texParameter(msg.getArg0(), msg.getArg1(), msg.getArg2());
|
||||||
case glTexParameterf:
|
case glTexParameterf:
|
||||||
return TexParameter(msg.getArg0(), msg.getArg1(),
|
return texParameter(msg.getArg0(), msg.getArg1(),
|
||||||
(int) Float.intBitsToFloat(msg.getArg2()));
|
(int) Float.intBitsToFloat(msg.getArg2()));
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean BindTexture(final int target, final int name) {
|
boolean bindTexture(final int target, final int name) {
|
||||||
final int index = activeTexture.value - GLEnum.GL_TEXTURE0.value;
|
final int index = activeTexture.value - GLEnum.GL_TEXTURE0.value;
|
||||||
if (GLEnum.valueOf(target) == GLEnum.GL_TEXTURE_2D) {
|
if (GLEnum.valueOf(target) == GLEnum.GL_TEXTURE_2D) {
|
||||||
tex2D = textures.get(name);
|
tex2D = textures.get(name);
|
||||||
@@ -203,7 +203,7 @@ public class GLServerTexture implements Cloneable {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean TexParameter(final int target, final int pname, final int param) {
|
boolean texParameter(final int target, final int pname, final int param) {
|
||||||
GLTexture tex = null;
|
GLTexture tex = null;
|
||||||
if (GLEnum.valueOf(target) == GLEnum.GL_TEXTURE_2D)
|
if (GLEnum.valueOf(target) == GLEnum.GL_TEXTURE_2D)
|
||||||
tex = tex2D;
|
tex = tex2D;
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ public class GLServerVertex implements Cloneable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** returns true if processed */
|
/** returns true if processed */
|
||||||
public boolean Process(final Message msg) {
|
public boolean process(final Message msg) {
|
||||||
switch (msg.getFunction()) {
|
switch (msg.getFunction()) {
|
||||||
case glBindBuffer:
|
case glBindBuffer:
|
||||||
glBindBuffer(msg);
|
glBindBuffer(msg);
|
||||||
@@ -276,7 +276,7 @@ public class GLServerVertex implements Cloneable {
|
|||||||
attribPointers[msg.getArg0()].enabled = false;
|
attribPointers[msg.getArg0()].enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
float FetchConvert(final ByteBuffer src, final GLEnum type, final boolean normalized) {
|
float fetchConvert(final ByteBuffer src, final GLEnum type, final boolean normalized) {
|
||||||
if (GLEnum.GL_FLOAT == type)
|
if (GLEnum.GL_FLOAT == type)
|
||||||
return Float.intBitsToFloat(src.getInt());
|
return Float.intBitsToFloat(src.getInt());
|
||||||
else if (GLEnum.GL_UNSIGNED_INT == type)
|
else if (GLEnum.GL_UNSIGNED_INT == type)
|
||||||
@@ -319,7 +319,7 @@ public class GLServerVertex implements Cloneable {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int TypeSize(final GLEnum type) {
|
static int typeSize(final GLEnum type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case GL_FLOAT:
|
case GL_FLOAT:
|
||||||
case GL_UNSIGNED_INT:
|
case GL_UNSIGNED_INT:
|
||||||
@@ -338,7 +338,7 @@ public class GLServerVertex implements Cloneable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Fetch(final int maxAttrib, final int index, final int dstIdx, final ByteBuffer nonVBO,
|
void fetch(final int maxAttrib, final int index, final int dstIdx, final ByteBuffer nonVBO,
|
||||||
final float[][] fetchedAttribs) {
|
final float[][] fetchedAttribs) {
|
||||||
for (int i = 0; i < maxAttrib; i++) {
|
for (int i = 0; i < maxAttrib; i++) {
|
||||||
final GLAttribPointer attrib = attribPointers[i];
|
final GLAttribPointer attrib = attribPointers[i];
|
||||||
@@ -349,11 +349,11 @@ public class GLServerVertex implements Cloneable {
|
|||||||
final ByteBuffer src = attrib.buffer.data;
|
final ByteBuffer src = attrib.buffer.data;
|
||||||
src.position(attrib.ptr + index * attrib.elemStride);
|
src.position(attrib.ptr + index * attrib.elemStride);
|
||||||
for (int j = 0; j < size; j++)
|
for (int j = 0; j < size; j++)
|
||||||
fetchedAttribs[i][dstIdx * 4 + j] = FetchConvert(src, attrib.type,
|
fetchedAttribs[i][dstIdx * 4 + j] = fetchConvert(src, attrib.type,
|
||||||
attrib.normalized);
|
attrib.normalized);
|
||||||
} else
|
} else
|
||||||
for (int j = 0; j < size; j++)
|
for (int j = 0; j < size; j++)
|
||||||
fetchedAttribs[i][dstIdx * 4 + j] = FetchConvert(nonVBO, attrib.type,
|
fetchedAttribs[i][dstIdx * 4 + j] = fetchConvert(nonVBO, attrib.type,
|
||||||
attrib.normalized);
|
attrib.normalized);
|
||||||
}
|
}
|
||||||
if (size < 1)
|
if (size < 1)
|
||||||
@@ -385,7 +385,7 @@ public class GLServerVertex implements Cloneable {
|
|||||||
arrays.order(SampleView.targetByteOrder);
|
arrays.order(SampleView.targetByteOrder);
|
||||||
}
|
}
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
Fetch(maxAttrib, first + i, i, arrays, msgData.attribs);
|
fetch(maxAttrib, first + i, i, arrays, msgData.attribs);
|
||||||
assert null == arrays || arrays.remaining() == 0;
|
assert null == arrays || arrays.remaining() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -419,12 +419,12 @@ public class GLServerVertex implements Cloneable {
|
|||||||
if (GLEnum.GL_UNSIGNED_SHORT == type) {
|
if (GLEnum.GL_UNSIGNED_SHORT == type) {
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
msgData.indices[i] = index.getShort();
|
msgData.indices[i] = index.getShort();
|
||||||
Fetch(maxAttrib, msgData.indices[i] & 0xffff, i, arrays, msgData.attribs);
|
fetch(maxAttrib, msgData.indices[i] & 0xffff, i, arrays, msgData.attribs);
|
||||||
}
|
}
|
||||||
} else if (GLEnum.GL_UNSIGNED_BYTE == type) {
|
} else if (GLEnum.GL_UNSIGNED_BYTE == type) {
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
msgData.indices[i] = (short) (index.get() & 0xff);
|
msgData.indices[i] = (short) (index.get() & 0xff);
|
||||||
Fetch(maxAttrib, msgData.indices[i], i, arrays, msgData.attribs);
|
fetch(maxAttrib, msgData.indices[i], i, arrays, msgData.attribs);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
assert false;
|
assert false;
|
||||||
@@ -458,7 +458,7 @@ public class GLServerVertex implements Cloneable {
|
|||||||
attrib.type = GLEnum.valueOf(msg.getArg2());
|
attrib.type = GLEnum.valueOf(msg.getArg2());
|
||||||
attrib.normalized = msg.getArg3() != 0;
|
attrib.normalized = msg.getArg3() != 0;
|
||||||
attrib.stride = msg.getArg4();
|
attrib.stride = msg.getArg4();
|
||||||
attrib.elemSize = attrib.size * TypeSize(attrib.type);
|
attrib.elemSize = attrib.size * typeSize(attrib.type);
|
||||||
if (attrib.stride == 0)
|
if (attrib.stride == 0)
|
||||||
attrib.elemStride = attrib.elemSize;
|
attrib.elemStride = attrib.elemSize;
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public class MessageData {
|
|||||||
columns[2] = "[AfterGeneratedCall] ";
|
columns[2] = "[AfterGeneratedCall] ";
|
||||||
else
|
else
|
||||||
assert msg.getType() == Type.CompleteCall;
|
assert msg.getType() == Type.CompleteCall;
|
||||||
columns[2] += MessageFormatter.Format(msg, false);
|
columns[2] += MessageFormatter.format(msg, false);
|
||||||
builder.append(columns[2]);
|
builder.append(columns[2]);
|
||||||
switch (function) {
|
switch (function) {
|
||||||
case glDrawArrays:
|
case glDrawArrays:
|
||||||
@@ -80,7 +80,7 @@ public class MessageData {
|
|||||||
text = builder.toString();
|
text = builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Image GetImage() {
|
public Image getImage() {
|
||||||
if (image != null)
|
if (image != null)
|
||||||
return image;
|
return image;
|
||||||
ImageData imageData = null;
|
ImageData imageData = null;
|
||||||
@@ -88,35 +88,35 @@ public class MessageData {
|
|||||||
case glTexImage2D:
|
case glTexImage2D:
|
||||||
if (!msg.hasData())
|
if (!msg.hasData())
|
||||||
return null;
|
return null;
|
||||||
imageData = MessageProcessor.ReceiveImage(msg.getArg3(), msg
|
imageData = MessageProcessor.receiveImage(msg.getArg3(), msg
|
||||||
.getArg4(), msg.getArg6(), msg.getArg7(), msg.getData());
|
.getArg4(), msg.getArg6(), msg.getArg7(), msg.getData());
|
||||||
return image = new Image(Display.getCurrent(), imageData);
|
return image = new Image(Display.getCurrent(), imageData);
|
||||||
case glTexSubImage2D:
|
case glTexSubImage2D:
|
||||||
assert msg.hasData();
|
assert msg.hasData();
|
||||||
imageData = MessageProcessor.ReceiveImage(msg.getArg4(), msg
|
imageData = MessageProcessor.receiveImage(msg.getArg4(), msg
|
||||||
.getArg5(), msg.getArg6(), msg.getArg7(), msg.getData());
|
.getArg5(), msg.getArg6(), msg.getArg7(), msg.getData());
|
||||||
return image = new Image(Display.getCurrent(), imageData);
|
return image = new Image(Display.getCurrent(), imageData);
|
||||||
case glCopyTexImage2D:
|
case glCopyTexImage2D:
|
||||||
imageData = MessageProcessor.ReceiveImage(msg.getArg5(), msg.getArg6(),
|
imageData = MessageProcessor.receiveImage(msg.getArg5(), msg.getArg6(),
|
||||||
msg.getPixelFormat(), msg.getPixelType(), msg.getData());
|
msg.getPixelFormat(), msg.getPixelType(), msg.getData());
|
||||||
imageData = imageData.scaledTo(imageData.width, -imageData.height);
|
imageData = imageData.scaledTo(imageData.width, -imageData.height);
|
||||||
return image = new Image(Display.getCurrent(), imageData);
|
return image = new Image(Display.getCurrent(), imageData);
|
||||||
case glCopyTexSubImage2D:
|
case glCopyTexSubImage2D:
|
||||||
imageData = MessageProcessor.ReceiveImage(msg.getArg6(), msg.getArg7(),
|
imageData = MessageProcessor.receiveImage(msg.getArg6(), msg.getArg7(),
|
||||||
msg.getPixelFormat(), msg.getPixelType(), msg.getData());
|
msg.getPixelFormat(), msg.getPixelType(), msg.getData());
|
||||||
imageData = imageData.scaledTo(imageData.width, -imageData.height);
|
imageData = imageData.scaledTo(imageData.width, -imageData.height);
|
||||||
return image = new Image(Display.getCurrent(), imageData);
|
return image = new Image(Display.getCurrent(), imageData);
|
||||||
case glReadPixels:
|
case glReadPixels:
|
||||||
if (!msg.hasData())
|
if (!msg.hasData())
|
||||||
return null;
|
return null;
|
||||||
imageData = MessageProcessor.ReceiveImage(msg.getArg2(), msg.getArg3(),
|
imageData = MessageProcessor.receiveImage(msg.getArg2(), msg.getArg3(),
|
||||||
msg.getArg4(), msg.getArg5(), msg.getData());
|
msg.getArg4(), msg.getArg5(), msg.getData());
|
||||||
imageData = imageData.scaledTo(imageData.width, -imageData.height);
|
imageData = imageData.scaledTo(imageData.width, -imageData.height);
|
||||||
return image = new Image(Display.getCurrent(), imageData);
|
return image = new Image(Display.getCurrent(), imageData);
|
||||||
case eglSwapBuffers:
|
case eglSwapBuffers:
|
||||||
if (!msg.hasData())
|
if (!msg.hasData())
|
||||||
return null;
|
return null;
|
||||||
imageData = MessageProcessor.ReceiveImage(msg.getImageWidth(),
|
imageData = MessageProcessor.receiveImage(msg.getImageWidth(),
|
||||||
msg.getImageHeight(), msg.getPixelFormat(), msg.getPixelType(),
|
msg.getImageHeight(), msg.getPixelFormat(), msg.getPixelType(),
|
||||||
msg.getData());
|
msg.getData());
|
||||||
imageData = imageData.scaledTo(imageData.width, -imageData.height);
|
imageData = imageData.scaledTo(imageData.width, -imageData.height);
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import java.nio.ByteBuffer;
|
|||||||
|
|
||||||
public class MessageFormatter {
|
public class MessageFormatter {
|
||||||
|
|
||||||
static String FormatFloats(int count, final ByteBuffer data) {
|
static String formatFloats(int count, final ByteBuffer data) {
|
||||||
if (data.remaining() == 0)
|
if (data.remaining() == 0)
|
||||||
return "{}";
|
return "{}";
|
||||||
data.order(SampleView.targetByteOrder);
|
data.order(SampleView.targetByteOrder);
|
||||||
@@ -35,7 +35,7 @@ public class MessageFormatter {
|
|||||||
return ret + "}";
|
return ret + "}";
|
||||||
}
|
}
|
||||||
|
|
||||||
static String FormatInts(int count, final ByteBuffer data) {
|
static String formatInts(int count, final ByteBuffer data) {
|
||||||
if (data.remaining() == 0)
|
if (data.remaining() == 0)
|
||||||
return "{}";
|
return "{}";
|
||||||
data.order(SampleView.targetByteOrder);
|
data.order(SampleView.targetByteOrder);
|
||||||
@@ -48,7 +48,7 @@ public class MessageFormatter {
|
|||||||
return ret + "}";
|
return ret + "}";
|
||||||
}
|
}
|
||||||
|
|
||||||
static String FormatUints(int count, final ByteBuffer data) {
|
static String formatUInts(int count, final ByteBuffer data) {
|
||||||
if (data.remaining() == 0)
|
if (data.remaining() == 0)
|
||||||
return "{}";
|
return "{}";
|
||||||
data.order(SampleView.targetByteOrder);
|
data.order(SampleView.targetByteOrder);
|
||||||
@@ -62,7 +62,7 @@ public class MessageFormatter {
|
|||||||
return ret + "}";
|
return ret + "}";
|
||||||
}
|
}
|
||||||
|
|
||||||
static String FormatMatrix(int columns, int count, final ByteBuffer data) {
|
static String formatMatrix(int columns, int count, final ByteBuffer data) {
|
||||||
if (data.remaining() == 0)
|
if (data.remaining() == 0)
|
||||||
return "{}";
|
return "{}";
|
||||||
data.order(SampleView.targetByteOrder);
|
data.order(SampleView.targetByteOrder);
|
||||||
@@ -77,7 +77,7 @@ public class MessageFormatter {
|
|||||||
return ret + "}";
|
return ret + "}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String Format(final DebuggerMessage.Message msg,
|
public static String format(final DebuggerMessage.Message msg,
|
||||||
final boolean code) {
|
final boolean code) {
|
||||||
String str;
|
String str;
|
||||||
switch (msg.getFunction()) {
|
switch (msg.getFunction()) {
|
||||||
@@ -368,7 +368,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*n*/ " : "n=")
|
, (code ? "/*n*/ " : "n=")
|
||||||
, msg.getArg0()
|
, msg.getArg0()
|
||||||
, (code ? "/*buffers*/ " : "buffers=")
|
, (code ? "/*buffers*/ " : "buffers=")
|
||||||
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glDeleteFramebuffers:
|
case glDeleteFramebuffers:
|
||||||
str = String.format("%s(%s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s)",
|
||||||
@@ -376,7 +376,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*n*/ " : "n=")
|
, (code ? "/*n*/ " : "n=")
|
||||||
, msg.getArg0()
|
, msg.getArg0()
|
||||||
, (code ? "/*framebuffers*/ " : "framebuffers=")
|
, (code ? "/*framebuffers*/ " : "framebuffers=")
|
||||||
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glDeleteProgram:
|
case glDeleteProgram:
|
||||||
str = String.format("%s(%s%s)",
|
str = String.format("%s(%s%s)",
|
||||||
@@ -390,7 +390,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*n*/ " : "n=")
|
, (code ? "/*n*/ " : "n=")
|
||||||
, msg.getArg0()
|
, msg.getArg0()
|
||||||
, (code ? "/*renderbuffers*/ " : "renderbuffers=")
|
, (code ? "/*renderbuffers*/ " : "renderbuffers=")
|
||||||
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glDeleteShader:
|
case glDeleteShader:
|
||||||
str = String.format("%s(%s%s)",
|
str = String.format("%s(%s%s)",
|
||||||
@@ -404,7 +404,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*n*/ " : "n=")
|
, (code ? "/*n*/ " : "n=")
|
||||||
, msg.getArg0()
|
, msg.getArg0()
|
||||||
, (code ? "/*textures*/ " : "textures=")
|
, (code ? "/*textures*/ " : "textures=")
|
||||||
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glDepthFunc:
|
case glDepthFunc:
|
||||||
str = String.format("%s(%s%s)",
|
str = String.format("%s(%s%s)",
|
||||||
@@ -529,7 +529,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*n*/ " : "n=")
|
, (code ? "/*n*/ " : "n=")
|
||||||
, msg.getArg0()
|
, msg.getArg0()
|
||||||
, (code ? "/*buffers*/ " : "buffers=")
|
, (code ? "/*buffers*/ " : "buffers=")
|
||||||
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glGenerateMipmap:
|
case glGenerateMipmap:
|
||||||
str = String.format("%s(%s%s)",
|
str = String.format("%s(%s%s)",
|
||||||
@@ -543,7 +543,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*n*/ " : "n=")
|
, (code ? "/*n*/ " : "n=")
|
||||||
, msg.getArg0()
|
, msg.getArg0()
|
||||||
, (code ? "/*framebuffers*/ " : "framebuffers=")
|
, (code ? "/*framebuffers*/ " : "framebuffers=")
|
||||||
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glGenRenderbuffers:
|
case glGenRenderbuffers:
|
||||||
str = String.format("%s(%s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s)",
|
||||||
@@ -551,7 +551,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*n*/ " : "n=")
|
, (code ? "/*n*/ " : "n=")
|
||||||
, msg.getArg0()
|
, msg.getArg0()
|
||||||
, (code ? "/*renderbuffers*/ " : "renderbuffers=")
|
, (code ? "/*renderbuffers*/ " : "renderbuffers=")
|
||||||
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glGenTextures:
|
case glGenTextures:
|
||||||
str = String.format("%s(%s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s)",
|
||||||
@@ -559,7 +559,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*n*/ " : "n=")
|
, (code ? "/*n*/ " : "n=")
|
||||||
, msg.getArg0()
|
, msg.getArg0()
|
||||||
, (code ? "/*textures*/ " : "textures=")
|
, (code ? "/*textures*/ " : "textures=")
|
||||||
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glGetActiveAttrib:
|
case glGetActiveAttrib:
|
||||||
// FIXME: this function uses pointers, debugger may send data in msg.data
|
// FIXME: this function uses pointers, debugger may send data in msg.data
|
||||||
@@ -684,7 +684,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*pname*/ " : "pname=")
|
, (code ? "/*pname*/ " : "pname=")
|
||||||
, GLEnum.valueOf(msg.getArg1())
|
, GLEnum.valueOf(msg.getArg1())
|
||||||
, (code ? "/*params*/ " : "params=")
|
, (code ? "/*params*/ " : "params=")
|
||||||
, (code ? "(GLint [])" : "") + FormatInts(1, msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLint [])" : "") + formatInts(1, msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glGetProgramInfoLog:
|
case glGetProgramInfoLog:
|
||||||
// FIXME: this function uses pointers, debugger may send data in msg.data
|
// FIXME: this function uses pointers, debugger may send data in msg.data
|
||||||
@@ -718,7 +718,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*pname*/ " : "pname=")
|
, (code ? "/*pname*/ " : "pname=")
|
||||||
, GLEnum.valueOf(msg.getArg1())
|
, GLEnum.valueOf(msg.getArg1())
|
||||||
, (code ? "/*params*/ " : "params=")
|
, (code ? "/*params*/ " : "params=")
|
||||||
, (code ? "(GLint [])" : "") + FormatInts(1, msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLint [])" : "") + formatInts(1, msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glGetShaderInfoLog:
|
case glGetShaderInfoLog:
|
||||||
// FIXME: this function uses pointers, debugger may send data in msg.data
|
// FIXME: this function uses pointers, debugger may send data in msg.data
|
||||||
@@ -1175,7 +1175,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*count*/ " : "count=")
|
, (code ? "/*count*/ " : "count=")
|
||||||
, msg.getArg1()
|
, msg.getArg1()
|
||||||
, (code ? "/*v*/ " : "v=")
|
, (code ? "/*v*/ " : "v=")
|
||||||
, (code ? "(GLfloat [])" : "") + FormatFloats(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLfloat [])" : "") + formatFloats(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glUniform1i:
|
case glUniform1i:
|
||||||
str = String.format("%s(%s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s)",
|
||||||
@@ -1193,7 +1193,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*count*/ " : "count=")
|
, (code ? "/*count*/ " : "count=")
|
||||||
, msg.getArg1()
|
, msg.getArg1()
|
||||||
, (code ? "/*v*/ " : "v=")
|
, (code ? "/*v*/ " : "v=")
|
||||||
, (code ? "(GLint [])" : "") + FormatInts(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLint [])" : "") + formatInts(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glUniform2f:
|
case glUniform2f:
|
||||||
str = String.format("%s(%s%s, %s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s, %s%s)",
|
||||||
@@ -1213,7 +1213,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*count*/ " : "count=")
|
, (code ? "/*count*/ " : "count=")
|
||||||
, msg.getArg1()
|
, msg.getArg1()
|
||||||
, (code ? "/*v*/ " : "v=")
|
, (code ? "/*v*/ " : "v=")
|
||||||
, (code ? "(GLfloat [])" : "") + FormatFloats(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLfloat [])" : "") + formatFloats(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glUniform2i:
|
case glUniform2i:
|
||||||
str = String.format("%s(%s%s, %s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s, %s%s)",
|
||||||
@@ -1233,7 +1233,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*count*/ " : "count=")
|
, (code ? "/*count*/ " : "count=")
|
||||||
, msg.getArg1()
|
, msg.getArg1()
|
||||||
, (code ? "/*v*/ " : "v=")
|
, (code ? "/*v*/ " : "v=")
|
||||||
, (code ? "(GLint [])" : "") + FormatInts(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLint [])" : "") + formatInts(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glUniform3f:
|
case glUniform3f:
|
||||||
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
|
||||||
@@ -1255,7 +1255,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*count*/ " : "count=")
|
, (code ? "/*count*/ " : "count=")
|
||||||
, msg.getArg1()
|
, msg.getArg1()
|
||||||
, (code ? "/*v*/ " : "v=")
|
, (code ? "/*v*/ " : "v=")
|
||||||
, (code ? "(GLfloat [])" : "") + FormatFloats(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLfloat [])" : "") + formatFloats(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glUniform3i:
|
case glUniform3i:
|
||||||
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
|
||||||
@@ -1277,7 +1277,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*count*/ " : "count=")
|
, (code ? "/*count*/ " : "count=")
|
||||||
, msg.getArg1()
|
, msg.getArg1()
|
||||||
, (code ? "/*v*/ " : "v=")
|
, (code ? "/*v*/ " : "v=")
|
||||||
, (code ? "(GLint [])" : "") + FormatInts(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLint [])" : "") + formatInts(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glUniform4f:
|
case glUniform4f:
|
||||||
str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
|
||||||
@@ -1301,7 +1301,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*count*/ " : "count=")
|
, (code ? "/*count*/ " : "count=")
|
||||||
, msg.getArg1()
|
, msg.getArg1()
|
||||||
, (code ? "/*v*/ " : "v=")
|
, (code ? "/*v*/ " : "v=")
|
||||||
, (code ? "(GLfloat [])" : "") + FormatFloats(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLfloat [])" : "") + formatFloats(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glUniform4i:
|
case glUniform4i:
|
||||||
str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
|
||||||
@@ -1325,7 +1325,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*count*/ " : "count=")
|
, (code ? "/*count*/ " : "count=")
|
||||||
, msg.getArg1()
|
, msg.getArg1()
|
||||||
, (code ? "/*v*/ " : "v=")
|
, (code ? "/*v*/ " : "v=")
|
||||||
, (code ? "(GLint [])" : "") + FormatInts(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLint [])" : "") + formatInts(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glUniformMatrix2fv:
|
case glUniformMatrix2fv:
|
||||||
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
|
||||||
@@ -1337,7 +1337,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*transpose*/ " : "transpose=")
|
, (code ? "/*transpose*/ " : "transpose=")
|
||||||
, msg.getArg2()
|
, msg.getArg2()
|
||||||
, (code ? "/*value*/ " : "value=")
|
, (code ? "/*value*/ " : "value=")
|
||||||
, (code ? "(GLfloat [])" : "") + FormatMatrix(2, 4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLfloat [])" : "") + formatMatrix(2, 4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glUniformMatrix3fv:
|
case glUniformMatrix3fv:
|
||||||
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
|
||||||
@@ -1349,7 +1349,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*transpose*/ " : "transpose=")
|
, (code ? "/*transpose*/ " : "transpose=")
|
||||||
, msg.getArg2()
|
, msg.getArg2()
|
||||||
, (code ? "/*value*/ " : "value=")
|
, (code ? "/*value*/ " : "value=")
|
||||||
, (code ? "(GLfloat [])" : "") + FormatMatrix(3, 9 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLfloat [])" : "") + formatMatrix(3, 9 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glUniformMatrix4fv:
|
case glUniformMatrix4fv:
|
||||||
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
|
||||||
@@ -1361,7 +1361,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*transpose*/ " : "transpose=")
|
, (code ? "/*transpose*/ " : "transpose=")
|
||||||
, msg.getArg2()
|
, msg.getArg2()
|
||||||
, (code ? "/*value*/ " : "value=")
|
, (code ? "/*value*/ " : "value=")
|
||||||
, (code ? "(GLfloat [])" : "") + FormatMatrix(4, 16 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLfloat [])" : "") + formatMatrix(4, 16 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glUseProgram:
|
case glUseProgram:
|
||||||
str = String.format("%s(%s%s)",
|
str = String.format("%s(%s%s)",
|
||||||
@@ -1389,7 +1389,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*indx*/ " : "indx=")
|
, (code ? "/*indx*/ " : "indx=")
|
||||||
, msg.getArg0()
|
, msg.getArg0()
|
||||||
, (code ? "/*values*/ " : "values=")
|
, (code ? "/*values*/ " : "values=")
|
||||||
, (code ? "(GLfloat [])" : "") + FormatFloats(1, msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLfloat [])" : "") + formatFloats(1, msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glVertexAttrib2f:
|
case glVertexAttrib2f:
|
||||||
str = String.format("%s(%s%s, %s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s, %s%s)",
|
||||||
@@ -1407,7 +1407,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*indx*/ " : "indx=")
|
, (code ? "/*indx*/ " : "indx=")
|
||||||
, msg.getArg0()
|
, msg.getArg0()
|
||||||
, (code ? "/*values*/ " : "values=")
|
, (code ? "/*values*/ " : "values=")
|
||||||
, (code ? "(GLfloat [])" : "") + FormatFloats(2, msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLfloat [])" : "") + formatFloats(2, msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glVertexAttrib3f:
|
case glVertexAttrib3f:
|
||||||
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
|
||||||
@@ -1427,7 +1427,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*indx*/ " : "indx=")
|
, (code ? "/*indx*/ " : "indx=")
|
||||||
, msg.getArg0()
|
, msg.getArg0()
|
||||||
, (code ? "/*values*/ " : "values=")
|
, (code ? "/*values*/ " : "values=")
|
||||||
, (code ? "(GLfloat [])" : "") + FormatFloats(3, msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLfloat [])" : "") + formatFloats(3, msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glVertexAttrib4f:
|
case glVertexAttrib4f:
|
||||||
str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
|
str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
|
||||||
@@ -1449,7 +1449,7 @@ public class MessageFormatter {
|
|||||||
, (code ? "/*indx*/ " : "indx=")
|
, (code ? "/*indx*/ " : "indx=")
|
||||||
, msg.getArg0()
|
, msg.getArg0()
|
||||||
, (code ? "/*values*/ " : "values=")
|
, (code ? "/*values*/ " : "values=")
|
||||||
, (code ? "(GLfloat [])" : "") + FormatFloats(4, msg.getData().asReadOnlyByteBuffer()));
|
, (code ? "(GLfloat [])" : "") + formatFloats(4, msg.getData().asReadOnlyByteBuffer()));
|
||||||
break;
|
break;
|
||||||
case glVertexAttribPointer:
|
case glVertexAttribPointer:
|
||||||
// FIXME: this function uses pointers, debugger may send data in msg.data
|
// FIXME: this function uses pointers, debugger may send data in msg.data
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -23,281 +23,282 @@ import com.android.glesv2debugger.DebuggerMessage.Message;
|
|||||||
public class MessageParserEx extends MessageParser {
|
public class MessageParserEx extends MessageParser {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glBufferData(Message.Builder builder) {
|
void parse_glBufferData(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLsizeiptr size
|
builder.setArg1(parseArgument()); // GLsizeiptr size
|
||||||
// TODO // GLvoid data
|
// TODO // GLvoid data
|
||||||
builder.setArg3(ParseArgument()); // GLenum usage
|
builder.setArg3(parseArgument()); // GLenum usage
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glBufferSubData(Message.Builder builder) {
|
void parse_glBufferSubData(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLintptr offset
|
builder.setArg1(parseArgument()); // GLintptr offset
|
||||||
builder.setArg2(ParseArgument()); // GLsizeiptr size
|
builder.setArg2(parseArgument()); // GLsizeiptr size
|
||||||
// TODO // GLvoid data
|
// TODO // GLvoid data
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glCompressedTexImage2D(Message.Builder builder) {
|
void parse_glCompressedTexImage2D(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLint level
|
builder.setArg1(parseArgument()); // GLint level
|
||||||
builder.setArg2(ParseArgument()); // GLenum internalformat
|
builder.setArg2(parseArgument()); // GLenum internalformat
|
||||||
builder.setArg3(ParseArgument()); // GLsizei width
|
builder.setArg3(parseArgument()); // GLsizei width
|
||||||
builder.setArg4(ParseArgument()); // GLsizei height
|
builder.setArg4(parseArgument()); // GLsizei height
|
||||||
builder.setArg5(ParseArgument()); // GLint border
|
builder.setArg5(parseArgument()); // GLint border
|
||||||
builder.setArg6(ParseArgument()); // GLsizei imageSize
|
builder.setArg6(parseArgument()); // GLsizei imageSize
|
||||||
// TODO: GLvoid* data
|
// TODO: GLvoid* data
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glCompressedTexSubImage2D(Message.Builder builder) {
|
void parse_glCompressedTexSubImage2D(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLint level
|
builder.setArg1(parseArgument()); // GLint level
|
||||||
builder.setArg2(ParseArgument()); // GLint xoffset
|
builder.setArg2(parseArgument()); // GLint xoffset
|
||||||
builder.setArg3(ParseArgument()); // GLint yoffset
|
builder.setArg3(parseArgument()); // GLint yoffset
|
||||||
builder.setArg4(ParseArgument()); // GLsizei width
|
builder.setArg4(parseArgument()); // GLsizei width
|
||||||
builder.setArg5(ParseArgument()); // GLsizei height
|
builder.setArg5(parseArgument()); // GLsizei height
|
||||||
builder.setArg6(ParseArgument()); // GLenum format
|
builder.setArg6(parseArgument()); // GLenum format
|
||||||
builder.setArg7(ParseArgument()); // GLsizei imageSize
|
builder.setArg7(parseArgument()); // GLsizei imageSize
|
||||||
// TODO: GLvoid* data
|
// TODO: GLvoid* data
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glDrawElements(Message.Builder builder) {
|
void parse_glDrawElements(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum mode
|
builder.setArg0(parseArgument()); // GLenum mode
|
||||||
builder.setArg1(ParseArgument()); // GLsizei count
|
builder.setArg1(parseArgument()); // GLsizei count
|
||||||
builder.setArg2(ParseArgument()); // GLenum type
|
builder.setArg2(parseArgument()); // GLenum type
|
||||||
// TODO: GLvoid* indices
|
// TODO: GLvoid* indices
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetActiveAttrib(Message.Builder builder) {
|
void parse_glGetActiveAttrib(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint program
|
builder.setArg0(parseArgument()); // GLuint program
|
||||||
builder.setArg1(ParseArgument()); // GLuint index
|
builder.setArg1(parseArgument()); // GLuint index
|
||||||
builder.setArg2(ParseArgument()); // GLsizei bufsize
|
builder.setArg2(parseArgument()); // GLsizei bufsize
|
||||||
// TODO: GLsizei* length
|
// TODO: GLsizei* length
|
||||||
// TODO: GLint* size
|
// TODO: GLint* size
|
||||||
// TODO: GLenum* type
|
// TODO: GLenum* type
|
||||||
builder.setData(ParseString()); // GLchar name
|
builder.setData(parseString()); // GLchar name
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetActiveUniform(Message.Builder builder) {
|
void parse_glGetActiveUniform(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint program
|
builder.setArg0(parseArgument()); // GLuint program
|
||||||
builder.setArg1(ParseArgument()); // GLuint index
|
builder.setArg1(parseArgument()); // GLuint index
|
||||||
builder.setArg2(ParseArgument()); // GLsizei bufsize
|
builder.setArg2(parseArgument()); // GLsizei bufsize
|
||||||
// TODO: GLsizei* length
|
// TODO: GLsizei* length
|
||||||
// TODO: GLint* size
|
// TODO: GLint* size
|
||||||
// TODO: GLenum* type
|
// TODO: GLenum* type
|
||||||
builder.setData(ParseString()); // GLchar name
|
builder.setData(parseString()); // GLchar name
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetAttachedShaders(Message.Builder builder) {
|
void parse_glGetAttachedShaders(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint program
|
builder.setArg0(parseArgument()); // GLuint program
|
||||||
builder.setArg1(ParseArgument()); // GLsizei maxcount
|
builder.setArg1(parseArgument()); // GLsizei maxcount
|
||||||
// TODO: GLsizei* count
|
// TODO: GLsizei* count
|
||||||
// TODO: GLuint* shaders
|
// TODO: GLuint* shaders
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetBooleanv(Message.Builder builder) {
|
void parse_glGetBooleanv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum pname
|
builder.setArg0(parseArgument()); // GLenum pname
|
||||||
// TODO: GLboolean* params
|
// TODO: GLboolean* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetBufferParameteriv(Message.Builder builder) {
|
void parse_glGetBufferParameteriv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLenum pname
|
builder.setArg1(parseArgument()); // GLenum pname
|
||||||
// TODO: GLint* params
|
// TODO: GLint* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetFloatv(Message.Builder builder) {
|
void parse_glGetFloatv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum pname
|
builder.setArg0(parseArgument()); // GLenum pname
|
||||||
// TODO: GLfloat* params
|
// TODO: GLfloat* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetFramebufferAttachmentParameteriv(Message.Builder builder) {
|
void parse_glGetFramebufferAttachmentParameteriv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLenum attachment
|
builder.setArg1(parseArgument()); // GLenum attachment
|
||||||
builder.setArg2(ParseArgument()); // GLenum pname
|
builder.setArg2(parseArgument()); // GLenum pname
|
||||||
// TODO: GLint* params
|
// TODO: GLint* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetIntegerv(Message.Builder builder) {
|
void parse_glGetIntegerv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum pname
|
builder.setArg0(parseArgument()); // GLenum pname
|
||||||
// TODO: GLint* params
|
// TODO: GLint* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetProgramInfoLog(Message.Builder builder) {
|
void parse_glGetProgramInfoLog(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint program
|
builder.setArg0(parseArgument()); // GLuint program
|
||||||
builder.setArg1(ParseArgument()); // GLsizei bufsize
|
builder.setArg1(parseArgument()); // GLsizei bufsize
|
||||||
// TODO: GLsizei* length
|
// TODO: GLsizei* length
|
||||||
builder.setData(ParseString()); // GLchar infolog
|
builder.setData(parseString()); // GLchar infolog
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetRenderbufferParameteriv(Message.Builder builder) {
|
void parse_glGetRenderbufferParameteriv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLenum pname
|
builder.setArg1(parseArgument()); // GLenum pname
|
||||||
// TODO: GLint* params
|
// TODO: GLint* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetShaderInfoLog(Message.Builder builder) {
|
void parse_glGetShaderInfoLog(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint shader
|
builder.setArg0(parseArgument()); // GLuint shader
|
||||||
builder.setArg1(ParseArgument()); // GLsizei bufsize
|
builder.setArg1(parseArgument()); // GLsizei bufsize
|
||||||
// TODO: GLsizei* length
|
// TODO: GLsizei* length
|
||||||
builder.setData(ParseString()); // GLchar infolog
|
builder.setData(parseString()); // GLchar infolog
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetShaderPrecisionFormat(Message.Builder builder) {
|
void parse_glGetShaderPrecisionFormat(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum shadertype
|
builder.setArg0(parseArgument()); // GLenum shadertype
|
||||||
builder.setArg1(ParseArgument()); // GLenum precisiontype
|
builder.setArg1(parseArgument()); // GLenum precisiontype
|
||||||
// TODO: GLint* range
|
// TODO: GLint* range
|
||||||
// TODO: GLint* precision
|
// TODO: GLint* precision
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetShaderSource(Message.Builder builder) {
|
void parse_glGetShaderSource(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint shader
|
builder.setArg0(parseArgument()); // GLuint shader
|
||||||
builder.setArg1(ParseArgument()); // GLsizei bufsize
|
builder.setArg1(parseArgument()); // GLsizei bufsize
|
||||||
// TODO: GLsizei* length
|
// TODO: GLsizei* length
|
||||||
builder.setData(ParseString()); // GLchar source
|
builder.setData(parseString()); // GLchar source
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetTexParameterfv(Message.Builder builder) {
|
void parse_glGetTexParameterfv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLenum pname
|
builder.setArg1(parseArgument()); // GLenum pname
|
||||||
// TODO: GLfloat* params
|
// TODO: GLfloat* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetTexParameteriv(Message.Builder builder) {
|
void parse_glGetTexParameteriv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLenum pname
|
builder.setArg1(parseArgument()); // GLenum pname
|
||||||
// TODO: GLint* params
|
// TODO: GLint* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetUniformfv(Message.Builder builder) {
|
void parse_glGetUniformfv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint program
|
builder.setArg0(parseArgument()); // GLuint program
|
||||||
builder.setArg1(ParseArgument()); // GLint location
|
builder.setArg1(parseArgument()); // GLint location
|
||||||
// TODO: GLfloat* params
|
// TODO: GLfloat* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetUniformiv(Message.Builder builder) {
|
void parse_glGetUniformiv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint program
|
builder.setArg0(parseArgument()); // GLuint program
|
||||||
builder.setArg1(ParseArgument()); // GLint location
|
builder.setArg1(parseArgument()); // GLint location
|
||||||
// TODO: GLint* params
|
// TODO: GLint* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetVertexAttribfv(Message.Builder builder) {
|
void parse_glGetVertexAttribfv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint index
|
builder.setArg0(parseArgument()); // GLuint index
|
||||||
builder.setArg1(ParseArgument()); // GLenum pname
|
builder.setArg1(parseArgument()); // GLenum pname
|
||||||
// TODO: GLfloat* params
|
// TODO: GLfloat* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetVertexAttribiv(Message.Builder builder) {
|
void parse_glGetVertexAttribiv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint index
|
builder.setArg0(parseArgument()); // GLuint index
|
||||||
builder.setArg1(ParseArgument()); // GLenum pname
|
builder.setArg1(parseArgument()); // GLenum pname
|
||||||
// TODO: GLint* params
|
// TODO: GLint* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glGetVertexAttribPointerv(Message.Builder builder) {
|
void parse_glGetVertexAttribPointerv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint index
|
builder.setArg0(parseArgument()); // GLuint index
|
||||||
builder.setArg1(ParseArgument()); // GLenum pname
|
builder.setArg1(parseArgument()); // GLenum pname
|
||||||
// TODO: GLvoid** pointer
|
// TODO: GLvoid** pointer
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glReadPixels(Message.Builder builder) {
|
void parse_glReadPixels(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLint x
|
builder.setArg0(parseArgument()); // GLint x
|
||||||
builder.setArg1(ParseArgument()); // GLint y
|
builder.setArg1(parseArgument()); // GLint y
|
||||||
builder.setArg2(ParseArgument()); // GLsizei width
|
builder.setArg2(parseArgument()); // GLsizei width
|
||||||
builder.setArg3(ParseArgument()); // GLsizei height
|
builder.setArg3(parseArgument()); // GLsizei height
|
||||||
builder.setArg4(ParseArgument()); // GLenum format
|
builder.setArg4(parseArgument()); // GLenum format
|
||||||
builder.setArg5(ParseArgument()); // GLenum type
|
builder.setArg5(parseArgument()); // GLenum type
|
||||||
// TODO: GLvoid* pixels
|
// TODO: GLvoid* pixels
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glShaderBinary(Message.Builder builder) {
|
void parse_glShaderBinary(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLsizei n
|
builder.setArg0(parseArgument()); // GLsizei n
|
||||||
// TODO: GLuint* shaders
|
// TODO: GLuint* shaders
|
||||||
builder.setArg2(ParseArgument()); // GLenum binaryformat
|
builder.setArg2(parseArgument()); // GLenum binaryformat
|
||||||
// TODO: GLvoid* binary
|
// TODO: GLvoid* binary
|
||||||
builder.setArg4(ParseArgument()); // GLsizei length
|
builder.setArg4(parseArgument()); // GLsizei length
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glShaderSource(Message.Builder builder) {
|
void parse_glShaderSource(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint shader
|
builder.setArg0(parseArgument()); // GLuint shader
|
||||||
builder.setArg1(ParseArgument()); // GLsizei count
|
builder.setArg1(parseArgument()); // GLsizei count
|
||||||
assert 1 == builder.getArg1();
|
assert 1 == builder.getArg1();
|
||||||
builder.setData(ParseString()); // GLchar** string
|
builder.setData(parseString()); // GLchar** string
|
||||||
builder.setArg3(ParseArgument());// not used, always 1 null terminated string; GLint* length
|
builder.setArg3(parseArgument());// not used, always 1 null terminated
|
||||||
|
// string; GLint* length
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glTexImage2D(Message.Builder builder) {
|
void parse_glTexImage2D(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLint level
|
builder.setArg1(parseArgument()); // GLint level
|
||||||
builder.setArg2(ParseArgument()); // GLint internalformat
|
builder.setArg2(parseArgument()); // GLint internalformat
|
||||||
builder.setArg3(ParseArgument()); // GLsizei width
|
builder.setArg3(parseArgument()); // GLsizei width
|
||||||
builder.setArg4(ParseArgument()); // GLsizei height
|
builder.setArg4(parseArgument()); // GLsizei height
|
||||||
builder.setArg5(ParseArgument()); // GLint border
|
builder.setArg5(parseArgument()); // GLint border
|
||||||
builder.setArg6(ParseArgument()); // GLenum format
|
builder.setArg6(parseArgument()); // GLenum format
|
||||||
builder.setArg7(ParseArgument()); // GLenum type
|
builder.setArg7(parseArgument()); // GLenum type
|
||||||
// TODO: GLvoid* pixels
|
// TODO: GLvoid* pixels
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glTexParameterfv(Message.Builder builder) {
|
void parse_glTexParameterfv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLenum pname
|
builder.setArg1(parseArgument()); // GLenum pname
|
||||||
// TODO: GLfloat* params
|
// TODO: GLfloat* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glTexParameteriv(Message.Builder builder) {
|
void parse_glTexParameteriv(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLenum pname
|
builder.setArg1(parseArgument()); // GLenum pname
|
||||||
// TODO: GLint* params
|
// TODO: GLint* params
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glTexSubImage2D(Message.Builder builder) {
|
void parse_glTexSubImage2D(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLenum target
|
builder.setArg0(parseArgument()); // GLenum target
|
||||||
builder.setArg1(ParseArgument()); // GLint level
|
builder.setArg1(parseArgument()); // GLint level
|
||||||
builder.setArg2(ParseArgument()); // GLint xoffset
|
builder.setArg2(parseArgument()); // GLint xoffset
|
||||||
builder.setArg3(ParseArgument()); // GLint yoffset
|
builder.setArg3(parseArgument()); // GLint yoffset
|
||||||
builder.setArg4(ParseArgument()); // GLsizei width
|
builder.setArg4(parseArgument()); // GLsizei width
|
||||||
builder.setArg5(ParseArgument()); // GLsizei height
|
builder.setArg5(parseArgument()); // GLsizei height
|
||||||
builder.setArg6(ParseArgument()); // GLenum format
|
builder.setArg6(parseArgument()); // GLenum format
|
||||||
builder.setArg7(ParseArgument()); // GLenum type
|
builder.setArg7(parseArgument()); // GLenum type
|
||||||
// TODO: GLvoid* pixels
|
// TODO: GLvoid* pixels
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void Parse_glVertexAttribPointer(Message.Builder builder) {
|
void parse_glVertexAttribPointer(Message.Builder builder) {
|
||||||
builder.setArg0(ParseArgument()); // GLuint indx
|
builder.setArg0(parseArgument()); // GLuint indx
|
||||||
builder.setArg1(ParseArgument()); // GLint size
|
builder.setArg1(parseArgument()); // GLint size
|
||||||
builder.setArg2(ParseArgument()); // GLenum type
|
builder.setArg2(parseArgument()); // GLenum type
|
||||||
builder.setArg3(ParseArgument()); // GLboolean normalized
|
builder.setArg3(parseArgument()); // GLboolean normalized
|
||||||
builder.setArg4(ParseArgument()); // GLsizei stride
|
builder.setArg4(parseArgument()); // GLsizei stride
|
||||||
// TODO: GLvoid* ptr
|
// TODO: GLvoid* ptr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class MessageProcessor {
|
|||||||
* decompressed size, uint32 chunk compressed size, chunk data)+. 0 chunk
|
* decompressed size, uint32 chunk compressed size, chunk data)+. 0 chunk
|
||||||
* compressed size means chunk is not compressed
|
* compressed size means chunk is not compressed
|
||||||
*/
|
*/
|
||||||
public static byte[] LZFDecompressChunks(final ByteString data) {
|
public static byte[] lzfDecompressChunks(final ByteString data) {
|
||||||
ByteBuffer in = data.asReadOnlyByteBuffer();
|
ByteBuffer in = data.asReadOnlyByteBuffer();
|
||||||
in.order(SampleView.targetByteOrder);
|
in.order(SampleView.targetByteOrder);
|
||||||
ByteBuffer out = ByteBuffer.allocate(in.getInt());
|
ByteBuffer out = ByteBuffer.allocate(in.getInt());
|
||||||
@@ -65,7 +65,7 @@ public class MessageProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** same data layout as LZFDecompressChunks */
|
/** same data layout as LZFDecompressChunks */
|
||||||
public static byte[] LZFCompressChunks(final byte[] in, final int inSize) {
|
public static byte[] lzfCompressChunks(final byte[] in, final int inSize) {
|
||||||
byte[] chunk = new byte[256 * 1024]; // chunk size is arbitrary
|
byte[] chunk = new byte[256 * 1024]; // chunk size is arbitrary
|
||||||
final ByteBuffer out = ByteBuffer.allocate(4 + (inSize + chunk.length - 1)
|
final ByteBuffer out = ByteBuffer.allocate(4 + (inSize + chunk.length - 1)
|
||||||
/ chunk.length * (chunk.length + 4 * 2));
|
/ chunk.length * (chunk.length + 4 * 2));
|
||||||
@@ -92,7 +92,7 @@ public class MessageProcessor {
|
|||||||
* returns new ref, which is also the decoded image; ref could be bigger
|
* returns new ref, which is also the decoded image; ref could be bigger
|
||||||
* than pixels, in which case the first pixels.length bytes form the image
|
* than pixels, in which case the first pixels.length bytes form the image
|
||||||
*/
|
*/
|
||||||
public static byte[] DecodeReferencedImage(byte[] ref, byte[] pixels) {
|
public static byte[] decodeReferencedImage(byte[] ref, byte[] pixels) {
|
||||||
if (ref.length < pixels.length)
|
if (ref.length < pixels.length)
|
||||||
ref = new byte[pixels.length];
|
ref = new byte[pixels.length];
|
||||||
for (int i = 0; i < pixels.length; i++)
|
for (int i = 0; i < pixels.length; i++)
|
||||||
@@ -102,7 +102,7 @@ public class MessageProcessor {
|
|||||||
return ref;
|
return ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ImageData ReceiveImage(int width, int height, int format,
|
public static ImageData receiveImage(int width, int height, int format,
|
||||||
int type, final ByteString data) {
|
int type, final ByteString data) {
|
||||||
assert width > 0 && height > 0;
|
assert width > 0 && height > 0;
|
||||||
int bpp = 0;
|
int bpp = 0;
|
||||||
@@ -165,7 +165,7 @@ public class MessageProcessor {
|
|||||||
showError("unsupported texture format: " + format);
|
showError("unsupported texture format: " + format);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
byte[] pixels = LZFDecompressChunks(data);
|
byte[] pixels = lzfDecompressChunks(data);
|
||||||
assert pixels.length == width * height * (bpp / 8);
|
assert pixels.length == width * height * (bpp / 8);
|
||||||
PaletteData palette = new PaletteData(redMask, greenMask, blueMask);
|
PaletteData palette = new PaletteData(redMask, greenMask, blueMask);
|
||||||
return new ImageData(width, height, bpp, palette, 1, pixels);
|
return new ImageData(width, height, bpp, palette, 1, pixels);
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public class MessageQueue implements Runnable {
|
|||||||
this.sampleView = sampleView;
|
this.sampleView = sampleView;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Start(final ByteOrder byteOrder, final FileInputStream file) {
|
public void start(final ByteOrder byteOrder, final FileInputStream file) {
|
||||||
if (running)
|
if (running)
|
||||||
return;
|
return;
|
||||||
running = true;
|
running = true;
|
||||||
@@ -54,29 +54,29 @@ public class MessageQueue implements Runnable {
|
|||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Stop() {
|
public void stop() {
|
||||||
if (!running)
|
if (!running)
|
||||||
return;
|
return;
|
||||||
running = false;
|
running = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean IsRunning() {
|
public boolean isRunning() {
|
||||||
return running;
|
return running;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SendCommands(final int contextId) throws IOException {
|
private void sendCommands(final int contextId) throws IOException {
|
||||||
synchronized (commands) {
|
synchronized (commands) {
|
||||||
for (int i = 0; i < commands.size(); i++) {
|
for (int i = 0; i < commands.size(); i++) {
|
||||||
Message command = commands.get(i);
|
Message command = commands.get(i);
|
||||||
if (command.getContextId() == contextId || command.getContextId() == 0) {
|
if (command.getContextId() == contextId || command.getContextId() == 0) {
|
||||||
SendMessage(commands.remove(i));
|
sendMessage(commands.remove(i));
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddCommand(Message command) {
|
public void addCommand(Message command) {
|
||||||
synchronized (commands) {
|
synchronized (commands) {
|
||||||
commands.add(command);
|
commands.add(command);
|
||||||
}
|
}
|
||||||
@@ -128,8 +128,8 @@ public class MessageQueue implements Runnable {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if (null == msg) // get incoming from network
|
if (null == msg) // get incoming from network
|
||||||
msg = ReceiveMessage(dis);
|
msg = receiveMessage(dis);
|
||||||
ProcessMessage(dos, msg);
|
processMessage(dos, msg);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Error(e);
|
Error(e);
|
||||||
running = false;
|
running = false;
|
||||||
@@ -149,35 +149,35 @@ public class MessageQueue implements Runnable {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PutMessage(final Message msg) {
|
private void putMessage(final Message msg) {
|
||||||
ArrayList<Message> existing = incoming.get(msg.getContextId());
|
ArrayList<Message> existing = incoming.get(msg.getContextId());
|
||||||
if (existing == null)
|
if (existing == null)
|
||||||
incoming.put(msg.getContextId(), existing = new ArrayList<Message>());
|
incoming.put(msg.getContextId(), existing = new ArrayList<Message>());
|
||||||
existing.add(msg);
|
existing.add(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
Message ReceiveMessage(final int contextId) throws IOException {
|
Message receiveMessage(final int contextId) throws IOException {
|
||||||
Message msg = ReceiveMessage(dis);
|
Message msg = receiveMessage(dis);
|
||||||
while (msg.getContextId() != contextId) {
|
while (msg.getContextId() != contextId) {
|
||||||
PutMessage(msg);
|
putMessage(msg);
|
||||||
msg = ReceiveMessage(dis);
|
msg = receiveMessage(dis);
|
||||||
}
|
}
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SendMessage(final Message msg) throws IOException {
|
void sendMessage(final Message msg) throws IOException {
|
||||||
SendMessage(dos, msg);
|
sendMessage(dos, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
// should only be used by DefaultProcessMessage
|
// should only be used by DefaultProcessMessage
|
||||||
private SparseArray<Message> partials = new SparseArray<Message>();
|
private SparseArray<Message> partials = new SparseArray<Message>();
|
||||||
|
|
||||||
Message GetPartialMessage(final int contextId) {
|
Message getPartialMessage(final int contextId) {
|
||||||
return partials.get(contextId);
|
return partials.get(contextId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// used to add BeforeCall to complete if it was skipped
|
// used to add BeforeCall to complete if it was skipped
|
||||||
void CompletePartialMessage(final int contextId) {
|
void completePartialMessage(final int contextId) {
|
||||||
final Message msg = partials.get(contextId);
|
final Message msg = partials.get(contextId);
|
||||||
partials.remove(contextId);
|
partials.remove(contextId);
|
||||||
assert msg != null;
|
assert msg != null;
|
||||||
@@ -188,7 +188,7 @@ public class MessageQueue implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// can be used by other message processor as default processor
|
// can be used by other message processor as default processor
|
||||||
void DefaultProcessMessage(final Message msg, boolean expectResponse,
|
void defaultProcessMessage(final Message msg, boolean expectResponse,
|
||||||
boolean sendResponse)
|
boolean sendResponse)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
final int contextId = msg.getContextId();
|
final int contextId = msg.getContextId();
|
||||||
@@ -199,7 +199,7 @@ public class MessageQueue implements Runnable {
|
|||||||
builder.setType(Type.Response);
|
builder.setType(Type.Response);
|
||||||
builder.setExpectResponse(expectResponse);
|
builder.setExpectResponse(expectResponse);
|
||||||
builder.setFunction(Function.CONTINUE);
|
builder.setFunction(Function.CONTINUE);
|
||||||
SendMessage(dos, builder.build());
|
sendMessage(dos, builder.build());
|
||||||
}
|
}
|
||||||
assert partials.indexOfKey(contextId) < 0;
|
assert partials.indexOfKey(contextId) < 0;
|
||||||
partials.put(contextId, msg);
|
partials.put(contextId, msg);
|
||||||
@@ -210,7 +210,7 @@ public class MessageQueue implements Runnable {
|
|||||||
builder.setType(Type.Response);
|
builder.setType(Type.Response);
|
||||||
builder.setExpectResponse(expectResponse);
|
builder.setExpectResponse(expectResponse);
|
||||||
builder.setFunction(Function.SKIP);
|
builder.setFunction(Function.SKIP);
|
||||||
SendMessage(dos, builder.build());
|
sendMessage(dos, builder.build());
|
||||||
}
|
}
|
||||||
assert partials.indexOfKey(contextId) >= 0;
|
assert partials.indexOfKey(contextId) >= 0;
|
||||||
final Message before = partials.get(contextId);
|
final Message before = partials.get(contextId);
|
||||||
@@ -234,7 +234,7 @@ public class MessageQueue implements Runnable {
|
|||||||
assert false;
|
assert false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Message RemoveCompleteMessage(int contextId) {
|
public Message removeCompleteMessage(int contextId) {
|
||||||
synchronized (complete) {
|
synchronized (complete) {
|
||||||
if (complete.size() == 0)
|
if (complete.size() == 0)
|
||||||
return null;
|
return null;
|
||||||
@@ -251,7 +251,7 @@ public class MessageQueue implements Runnable {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Message ReceiveMessage(final DataInputStream dis)
|
private Message receiveMessage(final DataInputStream dis)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
int len = 0;
|
int len = 0;
|
||||||
try {
|
try {
|
||||||
@@ -277,11 +277,11 @@ public class MessageQueue implements Runnable {
|
|||||||
readLen += read;
|
readLen += read;
|
||||||
}
|
}
|
||||||
Message msg = Message.parseFrom(buffer);
|
Message msg = Message.parseFrom(buffer);
|
||||||
SendCommands(msg.getContextId());
|
sendCommands(msg.getContextId());
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SendMessage(final DataOutputStream dos, final Message message)
|
private void sendMessage(final DataOutputStream dos, final Message message)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
if (dos == null)
|
if (dos == null)
|
||||||
return;
|
return;
|
||||||
@@ -294,17 +294,17 @@ public class MessageQueue implements Runnable {
|
|||||||
dos.write(data);
|
dos.write(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProcessMessage(final DataOutputStream dos, final Message msg) throws IOException {
|
private void processMessage(final DataOutputStream dos, final Message msg) throws IOException {
|
||||||
if (msg.getExpectResponse()) {
|
if (msg.getExpectResponse()) {
|
||||||
assert file == null; // file cannot be interactive mode
|
assert file == null; // file cannot be interactive mode
|
||||||
if (sampleView.shaderEditor.ProcessMessage(this, msg))
|
if (sampleView.shaderEditor.processMessage(this, msg))
|
||||||
return;
|
return;
|
||||||
else if (sampleView.breakpointOption.ProcessMessage(this, msg))
|
else if (sampleView.breakpointOption.processMessage(this, msg))
|
||||||
return;
|
return;
|
||||||
else
|
else
|
||||||
DefaultProcessMessage(msg, msg.getExpectResponse(), msg.getExpectResponse());
|
defaultProcessMessage(msg, msg.getExpectResponse(), msg.getExpectResponse());
|
||||||
} else
|
} else
|
||||||
DefaultProcessMessage(msg, msg.getExpectResponse(), msg.getExpectResponse());
|
defaultProcessMessage(msg, msg.getExpectResponse(), msg.getExpectResponse());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Error(Exception e) {
|
void Error(Exception e) {
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object[] getElements(Object parent) {
|
public Object[] getElements(Object parent) {
|
||||||
return frame.Get().toArray();
|
return frame.get().toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -150,7 +150,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
@Override
|
@Override
|
||||||
public Image getImage(Object obj) {
|
public Image getImage(Object obj) {
|
||||||
MessageData msgData = (MessageData) obj;
|
MessageData msgData = (MessageData) obj;
|
||||||
return msgData.GetImage();
|
return msgData.getImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -166,7 +166,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
if (index > -1)
|
if (index > -1)
|
||||||
return null;
|
return null;
|
||||||
MessageData msgData = (MessageData) obj;
|
MessageData msgData = (MessageData) obj;
|
||||||
return msgData.GetImage();
|
return msgData.getImage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,13 +196,13 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
public SampleView() {
|
public SampleView() {
|
||||||
MessageParserEx messageParserEx = new MessageParserEx();
|
MessageParserEx messageParserEx = new MessageParserEx();
|
||||||
Message.Builder builder = Message.newBuilder();
|
Message.Builder builder = Message.newBuilder();
|
||||||
messageParserEx.Parse(builder, "glUniform4fv(1,2,{0,1,2,3,4,5,6,7})");
|
messageParserEx.parse(builder, "glUniform4fv(1,2,{0,1,2,3,4,5,6,7})");
|
||||||
messageParserEx
|
messageParserEx
|
||||||
.Parse(builder,
|
.parse(builder,
|
||||||
"void glShaderSource(shader=4, count=1, string=\"dksjafhskjahourehghskjg\", length=0x0)");
|
"void glShaderSource(shader=4, count=1, string=\"dksjafhskjahourehghskjg\", length=0x0)");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CreateLeftPane(Composite parent) {
|
public void createLeftPane(Composite parent) {
|
||||||
Composite composite = new Composite(parent, 0);
|
Composite composite = new Composite(parent, 0);
|
||||||
|
|
||||||
GridLayout gridLayout = new GridLayout();
|
GridLayout gridLayout = new GridLayout();
|
||||||
@@ -270,7 +270,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void createPartControl(Composite parent) {
|
public void createPartControl(Composite parent) {
|
||||||
CreateLeftPane(parent);
|
createLeftPane(parent);
|
||||||
|
|
||||||
// Create the help context id for the viewer's control
|
// Create the help context id for the viewer's control
|
||||||
PlatformUI.getWorkbench().getHelpSystem()
|
PlatformUI.getWorkbench().getHelpSystem()
|
||||||
@@ -431,8 +431,8 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (!running)
|
if (!running)
|
||||||
ChangeContext(null); // viewer will switch to newest context
|
changeContext(null); // viewer will switch to newest context
|
||||||
ConnectDisconnect();
|
connectDisconnect();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
manager.add(actionConnect);
|
manager.add(actionConnect);
|
||||||
@@ -444,8 +444,8 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
{
|
{
|
||||||
if (!running)
|
if (!running)
|
||||||
{
|
{
|
||||||
ChangeContext(null); // viewer will switch to newest context
|
changeContext(null); // viewer will switch to newest context
|
||||||
OpenFile();
|
openFile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -501,7 +501,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
builder.setFunction(Function.SETPROP);
|
builder.setFunction(Function.SETPROP);
|
||||||
builder.setProp(Prop.CaptureDraw);
|
builder.setProp(Prop.CaptureDraw);
|
||||||
builder.setArg0(Integer.parseInt(inputDialog.getValue()));
|
builder.setArg0(Integer.parseInt(inputDialog.getValue()));
|
||||||
messageQueue.AddCommand(builder.build());
|
messageQueue.addCommand(builder.build());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -527,7 +527,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
builder.setFunction(Function.SETPROP);
|
builder.setFunction(Function.SETPROP);
|
||||||
builder.setProp(Prop.CaptureSwap);
|
builder.setProp(Prop.CaptureSwap);
|
||||||
builder.setArg0(Integer.parseInt(inputDialog.getValue()));
|
builder.setArg0(Integer.parseInt(inputDialog.getValue()));
|
||||||
messageQueue.AddCommand(builder.build());
|
messageQueue.addCommand(builder.build());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -549,7 +549,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
builder.setFunction(Message.Function.SETPROP);
|
builder.setFunction(Message.Function.SETPROP);
|
||||||
builder.setProp(Prop.TimeMode);
|
builder.setProp(Prop.TimeMode);
|
||||||
builder.setArg0(i);
|
builder.setArg0(i);
|
||||||
messageQueue.AddCommand(builder.build());
|
messageQueue.addCommand(builder.build());
|
||||||
this.setText(timeModes[i]);
|
this.setText(timeModes[i]);
|
||||||
manager.update(true);
|
manager.update(true);
|
||||||
}
|
}
|
||||||
@@ -567,7 +567,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
final int contextId = Integer.parseInt(idStr, 16);
|
final int contextId = Integer.parseInt(idStr, 16);
|
||||||
int index = debugContexts.indexOfKey(contextId);
|
int index = debugContexts.indexOfKey(contextId);
|
||||||
index = (index + 1) % debugContexts.size();
|
index = (index + 1) % debugContexts.size();
|
||||||
ChangeContext(debugContexts.valueAt(index));
|
changeContext(debugContexts.valueAt(index));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
manager.add(actContext);
|
manager.add(actContext);
|
||||||
@@ -593,9 +593,9 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
{
|
{
|
||||||
if (current != null)
|
if (current != null)
|
||||||
{
|
{
|
||||||
new CodeGen().CodeGenFrame((Frame) viewer.getInput());
|
new CodeGen().codeGenFrame((Frame) viewer.getInput());
|
||||||
// need to reload current frame
|
// need to reload current frame
|
||||||
viewer.setInput(current.GetFrame(frameNum.getSelection()));
|
viewer.setInput(current.getFrame(frameNum.getSelection()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -607,16 +607,16 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
{
|
{
|
||||||
if (current != null)
|
if (current != null)
|
||||||
{
|
{
|
||||||
new CodeGen().CodeGenFrames(current, frameNum.getSelection() + 1,
|
new CodeGen().codeGenFrames(current, frameNum.getSelection() + 1,
|
||||||
getSite().getShell());
|
getSite().getShell());
|
||||||
// need to reload current frame
|
// need to reload current frame
|
||||||
viewer.setInput(current.GetFrame(frameNum.getSelection()));
|
viewer.setInput(current.getFrame(frameNum.getSelection()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OpenFile() {
|
private void openFile() {
|
||||||
FileDialog dialog = new FileDialog(getSite().getShell(), SWT.OPEN);
|
FileDialog dialog = new FileDialog(getSite().getShell(), SWT.OPEN);
|
||||||
dialog.setText("Open");
|
dialog.setText("Open");
|
||||||
dialog.setFilterExtensions(new String[] {
|
dialog.setFilterExtensions(new String[] {
|
||||||
@@ -633,23 +633,23 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
running = true;
|
running = true;
|
||||||
messageQueue.Start(targetByteOrder, file);
|
messageQueue.start(targetByteOrder, file);
|
||||||
thread = new Thread(this);
|
thread = new Thread(this);
|
||||||
thread.start();
|
thread.start();
|
||||||
actionConnect.setText("Disconnect");
|
actionConnect.setText("Disconnect");
|
||||||
getViewSite().getActionBars().getToolBarManager().update(true);
|
getViewSite().getActionBars().getToolBarManager().update(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ConnectDisconnect() {
|
private void connectDisconnect() {
|
||||||
if (!running) {
|
if (!running) {
|
||||||
running = true;
|
running = true;
|
||||||
messageQueue.Start(targetByteOrder, null);
|
messageQueue.start(targetByteOrder, null);
|
||||||
thread = new Thread(this);
|
thread = new Thread(this);
|
||||||
thread.start();
|
thread.start();
|
||||||
actionConnect.setText("Disconnect");
|
actionConnect.setText("Disconnect");
|
||||||
} else {
|
} else {
|
||||||
running = false;
|
running = false;
|
||||||
messageQueue.Stop();
|
messageQueue.stop();
|
||||||
actionConnect.setText("Connect");
|
actionConnect.setText("Connect");
|
||||||
}
|
}
|
||||||
this.getSite().getShell().getDisplay().syncExec(new Runnable() {
|
this.getSite().getShell().getDisplay().syncExec(new Runnable() {
|
||||||
@@ -660,16 +660,16 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageDataSelected(final MessageData msgData) {
|
void messageDataSelected(final MessageData msgData) {
|
||||||
if (null == msgData)
|
if (null == msgData)
|
||||||
return;
|
return;
|
||||||
if (frameNum.getSelection() == frameNum.getMaximum())
|
if (frameNum.getSelection() == frameNum.getMaximum())
|
||||||
return; // scale max cannot overlap min, so max is array size
|
return; // scale max cannot overlap min, so max is array size
|
||||||
final Frame frame = current.GetFrame(frameNum.getSelection());
|
final Frame frame = current.getFrame(frameNum.getSelection());
|
||||||
final Context context = frame.ComputeContext(msgData);
|
final Context context = frame.computeContext(msgData);
|
||||||
contextViewer.setInput(context);
|
contextViewer.setInput(context);
|
||||||
if (msgData.GetImage() != null) {
|
if (msgData.getImage() != null) {
|
||||||
canvas.setBackgroundImage(msgData.GetImage());
|
canvas.setBackgroundImage(msgData.getImage());
|
||||||
tabFolder.setSelection(tabItemImage);
|
tabFolder.setSelection(tabItemImage);
|
||||||
canvas.redraw();
|
canvas.redraw();
|
||||||
} else if (null != msgData.shader) {
|
} else if (null != msgData.shader) {
|
||||||
@@ -705,7 +705,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
if (null == selection)
|
if (null == selection)
|
||||||
return;
|
return;
|
||||||
MessageData msgData = (MessageData) selection.getFirstElement();
|
MessageData msgData = (MessageData) selection.getFirstElement();
|
||||||
MessageDataSelected(msgData);
|
messageDataSelected(msgData);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -734,8 +734,8 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
|
|
||||||
boolean shaderEditorUpdate = false;
|
boolean shaderEditorUpdate = false;
|
||||||
while (running) {
|
while (running) {
|
||||||
final Message oriMsg = messageQueue.RemoveCompleteMessage(0);
|
final Message oriMsg = messageQueue.removeCompleteMessage(0);
|
||||||
if (oriMsg == null && !messageQueue.IsRunning())
|
if (oriMsg == null && !messageQueue.isRunning())
|
||||||
break;
|
break;
|
||||||
if (newMessages > 60 || (newMessages > 0 && null == oriMsg)) {
|
if (newMessages > 60 || (newMessages > 0 && null == oriMsg)) {
|
||||||
newMessages = 0;
|
newMessages = 0;
|
||||||
@@ -743,15 +743,15 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
getSite().getShell().getDisplay().syncExec(new Runnable() {
|
getSite().getShell().getDisplay().syncExec(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (frameNum.getSelection() == current.FrameCount() - 1 ||
|
if (frameNum.getSelection() == current.frameCount() - 1 ||
|
||||||
frameNum.getSelection() == current.FrameCount() - 2)
|
frameNum.getSelection() == current.frameCount() - 2)
|
||||||
{
|
{
|
||||||
viewer.refresh(false);
|
viewer.refresh(false);
|
||||||
if (actionAutoScroll.isChecked())
|
if (actionAutoScroll.isChecked())
|
||||||
viewer.getList().setSelection(
|
viewer.getList().setSelection(
|
||||||
viewer.getList().getItemCount() - 1);
|
viewer.getList().getItemCount() - 1);
|
||||||
}
|
}
|
||||||
frameNum.setMaximum(current.FrameCount());
|
frameNum.setMaximum(current.frameCount());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
current.uiUpdate = false;
|
current.uiUpdate = false;
|
||||||
@@ -760,7 +760,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
this.getSite().getShell().getDisplay().syncExec(new Runnable() {
|
this.getSite().getShell().getDisplay().syncExec(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
shaderEditor.Update();
|
shaderEditor.updateUI();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
shaderEditorUpdate = false;
|
shaderEditorUpdate = false;
|
||||||
@@ -778,32 +778,32 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
debugContext = new DebugContext(oriMsg.getContextId());
|
debugContext = new DebugContext(oriMsg.getContextId());
|
||||||
debugContexts.put(oriMsg.getContextId(), debugContext);
|
debugContexts.put(oriMsg.getContextId(), debugContext);
|
||||||
}
|
}
|
||||||
debugContext.ProcessMessage(oriMsg);
|
debugContext.processMessage(oriMsg);
|
||||||
shaderEditorUpdate |= debugContext.currentContext.serverShader.uiUpdate;
|
shaderEditorUpdate |= debugContext.currentContext.serverShader.uiUpdate;
|
||||||
debugContext.currentContext.serverShader.uiUpdate = false;
|
debugContext.currentContext.serverShader.uiUpdate = false;
|
||||||
if (current == null)
|
if (current == null)
|
||||||
ChangeContext(debugContext);
|
changeContext(debugContext);
|
||||||
newMessages++;
|
newMessages++;
|
||||||
}
|
}
|
||||||
if (running)
|
if (running)
|
||||||
ConnectDisconnect(); // error occurred, disconnect
|
connectDisconnect(); // error occurred, disconnect
|
||||||
}
|
}
|
||||||
|
|
||||||
/** can be called from non-UI thread */
|
/** can be called from non-UI thread */
|
||||||
void ChangeContext(final DebugContext newContext) {
|
void changeContext(final DebugContext newContext) {
|
||||||
getSite().getShell().getDisplay().syncExec(new Runnable() {
|
getSite().getShell().getDisplay().syncExec(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
current = newContext;
|
current = newContext;
|
||||||
if (current != null)
|
if (current != null)
|
||||||
{
|
{
|
||||||
frameNum.setMaximum(current.FrameCount());
|
frameNum.setMaximum(current.frameCount());
|
||||||
if (frameNum.getSelection() >= current.FrameCount())
|
if (frameNum.getSelection() >= current.frameCount())
|
||||||
if (current.FrameCount() > 0)
|
if (current.frameCount() > 0)
|
||||||
frameNum.setSelection(current.FrameCount() - 1);
|
frameNum.setSelection(current.frameCount() - 1);
|
||||||
else
|
else
|
||||||
frameNum.setSelection(0);
|
frameNum.setSelection(0);
|
||||||
viewer.setInput(current.GetFrame(frameNum.getSelection()));
|
viewer.setInput(current.getFrame(frameNum.getSelection()));
|
||||||
actContext.setText("Context: 0x" + Integer.toHexString(current.contextId));
|
actContext.setText("Context: 0x" + Integer.toHexString(current.contextId));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -813,7 +813,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
viewer.setInput(null);
|
viewer.setInput(null);
|
||||||
actContext.setText("Context: 0x");
|
actContext.setText("Context: 0x");
|
||||||
}
|
}
|
||||||
shaderEditor.Update();
|
shaderEditor.updateUI();
|
||||||
getViewSite().getActionBars().getToolBarManager().update(true);
|
getViewSite().getActionBars().getToolBarManager().update(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -825,9 +825,9 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
|
|||||||
assert false;
|
assert false;
|
||||||
if (current == null)
|
if (current == null)
|
||||||
return;
|
return;
|
||||||
if (frameNum.getSelection() == current.FrameCount())
|
if (frameNum.getSelection() == current.frameCount())
|
||||||
return; // scale maximum cannot overlap minimum
|
return; // scale maximum cannot overlap minimum
|
||||||
Frame frame = current.GetFrame(frameNum.getSelection());
|
Frame frame = current.getFrame(frameNum.getSelection());
|
||||||
viewer.setInput(frame);
|
viewer.setInput(frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
|
|||||||
styledText.addExtendedModifyListener(this);
|
styledText.addExtendedModifyListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update() {
|
public void updateUI() {
|
||||||
list.removeAll();
|
list.removeAll();
|
||||||
String progs = "Current Programs: ";
|
String progs = "Current Programs: ";
|
||||||
for (int j = 0; j < sampleView.debugContexts.size(); j++) {
|
for (int j = 0; j < sampleView.debugContexts.size(); j++) {
|
||||||
@@ -142,7 +142,7 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
|
|||||||
toolbar.update();
|
toolbar.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UploadShader() {
|
void uploadShader() {
|
||||||
current.source = styledText.getText();
|
current.source = styledText.getText();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -195,14 +195,14 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
|
|||||||
}
|
}
|
||||||
shadersToUpload.add(current);
|
shadersToUpload.add(current);
|
||||||
final int contextId = current.context.context.contextId;
|
final int contextId = current.context.context.contextId;
|
||||||
Message.Builder builder = GetBuilder(contextId);
|
Message.Builder builder = getBuilder(contextId);
|
||||||
MessageParserEx.instance.Parse(builder,
|
MessageParserEx.instance.parse(builder,
|
||||||
String.format("glShaderSource(%d,1,\"%s\",0)", current.name, current.source));
|
String.format("glShaderSource(%d,1,\"%s\",0)", current.name, current.source));
|
||||||
sampleView.messageQueue.AddCommand(builder.build());
|
sampleView.messageQueue.addCommand(builder.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Message.Builder GetBuilder(int contextId) {
|
Message.Builder getBuilder(int contextId) {
|
||||||
Message.Builder builder = Message.newBuilder();
|
Message.Builder builder = Message.newBuilder();
|
||||||
builder.setContextId(contextId);
|
builder.setContextId(contextId);
|
||||||
builder.setType(Type.Response);
|
builder.setType(Type.Response);
|
||||||
@@ -210,13 +210,13 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
|
|||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
Message ExchangeMessage(final int contextId, final MessageQueue queue,
|
Message exchangeMessage(final int contextId, final MessageQueue queue,
|
||||||
String format, Object... args) throws IOException {
|
String format, Object... args) throws IOException {
|
||||||
Message.Builder builder = GetBuilder(contextId);
|
Message.Builder builder = getBuilder(contextId);
|
||||||
MessageParserEx.instance.Parse(builder, String.format(format, args));
|
MessageParserEx.instance.parse(builder, String.format(format, args));
|
||||||
final Function function = builder.getFunction();
|
final Function function = builder.getFunction();
|
||||||
queue.SendMessage(builder.build());
|
queue.sendMessage(builder.build());
|
||||||
final Message msg = queue.ReceiveMessage(contextId);
|
final Message msg = queue.receiveMessage(contextId);
|
||||||
assert msg.getContextId() == contextId;
|
assert msg.getContextId() == contextId;
|
||||||
assert msg.getType() == Type.AfterGeneratedCall;
|
assert msg.getType() == Type.AfterGeneratedCall;
|
||||||
assert msg.getFunction() == function;
|
assert msg.getFunction() == function;
|
||||||
@@ -224,7 +224,7 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
|
|||||||
}
|
}
|
||||||
|
|
||||||
// this is called from network thread
|
// this is called from network thread
|
||||||
public boolean ProcessMessage(final MessageQueue queue, final Message msg)
|
public boolean processMessage(final MessageQueue queue, final Message msg)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
GLShader shader = null;
|
GLShader shader = null;
|
||||||
final int contextId = msg.getContextId();
|
final int contextId = msg.getContextId();
|
||||||
@@ -252,15 +252,15 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
|
|||||||
assert msg.getType() == Type.AfterGeneratedCall;
|
assert msg.getType() == Type.AfterGeneratedCall;
|
||||||
assert msg.getFunction() == Function.glShaderSource;
|
assert msg.getFunction() == Function.glShaderSource;
|
||||||
|
|
||||||
ExchangeMessage(contextId, queue, "glCompileShader(%d)", shader.name);
|
exchangeMessage(contextId, queue, "glCompileShader(%d)", shader.name);
|
||||||
|
|
||||||
// the 0, "" and {0} are dummies for the parser
|
// the 0, "" and {0} are dummies for the parser
|
||||||
Message rcv = ExchangeMessage(contextId, queue,
|
Message rcv = exchangeMessage(contextId, queue,
|
||||||
"glGetShaderiv(%d, GL_COMPILE_STATUS, {0})", shader.name);
|
"glGetShaderiv(%d, GL_COMPILE_STATUS, {0})", shader.name);
|
||||||
assert rcv.hasData();
|
assert rcv.hasData();
|
||||||
if (rcv.getData().asReadOnlyByteBuffer().getInt() == 0) {
|
if (rcv.getData().asReadOnlyByteBuffer().getInt() == 0) {
|
||||||
// compile failed
|
// compile failed
|
||||||
rcv = ExchangeMessage(contextId, queue,
|
rcv = exchangeMessage(contextId, queue,
|
||||||
"glGetShaderInfoLog(%d, 0, 0, \"\")", shader.name);
|
"glGetShaderInfoLog(%d, 0, 0, \"\")", shader.name);
|
||||||
final String title = String.format("Shader %d in 0x%s failed to compile",
|
final String title = String.format("Shader %d in 0x%s failed to compile",
|
||||||
shader.name, Integer.toHexString(shader.context.context.contextId));
|
shader.name, Integer.toHexString(shader.context.context.contextId));
|
||||||
@@ -274,15 +274,15 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
|
|||||||
});
|
});
|
||||||
} else
|
} else
|
||||||
for (int programName : shader.programs) {
|
for (int programName : shader.programs) {
|
||||||
GLProgram program = shader.context.GetProgram(programName);
|
GLProgram program = shader.context.getProgram(programName);
|
||||||
ExchangeMessage(contextId, queue, "glLinkProgram(%d)", program.name);
|
exchangeMessage(contextId, queue, "glLinkProgram(%d)", program.name);
|
||||||
rcv = ExchangeMessage(contextId, queue,
|
rcv = exchangeMessage(contextId, queue,
|
||||||
"glGetProgramiv(%d, GL_LINK_STATUS, {0})", program.name);
|
"glGetProgramiv(%d, GL_LINK_STATUS, {0})", program.name);
|
||||||
assert rcv.hasData();
|
assert rcv.hasData();
|
||||||
if (rcv.getData().asReadOnlyByteBuffer().getInt() != 0)
|
if (rcv.getData().asReadOnlyByteBuffer().getInt() != 0)
|
||||||
continue;
|
continue;
|
||||||
// link failed
|
// link failed
|
||||||
rcv = ExchangeMessage(contextId, queue,
|
rcv = exchangeMessage(contextId, queue,
|
||||||
"glGetProgramInfoLog(%d, 0, 0, \"\")", program.name);
|
"glGetProgramInfoLog(%d, 0, 0, \"\")", program.name);
|
||||||
final String title = String.format("Program %d in 0x%s failed to link",
|
final String title = String.format("Program %d in 0x%s failed to link",
|
||||||
program.name, Integer.toHexString(program.context.context.contextId));
|
program.name, Integer.toHexString(program.context.context.contextId));
|
||||||
@@ -299,14 +299,14 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
|
|||||||
|
|
||||||
// TODO: add to upload results if failed
|
// TODO: add to upload results if failed
|
||||||
|
|
||||||
Message.Builder builder = GetBuilder(contextId);
|
Message.Builder builder = getBuilder(contextId);
|
||||||
builder.setExpectResponse(false);
|
builder.setExpectResponse(false);
|
||||||
if (queue.GetPartialMessage(contextId) != null)
|
if (queue.getPartialMessage(contextId) != null)
|
||||||
// the glShaderSource interrupted a BeforeCall, so continue
|
// the glShaderSource interrupted a BeforeCall, so continue
|
||||||
builder.setFunction(Function.CONTINUE);
|
builder.setFunction(Function.CONTINUE);
|
||||||
else
|
else
|
||||||
builder.setFunction(Function.SKIP);
|
builder.setFunction(Function.SKIP);
|
||||||
queue.SendMessage(builder.build());
|
queue.sendMessage(builder.build());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -314,7 +314,7 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
|
|||||||
@Override
|
@Override
|
||||||
public void widgetSelected(SelectionEvent e) {
|
public void widgetSelected(SelectionEvent e) {
|
||||||
if (e.getSource() == uploadShader && null != current) {
|
if (e.getSource() == uploadShader && null != current) {
|
||||||
UploadShader();
|
uploadShader();
|
||||||
return;
|
return;
|
||||||
} else if (e.getSource() == restoreShader && null != current) {
|
} else if (e.getSource() == restoreShader && null != current) {
|
||||||
current.source = styledText.getText();
|
current.source = styledText.getText();
|
||||||
@@ -332,7 +332,7 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
|
|||||||
null, "Shader source has been edited", MessageDialog.QUESTION, btns, 0);
|
null, "Shader source has been edited", MessageDialog.QUESTION, btns, 0);
|
||||||
int rc = dialog.open();
|
int rc = dialog.open();
|
||||||
if (rc == SWT.DEFAULT || rc == 0)
|
if (rc == SWT.DEFAULT || rc == 0)
|
||||||
UploadShader();
|
uploadShader();
|
||||||
else if (rc == 1)
|
else if (rc == 1)
|
||||||
current.source = styledText.getText();
|
current.source = styledText.getText();
|
||||||
// else if (rc == 2) do nothing; selection is changing
|
// else if (rc == 2) do nothing; selection is changing
|
||||||
|
|||||||
Reference in New Issue
Block a user